blob: 42e1dcb002c539d1cc400b0b68706b75d2d9dad2 [file] [edit]
// 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"
namespace sh
{
std::ostream &operator<<(std::ostream &os, const ImmutableString &str)
{
return os.write(str.data(), str.length());
}
} // namespace sh
#if defined(_MSC_VER)
# pragma warning(disable : 4309) // truncation of constant value
#endif
namespace
{
constexpr int mangledkT1[] = {2540, 2567, 1310, 307, 1429, 81, 1838, 2549, 711, 1470,
2521, 195, 1556, 1823, 1551, 104, 51, 1880, 1024, 869,
228, 428, 561, 1055, 1733, 1166, 279, 2393, 1386, 947,
193, 2129, 975, 1305, 174, 2147, 831, 2207, 613, 987};
constexpr int mangledkT2[] = {1206, 1083, 2011, 7, 1824, 646, 999, 1423, 955, 464,
2624, 2648, 2452, 150, 1328, 721, 1905, 420, 1639, 2301,
1082, 239, 42, 2148, 2379, 1366, 1972, 1087, 1369, 1811,
2143, 73, 1567, 467, 2299, 998, 123, 1281, 2343, 2017};
constexpr int mangledkG[] = {
0, 0, 1363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 869, 0,
0, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 1225, 0, 0, 0, 2421, 0,
0, 0, 0, 0, 0, 0, 0, 2039, 0, 0, 2370, 0, 0, 479, 0, 0,
0, 0, 681, 0, 0, 0, 0, 1966, 0, 0, 0, 511, 461, 2570, 0, 0,
0, 0, 0, 0, 0, 0, 336, 0, 0, 388, 0, 0, 0, 0, 0, 0,
0, 0, 1496, 827, 0, 0, 0, 0, 0, 1915, 0, 988, 0, 0, 1057, 0,
0, 0, 0, 0, 0, 0, 0, 1090, 0, 0, 0, 0, 0, 0, 206, 0,
1532, 1554, 219, 0, 0, 45, 1120, 0, 2637, 0, 0, 0, 0, 0, 1206, 0,
0, 0, 0, 1979, 0, 0, 0, 2538, 1237, 0, 0, 0, 0, 0, 0, 0,
0, 0, 455, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 1069, 0, 1324,
0, 0, 2436, 0, 0, 140, 0, 0, 0, 238, 0, 0, 0, 2553, 0, 0,
2201, 456, 1493, 0, 0, 1389, 545, 1528, 2471, 0, 2399, 1869, 0, 722, 156, 846,
0, 0, 0, 0, 0, 236, 0, 1076, 693, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 734, 0, 0, 2266, 2041, 0, 0, 0, 839, 0, 0, 2477, 0,
1816, 0, 0, 548, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 273, 0, 2014, 0, 2324, 2371, 864, 2414, 112, 0, 0, 0, 395, 0, 0,
0, 1181, 0, 583, 0, 0, 0, 591, 2470, 1014, 0, 680, 425, 0, 0, 2200,
1137, 801, 1270, 0, 0, 0, 713, 0, 250, 1105, 0, 0, 2658, 0, 1967, 0,
123, 0, 0, 2380, 809, 1422, 0, 2394, 0, 0, 0, 0, 0, 1291, 0, 0,
602, 2442, 0, 0, 1082, 2667, 0, 1841, 674, 0, 0, 1412, 0, 0, 2387, 0,
0, 1060, 1066, 0, 0, 2037, 0, 0, 1897, 0, 0, 0, 128, 0, 0, 0,
0, 0, 1890, 0, 0, 0, 0, 453, 1322, 0, 0, 425, 0, 0, 0, 0,
105, 2615, 601, 1801, 0, 1334, 0, 435, 0, 0, 0, 0, 0, 664, 0, 666,
0, 89, 229, 0, 0, 278, 0, 2415, 0, 1616, 579, 467, 518, 0, 0, 1241,
337, 1243, 2324, 0, 0, 0, 0, 183, 0, 0, 0, 0, 0, 1761, 469, 934,
0, 1009, 0, 355, 588, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0,
0, 2032, 0, 0, 0, 2222, 0, 67, 0, 0, 0, 0, 0, 1184, 1656, 1765,
696, 0, 0, 704, 0, 308, 648, 795, 0, 0, 1480, 0, 0, 1595, 1691, 1109,
0, 0, 1682, 0, 0, 392, 0, 0, 0, 0, 0, 1197, 1207, 1725, 0, 0,
0, 0, 628, 0, 1853, 1126, 0, 0, 0, 0, 0, 1256, 0, 399, 1481, 12,
2614, 1886, 0, 0, 0, 0, 0, 2676, 2081, 0, 1295, 1919, 0, 0, 0, 0,
775, 1055, 0, 0, 0, 2420, 0, 0, 0, 2355, 2573, 0, 2171, 1228, 2412, 86,
0, 651, 0, 0, 774, 408, 0, 791, 0, 1821, 0, 719, 0, 2640, 0, 1054,
0, 0, 0, 0, 1560, 0, 444, 2172, 0, 115, 0, 0, 1684, 747, 0, 1183,
0, 0, 0, 743, 0, 1422, 2131, 808, 449, 1294, 0, 0, 866, 0, 0, 0,
0, 1834, 1941, 1356, 0, 1468, 2558, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 179, 0, 1072, 0, 1467, 320, 1685, 0, 1009, 0, 0, 1834, 1226, 0, 611,
465, 0, 879, 0, 0, 203, 1142, 0, 0, 0, 0, 0, 0, 324, 0, 1088,
0, 0, 0, 0, 688, 1348, 2599, 55, 0, 909, 323, 0, 0, 0, 207, 0,
1020, 0, 217, 2425, 0, 2001, 0, 1193, 0, 0, 1984, 0, 0, 235, 0, 0,
0, 542, 2316, 916, 2048, 2653, 1178, 0, 0, 497, 1212, 0, 1907, 571, 0, 683,
218, 641, 1865, 0, 366, 0, 960, 0, 0, 0, 0, 27, 0, 1486, 413, 138,
0, 2508, 284, 0, 0, 571, 0, 0, 0, 0, 0, 543, 0, 471, 1240, 2315,
1349, 1380, 1781, 0, 0, 578, 0, 1433, 1602, 0, 2585, 0, 1267, 135, 0, 284,
454, 0, 0, 448, 0, 250, 0, 0, 225, 232, 0, 1248, 0, 0, 202, 906,
384, 940, 0, 0, 278, 2456, 0, 738, 1089, 2431, 1530, 985, 0, 974, 0, 0,
86, 1820, 0, 2641, 0, 1908, 898, 1747, 0, 1116, 1973, 2397, 0, 0, 0, 0,
956, 0, 1046, 2357, 321, 0, 1033, 0, 498, 1184, 0, 0, 0, 801, 1354, 0,
0, 1882, 0, 0, 2585, 0, 382, 270, 877, 2208, 0, 1837, 1695, 0, 0, 0,
405, 478, 828, 307, 15, 170, 640, 1223, 0, 0, 0, 9, 0, 604, 825, 0,
294, 0, 1016, 66, 279, 0, 2370, 0, 0, 0, 670, 0, 2225, 0, 0, 47,
0, 759, 298, 0, 1008, 2336, 0, 0, 44, 128, 1720, 0, 1181, 2074, 0, 1015,
1407, 0, 0, 0, 429, 0, 0, 517, 0, 1177, 923, 1177, 1832, 2381, 680, 621,
1074, 529, 1115, 0, 0, 284, 211, 0, 1791, 1410, 176, 0, 0, 1983, 0, 931,
1295, 0, 0, 0, 255, 2632, 160, 0, 603, 0, 0, 942, 0, 0, 2313, 825,
2095, 0, 0, 0, 0, 1365, 1295, 0, 721, 1798, 1828, 0, 0, 1404, 0, 1874,
1437, 0, 563, 935, 0, 0, 0, 0, 40, 1085, 1765, 370, 0, 0, 0, 2422,
0, 0, 0, 0, 616, 819, 662, 0, 0, 835, 2273, 0, 2322, 0, 0, 0,
1504, 483, 400, 2386, 2510, 1988, 1149, 2580, 1084, 2355, 0, 0, 0, 484, 0, 0,
408, 0, 0, 217, 0, 1317, 0, 1633, 0, 980, 481, 351, 469, 678, 2319, 0,
1275, 0, 775, 2031, 1275, 0, 1009, 667, 857, 790, 695, 2312, 0, 1829, 417, 934,
0, 0, 243, 0, 1367, 0, 0, 713, 0, 0, 0, 785, 2153, 2254, 0, 244,
0, 0, 0, 0, 2661, 0, 0, 270, 2429, 0, 659, 1639, 0, 0, 1743, 0,
775, 2613, 0, 0, 649, 399, 653, 462, 593, 2450, 499, 0, 2217, 2468, 365, 0,
0, 2400, 1539, 0, 0, 369, 2103, 0, 871, 232, 1208, 126, 0, 0, 289, 1592,
1421, 0, 0, 0, 391, 485, 0, 408, 0, 515, 0, 1926, 2661, 0, 0, 0,
0, 0, 0, 1352, 0, 0, 0, 0, 0, 577, 0, 830, 0, 1041, 1038, 0,
938, 1163, 0, 0, 0, 2386, 445, 0, 707, 0, 2190, 0, 0, 610, 661, 1200,
493, 0, 777, 1640, 99, 0, 0, 1043, 0, 465, 582, 0, 1042, 801, 1174, 1502,
1394, 0, 0, 2025, 762, 1057, 0, 0, 0, 1137, 0, 0, 547, 391, 801, 336,
1787, 1058, 0, 281, 664, 0, 1622, 257, 0, 0, 0, 2124, 0, 0, 2304, 0,
0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 2504, 2519, 2502, 752, 2308, 2193,
2277, 2640, 0, 923, 0, 1340, 1057, 0, 690, 0, 1142, 0, 2504, 0, 1263, 0,
897, 122, 494, 0, 0, 1199, 0, 0, 0, 0, 0, 878, 1612, 0, 0, 0,
73, 1093, 0, 925, 0, 0, 0, 2391, 0, 781, 1691, 736, 739, 0, 0, 361,
711, 135, 0, 0, 550, 1768, 0, 0, 199, 0, 0, 791, 2447, 0, 0, 2557,
1155, 829, 0, 1758, 2175, 1578, 1388, 1346, 1364, 0, 2289, 765, 1399, 0, 0, 961,
512, 2633, 0, 0, 387, 1128, 1125, 278, 0, 346, 1007, 1932, 0, 0, 0, 2385,
2490, 1161, 1251, 400, 2029, 1773, 0, 0, 0, 0, 373, 0, 0, 453, 0, 1874,
343, 306, 0, 2029, 778, 233, 0, 0, 2246, 0, 875, 1252, 1913, 0, 0, 192,
635, 2565, 0, 0, 0, 0, 1988, 2277, 0, 1111, 409, 0, 0, 0, 2422, 181,
0, 0, 516, 925, 0, 0, 562, 130, 126, 2220, 505, 1102, 318, 0, 0, 0,
427, 0, 0, 0, 2196, 0, 0, 675, 706, 0, 219, 0, 0, 0, 341, 947,
350, 0, 104, 0, 0, 0, 0, 0, 276, 0, 0, 1806, 1245, 783, 366, 0,
765, 0, 1850, 1754, 0, 581, 805, 0, 0, 2307, 0, 48, 844, 0, 466, 0,
13, 1327, 2168, 693, 1182, 0, 0, 0, 1345, 197, 0, 1067, 150, 1123, 357, 0,
0, 988, 0, 0, 0, 39, 1191, 516, 0, 2357, 774, 0, 633, 194, 2495, 0,
155, 0, 0, 390, 0, 672, 0, 0, 0, 1033, 0, 0, 0, 1307, 1506, 0,
0, 1258, 279, 484, 0, 0, 979, 2510, 536, 0, 2270, 0, 0, 0, 0, 2083,
487, 9, 821, 0, 0, 0, 884, 357, 0, 1289, 0, 0, 0, 583, 500, 0,
1194, 0, 1554, 0, 2047, 2642, 0, 0, 325, 0, 2536, 0, 184, 927, 1448, 0,
0, 0, 1591, 2057, 0, 291, 0, 10, 0, 0, 523, 2673, 864, 0, 0, 414,
0, 721, 0, 698, 604, 0, 0, 0, 5, 0, 0, 0, 2389, 2292, 0, 0,
0, 1955, 2082, 0, 64, 2227, 697, 0, 0, 0, 1096, 0, 379, 225, 0, 0,
0, 0, 0, 1545, 2316, 0, 457, 0, 418, 0, 914, 0, 2030, 0, 0, 0,
186, 119, 0, 0, 624, 98, 0, 0, 0, 1066, 0, 2258, 0, 0, 1720, 1500,
0, 170, 0, 1378, 320, 2418, 0, 0, 223, 0, 0, 679, 535, 2289, 0, 0,
460, 704, 837, 476, 0, 1358, 628, 0, 0, 614, 0, 0, 854, 0, 839, 281,
2181, 302, 807, 0, 0, 261, 1340, 0, 614, 0, 0, 2103, 0, 762, 222, 0,
0, 0, 0, 0, 964, 2307, 1442, 2573, 0, 0, 1156, 1928, 1261, 0, 0, 1123,
1080, 0, 378, 293, 1593, 0, 837, 326, 1478, 0, 1181, 0, 1251, 0, 0, 1360,
0, 428, 0, 503, 1372, 0, 2600, 918, 383, 201, 387, 0, 36, 2057, 0, 0,
999, 0, 728, 1295, 0, 877, 2034, 916, 619, 862, 0, 1722, 0, 178, 1121, 0,
1776, 728, 297, 892, 0, 477, 913, 2385, 108, 1272, 0, 0, 0, 655, 0, 0,
1862, 371, 0, 1407, 1043, 1222, 694, 28, 831, 1677, 1224, 835, 0, 564, 2471, 2625,
523, 0, 15, 0, 0, 0, 0, 0, 2210, 1035, 149, 0, 0, 2537, 0, 0,
2381, 555, 0, 21, 1014, 941, 1, 483, 2402, 1011, 928, 855, 1662, 721, 0, 0,
2512, 0, 0, 0, 815, 622, 0, 2670, 353, 392, 0, 1273, 0, 358, 457, 668,
0, 260, 32, 0, 1788, 1083, 1407, 0, 0, 2467, 1731, 0, 204, 0, 0, 2230,
1916, 0, 0, 0, 1201, 0, 0, 0, 669, 1341, 1585, 2444, 0, 0, 993, 1176,
526, 0, 1197, 1186, 0, 0, 0, 332, 1215, 0, 0, 0, 928, 1687, 0, 364,
1766, 964, 2127, 845, 0, 1015, 970, 879, 594, 0, 0, 1000, 118, 0, 703, 88,
0, 0, 2221, 0, 0, 1715, 2528, 1723, 2390, 0, 1667, 574, 0, 0, 100, 894,
0, 2361, 2309, 412, 692, 0, 0, 82, 2400, 0, 424, 881, 0, 0, 1303, 0,
0, 0, 0, 0, 1347, 0, 404, 180, 1027, 1235, 0, 0, 2550, 2586, 0, 0,
290, 0, 284, 0, 1306, 0, 0, 2559, 0, 0, 1283, 0, 0, 297, 529, 0,
0, 0, 616, 0, 1761, 0, 1726, 677, 183, 0, 214, 1409, 0, 1903, 0, 0,
2258, 2544, 2654, 701, 69, 731, 133, 0, 39, 2446, 1330, 181, 0, 2193, 0, 110,
0, 2663, 618, 460, 918, 0, 0, 0, 606, 0, 1233, 255, 0, 650, 389, 2220,
0, 827, 0, 2416, 0, 87, 1041, 1608, 291, 2232, 1133, 1851, 1491, 1238, 1856, 0,
0, 363, 1321, 2267, 0, 332, 507, 1877, 333, 0, 0, 0, 1537, 0, 1105, 2371,
459, 1543, 296, 0, 1318, 0, 2402, 0, 0, 113, 684, 0, 0, 0, 541, 0,
0, 0, 391, 1015, 1060, 0, 1144, 1247, 0, 1202, 0, 1070, 1511, 0, 0, 978,
628, 577, 463, 0, 1229, 774, 0, 0, 666, 60, 1623, 2259, 0, 0, 2554, 1099,
761, 385, 26, 575, 0, 0, 2377, 353, 689, 0, 0, 0, 0, 2464, 1926, 0,
841, 2290, 663, 256, 0, 0, 678, 0, 2600, 0, 1085, 147, 1025, 0, 0, 969,
0, 0, 2640, 2302, 1065, 844, 2391, 0, 564, 1933, 1337, 0, 2564, 361, 0, 424,
2432, 2238, 0, 191, 671, 616, 1397, 974, 629, 888, 0, 0, 0, 0, 1701, 2183,
1092, 1791, 172, 2539, 0, 361, 2301, 237, 2636, 716, 1314, 2570, 0, 0, 0, 0,
2001, 2084, 2645, 0, 0, 456, 1398, 477, 565, 110, 210, 210, 1034, 137, 291, 0,
1843, 0, 1723, 0, 0, 0, 669, 1962, 726, 1924, 1544, 0, 2501, 635, 816, 0,
1225, 756, 0, 0, 574, 712, 2201, 1379, 0, 0, 171, 256, 836, 0, 2513, 0,
472, 2523, 2187, 714, 1648, 0, 0, 0, 0, 709, 0, 2434, 0, 132, 0, 0,
0, 861, 729, 1643, 1478, 0, 148, 1787, 548, 1105, 0, 0, 2456, 2671, 0, 0,
950, 0, 2557, 310, 0, 105, 378, 0, 1653, 1581, 0, 52, 0, 0, 523, 1019,
2080, 27, 0, 0, 0, 924, 581, 5, 835, 568, 2528, 2301, 0, 0, 0, 0,
1226, 0, 1311, 0, 2320, 925, 0, 1312, 1279, 501, 0, 745, 1221, 0, 2106, 217,
470, 0, 0, 15, 0, 718, 0, 0, 0, 957, 2446, 0, 1083, 0, 1209, 157,
201, 0, 1389, 906, 2113, 177, 1907, 0, 407, 0, 1095, 1955, 1238, 2317, 0, 474,
0, 442, 0, 83, 1308, 650, 1922, 0, 1402, 0, 462, 632, 2424, 0, 1040, 0,
2419, 2545, 0, 1637, 339, 0, 1939, 0, 998, 1900, 122, 0, 186, 0, 129, 0,
388, 411, 0, 577, 199, 1823, 789, 0, 935, 0, 0, 0, 0, 0, 2010, 0,
792, 2408, 0, 0, 0, 2325, 2634, 8, 0, 0, 0, 0, 1660, 1953, 481, 189,
1747, 2396, 0, 0, 0, 1948, 0, 0, 0, 118, 269, 1572, 0, 0, 691, 2527,
1553, 305, 1931, 982, 0, 0, 990, 9, 216, 622, 1370, 0, 1337, 93, 0, 608,
1946, 1159, 0, 0, 1159, 527, 1637, 1554, 0, 1058, 1556, 2366, 0, 1175, 2119, 252,
0, 1502, 1921, 0, 2419, 0, 34, 0, 596, 51, 317, 0, 0, 0, 971, 396,
1260, 0, 0, 0, 2456, 859, 0, 0, 0, 251, 1918, 0, 316, 0, 0, 377,
547, 1305, 108, 190, 0, 0, 1899, 0, 109, 1064, 1509, 0, 2641, 330, 0, 151,
300, 0, 2349, 0, 475, 0, 2054, 2045, 685, 1823, 0, 423, 2445, 1255, 426, 1878,
582, 773, 0, 0, 1196, 2341, 869, 0, 84, 58, 0, 755, 40, 2632, 1544, 1274,
0, 1036, 0, 1626, 446, 63, 586, 2030, 724, 0, 393, 2447, 560, 163, 0, 0,
0, 801, 131, 696, 419, 895, 852, 0, 346, 2195, 113, 0, 2144, 0, 0, 473,
1779, 0, 909, 1187, 2045, 0, 0, 1355, 658, 2256, 1098, 968, 0, 83, 1188, 0,
0, 95, 0, 0, 0, 803, 1589, 0, 436, 89, 1908, 376, 0, 36, 53, 578,
769, 1360, 0, 0, 0, 2085, 0, 0, 0, 0, 623, 991, 183, 1772, 247, 166,
0, 0, 0, 2342, 0, 2153, 501, 1002, 445, 800, 0, 1019, 1224, 745, 152, 812,
142, 0, 578, 1371, 2320, 1372, 977, 379, 0, 0, 0, 1016, 1262, 0, 0, 0,
0, 2257, 1392, 0, 2491, 0, 0, 0, 572, 0, 0, 0, 0, 299, 0, 0,
1611, 571, 0, 0, 830, 403, 1160, 1111, 0, 859, 548, 1087, 2387, 889, 0, 397,
1288, 0, 466, 0, 287, 1112, 807, 953, 1190, 992, 576, 509, 335, 546, 0, 0,
482, 0, 2141, 1028, 600, 1818, 1771, 280, 225, 2589, 297, 2429, 0, 0, 0, 2597,
0, 0, 0, 863, 0, 1213, 0, 678, 919, 1296, 296, 1341, 0, 0, 0, 1054,
573, 2455, 0, 0, 567, 0, 1211, 1081, 2151, 631, 351, 822, 0, 0, 0, 0,
982, 0, 0, 384, 1423, 0, 136, 397, 117, 0, 1496, 0, 0, 999, 1104, 0,
0, 1145, 776, 0, 1269, 0, 1152, 678, 0, 1022, 95, 2268, 0, 0, 190, 373,
691, 752, 0, 1804, 0, 1341, 0, 0, 0, 0, 0, 0, 129, 0, 243, 1588,
361, 325, 0, 172, 324, 590};
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 %= 2678;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 40)
{
return 0;
}
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 2678;
}
constexpr int unmangledkT1[] = {141, 187, 20, 214, 16, 317, 21, 202, 208, 161, 55,
320, 91, 91, 268, 308, 221, 262, 118, 260, 195, 55,
0, 209, 41, 176, 190, 93, 50, 126, 183, 265};
constexpr int unmangledkT2[] = {100, 311, 0, 74, 44, 103, 261, 51, 123, 161, 42,
272, 120, 248, 312, 47, 289, 171, 138, 263, 227, 289,
150, 279, 29, 24, 17, 169, 280, 120, 293, 114};
constexpr int unmangledkG[] = {
0, 0, 0, 0, 0, 54, 0, 123, 288, 0, 0, 0, 0, 0, 206, 0, 0, 0, 174,
28, 157, 4, 296, 0, 221, 0, 283, 0, 0, 255, 323, 0, 0, 0, 0, 0, 9, 0,
171, 0, 0, 0, 78, 288, 0, 0, 0, 302, 227, 0, 174, 0, 0, 0, 277, 42, 229,
217, 237, 0, 274, 0, 0, 316, 220, 15, 0, 0, 77, 0, 0, 192, 287, 287, 242, 20,
0, 159, 0, 77, 107, 0, 0, 0, 0, 249, 0, 121, 0, 0, 0, 10, 114, 0, 75,
0, 0, 196, 0, 268, 0, 116, 86, 0, 145, 0, 24, 0, 282, 0, 25, 0, 307, 259,
0, 0, 0, 0, 2, 294, 85, 0, 142, 0, 87, 0, 140, 0, 80, 46, 65, 0, 208,
0, 0, 0, 0, 290, 67, 0, 0, 0, 0, 0, 38, 0, 0, 0, 150, 0, 163, 100,
190, 41, 92, 318, 0, 0, 0, 0, 18, 0, 0, 29, 38, 215, 53, 239, 0, 46, 0,
16, 163, 0, 16, 297, 307, 267, 91, 217, 101, 0, 166, 0, 0, 268, 224, 0, 0, 43,
91, 137, 0, 82, 188, 84, 0, 0, 0, 0, 147, 0, 63, 0, 0, 28, 205, 0, 153,
0, 104, 0, 0, 0, 0, 0, 0, 0, 230, 196, 67, 307, 113, 61, 325, 132, 58, 0,
0, 0, 146, 114, 0, 0, 0, 0, 169, 0, 139, 0, 19, 152, 0, 0, 62, 69, 265,
108, 0, 189, 0, 155, 60, 137, 43, 156, 0, 109, 0, 93, 0, 43, 123, 90, 162, 31,
303, 0, 14, 211, 324, 0, 0, 5, 296, 77, 315, 171, 51, 154, 0, 43, 144, 274, 180,
111, 111, 274, 7, 0, 0, 19, 103, 88, 136, 168, 0, 29, 49, 72, 0, 266, 83, 123,
5, 262, 117, 0, 0, 43, 0, 110, 188, 194, 0, 0, 0, 164, 0, 0, 0, 291, 104,
89, 0, 0, 133};
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 %= 327;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 32)
{
return 0;
}
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 327;
}
} // 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