blob: 36c76630590e5b5e9bcde9ac1766a1275f88c62e [file] [log] [blame] [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[] = {2264, 213, 1028, 1475, 1361, 1474, 233, 1572, 1397, 712,
1166, 1429, 81, 1838, 2549, 1083, 2011, 7, 1824, 646,
195, 1823, 1551, 150, 1328, 1880, 1024, 1905, 420, 228,
1082, 428, 561, 2148, 2379, 1166, 279, 1087, 947, 193};
constexpr int mangledkT2[] = {1950, 181, 2214, 2065, 1240, 1307, 1106, 2540, 2567, 1310,
307, 711, 1470, 2521, 1206, 999, 1423, 955, 464, 2624,
1556, 2648, 2452, 104, 51, 869, 721, 1639, 2301, 239,
42, 1055, 1733, 1366, 1972, 2393, 1386, 1369, 2129, 975};
constexpr int mangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1719, 0, 0, 625, 0, 0, 0, 1691, 0, 0,
1028, 0, 894, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 679,
0, 0, 0, 0, 0, 0, 0, 752, 0, 0, 0, 0, 0, 2451, 0, 1405,
1745, 0, 0, 2237, 1384, 0, 0, 0, 0, 0, 0, 37, 0, 1989, 0, 0,
0, 1563, 0, 991, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0,
0, 0, 0, 878, 1999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 2185, 1225, 0, 0, 219, 0, 232, 0, 0, 85, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1622, 0, 1160, 0, 883, 0, 0, 304, 0, 0,
0, 1600, 887, 396, 2042, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 613,
0, 30, 2594, 0, 0, 2379, 0, 2447, 0, 0, 0, 0, 946, 0, 289, 0,
0, 0, 0, 777, 2208, 351, 0, 138, 0, 812, 0, 0, 2641, 2556, 2371, 270,
48, 0, 0, 0, 1871, 2438, 0, 0, 2553, 0, 0, 0, 1775, 0, 963, 1495,
2099, 0, 0, 0, 1477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1139, 1198, 518, 1355, 0, 0, 0, 1620, 1516, 0, 0, 1963,
0, 2108, 0, 0, 0, 0, 0, 982, 806, 1035, 0, 1505, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1708, 0, 1406, 0, 0, 0, 0, 1383, 880,
0, 0, 0, 0, 1352, 2028, 0, 0, 0, 351, 0, 0, 0, 494, 1105, 0,
895, 2273, 0, 1152, 0, 0, 41, 0, 0, 0, 1883, 0, 1407, 0, 0, 0,
1726, 101, 0, 0, 99, 0, 0, 0, 2467, 0, 0, 2115, 216, 2343, 764, 0,
1170, 475, 0, 1602, 0, 0, 880, 0, 0, 2219, 1873, 1005, 0, 0, 1634, 0,
0, 1198, 0, 0, 0, 1514, 0, 2012, 1192, 0, 0, 0, 275, 1969, 0, 0,
1823, 116, 1690, 215, 1595, 423, 1723, 283, 222, 0, 0, 0, 2283, 2354, 0, 0,
944, 2604, 0, 1641, 0, 760, 0, 1172, 0, 102, 2325, 0, 0, 0, 0, 1713,
0, 0, 0, 0, 713, 0, 1664, 0, 0, 0, 0, 701, 0, 799, 0, 0,
559, 1845, 1400, 1761, 2591, 0, 0, 0, 2343, 0, 0, 0, 0, 134, 286, 1078,
1810, 883, 0, 0, 0, 2541, 0, 382, 0, 2330, 1387, 0, 0, 0, 1074, 1183,
2667, 0, 1014, 461, 1087, 343, 0, 444, 126, 0, 0, 1986, 0, 0, 0, 2332,
0, 2531, 2218, 0, 1721, 1127, 1671, 0, 1097, 0, 0, 1230, 0, 1823, 0, 0,
0, 0, 993, 2634, 0, 0, 1195, 952, 2158, 0, 788, 1620, 0, 1979, 2440, 0,
0, 0, 157, 898, 0, 0, 1310, 0, 0, 2611, 0, 457, 1405, 0, 1109, 0,
1794, 0, 0, 916, 0, 0, 1678, 0, 2615, 798, 0, 2303, 0, 534, 0, 0,
1840, 0, 0, 0, 0, 0, 0, 0, 0, 1300, 0, 1157, 940, 0, 1676, 175,
629, 0, 0, 0, 0, 1025, 0, 1776, 0, 0, 0, 1184, 0, 993, 92, 0,
1126, 0, 0, 1464, 2605, 2391, 0, 0, 0, 0, 1273, 0, 0, 0, 0, 835,
1325, 1026, 1378, 0, 1115, 0, 0, 0, 2518, 203, 0, 0, 9, 0, 0, 1717,
0, 0, 68, 0, 0, 0, 0, 1634, 1053, 0, 0, 770, 0, 0, 0, 0,
0, 2268, 0, 0, 0, 2087, 1507, 0, 0, 391, 0, 0, 0, 332, 0, 330,
11, 1175, 126, 0, 1566, 462, 0, 0, 975, 2218, 71, 262, 220, 0, 0, 1117,
0, 1515, 0, 0, 0, 0, 16, 0, 0, 0, 0, 1823, 0, 0, 0, 902,
0, 0, 91, 2414, 1316, 364, 0, 1796, 0, 0, 0, 316, 0, 0, 700, 0,
0, 0, 430, 0, 0, 714, 572, 1917, 0, 0, 0, 978, 308, 2087, 2399, 0,
268, 0, 2616, 431, 0, 544, 300, 2516, 0, 0, 2301, 897, 752, 0, 0, 0,
2086, 205, 754, 0, 1323, 2153, 242, 940, 0, 0, 118, 0, 1223, 0, 1332, 358,
136, 0, 405, 2587, 0, 0, 0, 2307, 0, 0, 544, 0, 0, 267, 0, 0,
0, 2224, 0, 2302, 1951, 0, 2329, 2223, 0, 0, 662, 0, 1510, 1148, 0, 0,
1099, 112, 0, 172, 0, 1514, 0, 2333, 1224, 617, 0, 535, 0, 0, 0, 0,
0, 1129, 0, 1398, 0, 1238, 0, 0, 0, 2027, 0, 0, 1022, 184, 1047, 1274,
0, 0, 0, 0, 0, 0, 37, 1066, 0, 0, 1134, 2480, 0, 763, 2207, 970,
609, 1113, 0, 2530, 846, 0, 2189, 703, 0, 0, 0, 0, 0, 2019, 360, 0,
0, 527, 601, 0, 157, 197, 0, 0, 1760, 0, 1790, 0, 1088, 0, 1394, 641,
598, 0, 0, 0, 2299, 1407, 0, 0, 1231, 0, 0, 0, 0, 2661, 1786, 0,
0, 1181, 0, 0, 0, 447, 0, 0, 0, 0, 0, 0, 2430, 0, 0, 2575,
0, 450, 427, 2523, 1968, 1321, 419, 1420, 0, 1977, 2291, 368, 533, 58, 941, 708,
2621, 2432, 0, 0, 1603, 817, 0, 1862, 0, 547, 0, 1790, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 847, 0, 2567, 777, 0, 1628, 2, 301, 1080, 0,
0, 2551, 466, 0, 0, 0, 0, 0, 0, 1061, 979, 1983, 0, 212, 0, 357,
1065, 0, 0, 2162, 2489, 240, 347, 0, 1165, 2262, 580, 46, 0, 704, 2476, 0,
0, 2447, 0, 0, 2519, 1688, 359, 0, 0, 0, 2526, 0, 0, 0, 1322, 0,
920, 0, 1407, 522, 0, 0, 0, 592, 0, 0, 171, 2462, 0, 0, 1892, 644,
0, 954, 734, 0, 0, 0, 1885, 0, 122, 0, 23, 0, 0, 795, 0, 1655,
1653, 379, 2632, 188, 2384, 0, 440, 490, 0, 0, 0, 0, 501, 0, 1895, 1272,
0, 710, 294, 44, 0, 2159, 875, 2013, 2158, 0, 335, 1551, 0, 127, 1852, 1727,
0, 0, 0, 0, 273, 0, 1097, 2073, 21, 2084, 0, 693, 0, 573, 276, 2077,
493, 0, 0, 354, 526, 0, 0, 874, 0, 0, 2059, 1212, 0, 0, 0, 0,
0, 1081, 0, 1174, 187, 987, 561, 0, 1541, 59, 0, 1223, 0, 1590, 2294, 1094,
1172, 923, 0, 1540, 564, 833, 1966, 0, 0, 649, 0, 0, 0, 1856, 1847, 1492,
0, 494, 1840, 599, 1646, 468, 0, 0, 456, 0, 857, 0, 622, 0, 1845, 1326,
781, 0, 834, 195, 0, 297, 2377, 158, 0, 2300, 0, 0, 487, 0, 750, 1427,
1199, 594, 1848, 110, 0, 2053, 1975, 0, 0, 876, 0, 826, 0, 1238, 883, 0,
0, 0, 339, 900, 0, 0, 0, 0, 0, 549, 0, 1357, 1995, 507, 0, 761,
0, 0, 0, 0, 0, 2326, 587, 0, 0, 2630, 1674, 0, 1516, 2538, 1984, 1156,
159, 2398, 607, 2365, 0, 571, 0, 1063, 923, 0, 0, 0, 0, 2678, 434, 44,
19, 0, 0, 957, 528, 1656, 2269, 0, 0, 78, 2186, 0, 0, 0, 1030, 2476,
1834, 0, 2505, 106, 0, 1415, 1578, 0, 1671, 2633, 0, 1617, 1053, 521, 0, 519,
0, 0, 0, 0, 1145, 0, 0, 340, 0, 0, 0, 0, 0, 1864, 0, 1666,
0, 1933, 2457, 0, 421, 1111, 1064, 2465, 2573, 1467, 1370, 373, 0, 700, 0, 0,
1094, 0, 349, 0, 1202, 2411, 2053, 816, 1816, 0, 0, 0, 260, 0, 786, 0,
0, 879, 870, 0, 2594, 0, 0, 504, 0, 2284, 0, 1166, 309, 2656, 0, 7,
0, 0, 0, 0, 526, 1092, 0, 0, 0, 1302, 0, 0, 0, 992, 0, 0,
565, 0, 2386, 566, 0, 0, 550, 96, 850, 1223, 0, 0, 603, 1371, 1572, 442,
0, 0, 465, 859, 1162, 2449, 0, 1402, 1653, 0, 1587, 0, 1118, 2632, 360, 0,
0, 0, 2267, 1869, 0, 958, 1605, 0, 0, 0, 0, 2321, 0, 0, 138, 424,
2348, 173, 1766, 0, 2457, 431, 1782, 0, 1076, 1675, 1432, 1698, 0, 0, 1898, 0,
0, 0, 2428, 563, 1597, 0, 2350, 0, 275, 1219, 0, 2536, 457, 370, 0, 1152,
1101, 1194, 0, 0, 1657, 0, 2187, 2614, 0, 0, 0, 0, 2430, 1163, 0, 1964,
296, 982, 60, 2263, 627, 0, 0, 791, 0, 0, 0, 0, 943, 90, 558, 0,
0, 0, 0, 0, 356, 1750, 818, 0, 0, 0, 0, 1269, 1234, 2145, 15, 682,
771, 1373, 0, 2658, 0, 0, 0, 0, 250, 37, 560, 540, 2616, 897, 1004, 0,
1272, 2182, 120, 974, 547, 0, 515, 535, 1987, 851, 690, 0, 639, 0, 1202, 837,
0, 254, 0, 0, 2073, 0, 0, 870, 375, 470, 254, 0, 0, 0, 1420, 341,
18, 0, 311, 416, 0, 225, 0, 600, 963, 0, 0, 601, 763, 0, 0, 1714,
1116, 876, 870, 1467, 0, 2499, 0, 0, 0, 1027, 514, 841, 324, 0, 676, 46,
0, 0, 0, 263, 0, 0, 1866, 1332, 1846, 0, 1356, 0, 680, 369, 0, 548,
1133, 0, 0, 652, 0, 2268, 0, 0, 1518, 1251, 0, 705, 0, 0, 0, 117,
0, 593, 2596, 0, 552, 0, 765, 2476, 1307, 0, 2519, 451, 1387, 0, 0, 2513,
1246, 233, 0, 0, 0, 1266, 0, 1487, 2394, 0, 0, 814, 463, 98, 1410, 0,
0, 1781, 0, 1636, 0, 0, 152, 997, 892, 86, 1207, 0, 0, 465, 436, 757,
426, 227, 1875, 1614, 266, 1962, 0, 1898, 0, 1005, 1323, 0, 2505, 88, 0, 0,
1904, 424, 1191, 1668, 0, 0, 764, 1835, 1397, 237, 0, 0, 1130, 0, 939, 166,
1490, 488, 0, 0, 0, 708, 1630, 2338, 748, 873, 648, 1767, 1878, 299, 0, 205,
0, 133, 2636, 2422, 0, 1177, 337, 469, 1002, 0, 532, 2355, 0, 1215, 438, 1011,
562, 721, 0, 0, 1339, 2233, 0, 884, 0, 2283, 5, 0, 0, 0, 251, 1693,
0, 0, 1102, 0, 0, 15, 2204, 70, 757, 0, 2067, 1852, 0, 80, 0, 2574,
1382, 421, 0, 0, 1322, 678, 1506, 0, 2158, 1548, 0, 75, 0, 0, 0, 0,
0, 0, 0, 0, 545, 0, 0, 935, 1157, 0, 0, 0, 65, 190, 0, 2680,
2347, 0, 474, 0, 0, 2642, 0, 0, 1294, 182, 566, 431, 189, 438, 1353, 63,
1991, 823, 2640, 2330, 2141, 0, 724, 2041, 1331, 0, 2530, 1350, 0, 0, 2, 0,
39, 749, 1292, 0, 719, 1334, 480, 620, 543, 1203, 2467, 0, 0, 2177, 0, 0,
1522, 0, 928, 300, 0, 0, 2005, 1848, 1331, 831, 1427, 1421, 0, 0, 476, 1435,
0, 1054, 1153, 2004, 0, 0, 0, 176, 0, 1099, 330, 1397, 0, 323, 0, 2218,
0, 2225, 0, 491, 0, 0, 460, 0, 1843, 0, 1036, 673, 0, 2033, 0, 0,
1239, 0, 0, 0, 1173, 1115, 0, 2152, 2613, 293, 1247, 0, 2576, 2606, 1411, 0,
0, 321, 0, 332, 1284, 609, 2304, 0, 576, 2548, 0, 2565, 2486, 2440, 0, 1013,
2640, 271, 0, 171, 486, 492, 0, 715, 0, 1493, 554, 0, 796, 6, 1580, 0,
0, 0, 0, 2559, 1780, 28, 272, 1023, 478, 0, 0, 0, 0, 298, 0, 0,
0, 108, 0, 0, 0, 0, 2173, 137, 0, 2606, 0, 1059, 0, 235, 0, 1164,
1399, 0, 0, 0, 529, 0, 2086, 0, 52, 2004, 0, 256, 1419, 2582, 1288, 273,
1437, 1108, 0, 1174, 0, 600, 462, 1108, 2611, 8, 430, 1290, 1328, 305, 1705, 1317,
1368, 1237, 1602, 360, 1405, 1866, 0, 228, 0, 1521, 2366, 177, 0, 0, 926, 0,
0, 0, 0, 1998, 2281, 2477, 0, 0, 0, 572, 0, 0, 0, 2208, 1, 0,
0, 0, 1941, 0, 1573, 0, 0, 0, 443, 0, 0, 0, 0, 0, 2543, 1005,
0, 0, 1470, 179, 0, 301, 2429, 2419, 1135, 0, 2651, 0, 956, 0, 236, 0,
0, 199, 0, 1209, 0, 1858, 0, 872, 1836, 0, 0, 573, 381, 489, 0, 2313,
415, 0, 287, 0, 0, 0, 745, 0, 0, 0, 61, 1158, 0, 0, 517, 0,
1848, 0, 1527, 1377, 1298, 133, 0, 0, 0, 0, 2610, 0, 0, 2076, 519, 1414,
98, 0, 582, 104, 0, 2279, 0, 0, 643, 0, 1450, 773, 0, 269, 0, 1019,
1031, 0, 0, 0, 2485, 169, 830, 0, 835, 305, 1252, 0, 0, 556, 624, 988,
240, 1658, 758, 2015, 158, 0, 236, 216, 0, 0, 0, 1221, 0, 0, 1831, 902,
0, 0, 353, 914, 0, 1828, 0, 2446, 0, 119, 934, 0, 0, 822, 0, 1066,
910, 0, 1232, 422, 0, 1587, 2350, 967, 945, 33, 1193, 0, 1847, 620, 2142, 0,
0, 1756, 0, 0, 408, 0, 1675, 193, 2136, 1249, 1150, 784, 0, 610, 0, 554,
2192, 949, 1251, 0, 0, 616, 1403, 0, 0, 471, 2091, 0, 1617, 1528, 0, 1132,
1628, 2243, 1848, 0, 0, 0, 994, 449, 0, 2515, 449, 0, 0, 988, 1067, 0,
0, 0, 2071, 686, 0, 1061, 1050, 0, 0, 788, 47, 2052, 1926, 1396, 1330, 0,
1078, 539, 997, 0, 1801, 290, 257, 0, 2060, 0, 1070, 2522, 1475, 0, 1933, 124,
698, 1062, 2648, 0, 855, 682, 0, 0, 0, 695, 0, 628, 0, 1415, 1961, 1353,
0, 0, 0, 0, 0, 755, 1226, 1152, 2414, 1104, 1376, 0, 2276, 940, 787, 831,
2660, 462, 733, 754, 0, 328, 0, 0, 0, 0, 0, 0, 0, 1243, 0, 1287,
1519, 1669, 443, 439, 350, 2147, 2161, 0, 203, 0, 0, 1683, 1595, 1082, 0, 2479,
0, 786, 1997, 337, 979, 0, 0, 0, 0, 0, 0, 1094, 727, 2574, 1595, 0,
0, 732, 0, 2442, 0, 2133, 2195, 666, 1127, 1386, 687, 0, 199, 0, 1106, 1280,
1222, 1358, 1071, 0, 1701, 2008, 1212, 1822, 0, 2468, 2126, 2450, 976, 1159, 0, 307,
0, 1297, 0, 133, 1176, 386, 0, 524, 0, 94, 410, 1043, 0, 0, 45, 0,
0, 0, 0, 2156, 0, 2362, 1954, 1203, 1029, 1704, 381, 529, 576, 880, 0, 36,
2586, 1951, 852, 1916, 1303, 1308, 1047, 1044, 618, 2558, 0, 0, 0, 0, 0, 1736,
285, 2054, 1216, 177, 968, 0, 390, 2125, 0, 299, 57, 404, 66, 0, 0, 0,
0, 1459, 1821, 0, 2299, 0, 985, 0, 89, 1233, 0, 780, 0, 0, 1446, 1259,
1122, 275, 2298, 0, 1268, 333, 0, 1614, 506, 2430, 0, 1009, 1527, 0, 1704, 1682,
1697, 1201, 324, 0, 0, 2620, 0, 304, 1527, 2099, 0, 2392, 0, 1463, 2022, 0,
1183, 0, 213, 1320, 0, 279, 467, 0, 947, 0, 0, 1613, 0, 0, 502, 248,
0, 0, 0, 226, 1015, 1204, 0, 0, 569, 0, 1922, 342, 1266, 2288, 0, 149,
1316, 163, 336, 1143, 1813, 0, 482, 0, 319, 2580, 1010, 0, 1122, 1215, 1299, 1060,
2539, 0, 0, 0, 2459, 594, 0, 0, 689, 340, 1363, 0, 1292, 675, 699, 317,
0, 774, 0, 519, 1187, 2162, 1886, 318, 884, 685, 409, 0, 0, 197, 0, 2567,
0, 0, 393, 0, 1948, 0, 405, 318, 1873, 0, 0, 595, 0, 2511, 2137, 114,
991, 0, 2053, 1091, 514, 0, 171, 364, 1607, 2538, 378, 1155, 0, 759, 0, 430,
55, 1828, 813, 0, 382, 0, 0, 0, 0, 919, 736, 0, 2391, 303, 0, 0,
0, 0, 2461, 529, 1174, 237, 915, 0, 1391, 2618, 0, 2327, 672, 0, 972, 909,
539, 563, 0, 2654, 1655, 1375, 1426, 0, 0, 0, 0, 0, 810, 1045, 2330, 2568,
495, 0, 0, 2254, 451, 0, 307, 0, 0, 751, 2346, 2520, 178, 1424, 1940, 289,
0, 2578, 719, 0, 406, 183, 0, 1280, 0, 116, 0, 1811, 1166, 1360, 2673, 0,
2105, 2061, 26, 1957, 1126, 0, 2352, 2426, 2002, 2639, 1528, 1073, 0, 2376, 0, 625,
1363, 0, 0, 100, 0, 1354, 340, 0, 1411, 1346, 739, 0, 537, 223, 840, 150,
912, 2561, 0, 0, 0, 2447, 1170, 92, 0, 862, 1250, 0, 0, 0, 288, 0,
1276, 90, 0, 1151, 0, 0, 575, 2027, 1711, 1322, 614, 772, 1286, 505, 788, 1570,
2, 123, 629, 0, 1375, 0, 717, 0, 0, 441, 569, 876, 244, 2130};
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 %= 2686;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 40)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 2686;
}
constexpr int unmangledkT1[] = {283, 267, 280, 232, 95, 248, 66, 107, 84, 33, 160,
206, 18, 302, 134, 298, 236, 304, 179, 314, 206, 70,
266, 310, 227, 269, 170, 226, 288, 163, 197, 233};
constexpr int unmangledkT2[] = {242, 246, 285, 184, 312, 257, 16, 193, 254, 203, 268,
162, 73, 81, 83, 86, 51, 114, 275, 312, 164, 297,
55, 203, 192, 149, 54, 64, 254, 247, 226, 90};
constexpr int unmangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 108, 0, 0, 0, 75, 0, 0, 0,
0, 0, 0, 0, 0, 29, 0, 0, 65, 0, 0, 0, 45, 253, 90, 0, 123, 168, 0,
0, 300, 0, 94, 125, 0, 289, 0, 0, 98, 237, 0, 0, 83, 0, 0, 0, 0, 2,
0, 0, 7, 38, 0, 0, 0, 4, 0, 0, 0, 289, 62, 0, 0, 0, 34, 134, 41,
0, 74, 0, 0, 0, 0, 312, 30, 0, 0, 12, 38, 261, 303, 40, 0, 0, 0, 0,
1, 2, 0, 9, 0, 161, 145, 0, 122, 27, 0, 0, 0, 59, 140, 56, 108, 0, 0,
279, 126, 315, 0, 153, 25, 0, 0, 61, 145, 0, 268, 105, 194, 183, 271, 157, 175, 156,
0, 168, 4, 0, 0, 0, 0, 263, 0, 0, 91, 0, 179, 138, 221, 0, 0, 79, 68,
271, 240, 72, 208, 0, 125, 149, 307, 1, 0, 0, 55, 53, 26, 253, 107, 41, 14, 87,
0, 202, 60, 128, 0, 4, 28, 97, 159, 205, 21, 283, 0, 109, 23, 299, 23, 158, 150,
0, 32, 0, 50, 280, 7, 0, 133, 153, 0, 210, 253, 118, 162, 230, 26, 0, 0, 0,
273, 86, 158, 0, 0, 61, 268, 0, 0, 0, 160, 0, 0, 18, 4, 115, 0, 107, 0,
131, 82, 82, 0, 0, 0, 0, 25, 0, 295, 138, 22, 0, 111, 311, 69, 47, 16, 266,
0, 0, 78, 103, 103, 1, 262, 178, 275, 0, 0, 0, 81, 0, 0, 0, 67, 293, 159,
121, 29, 0, 240, 0, 54, 305, 0, 314, 23, 0, 0, 52, 264, 172, 0, 230, 0, 36,
146, 58, 103, 0, 0, 0, 62, 20, 0, 142, 121, 89, 146, 59, 263, 96, 33, 219, 0,
147, 0, 0, 64, 177, 0, 306, 5, 98, 0, 0, 116};
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 %= 316;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 32)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 316;
}
} // 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