blob: c1ed13b54bbfa7147c79194a31d7293fb0f3dd1c [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[] = {1180, 782, 1103, 563, 2974, 1464, 855, 2226, 533, 946,
2364, 1527, 2823, 1963, 1949, 406, 1029, 185, 2724, 2797,
2341, 264, 1903, 2150, 3196, 1935, 1186, 1337, 65, 194,
557, 2982, 1963, 2229, 2382, 1040, 776, 2536, 2699, 2002};
constexpr int mangledkT2[] = {243, 2806, 2646, 900, 1556, 238, 1079, 2379, 1830, 1969,
1294, 2251, 438, 1259, 2530, 476, 2188, 2765, 253, 197,
3034, 1339, 1962, 2836, 1405, 1808, 2356, 1708, 1616, 2555,
2384, 835, 1185, 1976, 1471, 1429, 2833, 3097, 1699, 752};
constexpr int mangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 861, 976, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1654, 2907, 0, 407, 952, 0, 0, 1101, 0, 956, 508, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1367, 0, 0, 0, 0, 0, 0, 0,
0, 2632, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 2781, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2152, 0, 674, 0, 0, 0,
0, 0, 0, 0, 2606, 0, 997, 1994, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 47, 1301, 0, 0, 0, 0, 2721, 955, 1392, 365, 0,
0, 0, 1485, 0, 0, 2839, 0, 0, 0, 123, 0, 2634, 0, 0, 0, 1238,
334, 250, 0, 1361, 760, 0, 0, 0, 0, 2608, 0, 321, 0, 0, 0, 0,
0, 0, 136, 0, 0, 0, 2601, 400, 0, 0, 0, 0, 0, 0, 0, 0,
1954, 0, 2094, 0, 0, 0, 0, 0, 200, 0, 0, 0, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2963, 1015, 2311, 487,
0, 189, 549, 0, 0, 0, 0, 0, 95, 0, 0, 1864, 0, 3079, 0, 0,
1156, 0, 0, 2866, 0, 2294, 0, 0, 0, 3123, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1010, 0, 1449, 0, 0, 2823, 0, 3102, 821, 590, 0, 1947, 0,
0, 0, 370, 2516, 1986, 1325, 0, 1995, 1125, 0, 0, 1801, 0, 773, 651, 0,
2705, 1463, 0, 1910, 2043, 0, 0, 0, 976, 2980, 0, 2031, 2487, 0, 0, 1970,
143, 0, 0, 0, 0, 0, 897, 0, 745, 0, 2744, 0, 0, 229, 1597, 0,
1305, 0, 2020, 0, 0, 0, 740, 0, 0, 497, 0, 0, 0, 0, 1545, 613,
0, 933, 0, 363, 0, 0, 0, 25, 2583, 0, 0, 1890, 0, 991, 0, 0,
0, 238, 0, 373, 725, 1583, 0, 3057, 0, 2415, 0, 0, 0, 0, 0, 0,
1319, 2567, 0, 2873, 514, 940, 361, 63, 2881, 0, 3186, 0, 0, 375, 224, 0,
1239, 0, 598, 0, 0, 0, 0, 1225, 1219, 0, 0, 0, 1680, 0, 0, 0,
700, 0, 0, 1309, 0, 2702, 0, 0, 1070, 1066, 0, 1611, 0, 0, 0, 0,
1279, 0, 0, 0, 0, 887, 0, 1622, 0, 691, 2992, 0, 0, 0, 0, 234,
0, 1099, 958, 0, 276, 1626, 0, 2136, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 672, 1930, 1753, 0, 0, 0, 0, 0, 0, 920, 533, 0, 0, 0,
604, 2799, 0, 0, 1609, 0, 0, 0, 0, 0, 0, 0, 291, 428, 1848, 0,
0, 0, 0, 1108, 0, 639, 1124, 3026, 0, 1380, 1187, 0, 0, 0, 761, 0,
0, 144, 0, 0, 3014, 0, 0, 0, 2985, 2173, 1139, 1473, 2294, 0, 408, 0,
0, 0, 1014, 0, 426, 0, 0, 0, 0, 144, 684, 0, 1753, 765, 1585, 0,
0, 0, 0, 0, 3201, 563, 480, 0, 0, 749, 609, 0, 0, 0, 0, 1397,
0, 524, 0, 0, 0, 2630, 0, 2073, 0, 0, 0, 0, 0, 2830, 678, 0,
0, 0, 2622, 0, 2510, 0, 783, 0, 0, 1076, 0, 0, 0, 0, 0, 0,
0, 2994, 328, 0, 0, 2723, 323, 0, 0, 0, 0, 0, 0, 0, 2951, 0,
876, 0, 0, 0, 0, 0, 1497, 0, 0, 2173, 1283, 0, 2174, 0, 0, 2583,
0, 219, 0, 125, 0, 0, 0, 1738, 0, 0, 2976, 165, 280, 848, 0, 88,
0, 2600, 0, 1069, 0, 0, 2858, 0, 0, 0, 933, 281, 463, 653, 0, 0,
0, 797, 0, 0, 0, 0, 0, 830, 0, 888, 284, 0, 0, 2648, 3011, 0,
0, 2530, 2644, 2144, 265, 1471, 1352, 2268, 0, 2453, 0, 0, 0, 0, 0, 842,
2490, 0, 1619, 0, 0, 0, 0, 2142, 3126, 0, 649, 938, 0, 0, 1222, 78,
899, 0, 0, 2574, 0, 0, 2824, 2966, 0, 0, 228, 1322, 1955, 1970, 2266, 806,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 3039, 3182, 236, 698,
0, 1044, 3000, 826, 0, 0, 0, 0, 0, 969, 0, 245, 575, 2891, 0, 0,
790, 1785, 258, 639, 0, 0, 1483, 0, 0, 585, 0, 0, 0, 0, 0, 3195,
2927, 0, 0, 0, 154, 2109, 0, 0, 1772, 1473, 0, 0, 0, 0, 0, 0,
2779, 1026, 1405, 2267, 869, 0, 0, 0, 0, 614, 0, 0, 259, 0, 260, 182,
834, 2249, 54, 0, 1126, 0, 0, 445, 0, 3041, 1997, 0, 0, 0, 743, 0,
0, 0, 0, 0, 698, 1105, 3087, 0, 0, 1018, 952, 0, 151, 1360, 1358, 0,
0, 0, 0, 0, 3085, 2671, 2820, 0, 0, 0, 0, 633, 0, 2467, 0, 2562,
0, 0, 1905, 1293, 0, 1540, 0, 0, 1511, 2475, 0, 0, 172, 0, 0, 0,
145, 0, 2452, 0, 2017, 516, 353, 982, 0, 0, 0, 0, 0, 1240, 141, 2482,
0, 0, 0, 0, 1556, 184, 0, 0, 0, 0, 0, 1660, 138, 0, 1831, 0,
0, 801, 1001, 0, 792, 2836, 525, 0, 0, 2445, 0, 0, 0, 0, 677, 0,
0, 141, 1343, 0, 1031, 0, 0, 2050, 0, 0, 0, 0, 838, 319, 0, 1846,
1251, 1123, 1411, 0, 0, 0, 0, 2356, 595, 213, 643, 851, 2228, 152, 675, 0,
0, 0, 2902, 0, 1067, 1026, 894, 0, 451, 1283, 846, 0, 1083, 216, 396, 0,
0, 136, 0, 324, 2524, 345, 2309, 0, 0, 1676, 2991, 6, 1407, 0, 0, 0,
0, 0, 123, 401, 85, 0, 3202, 0, 447, 0, 0, 0, 670, 1491, 0, 2036,
0, 2962, 1993, 3141, 2718, 1053, 0, 0, 2742, 0, 345, 0, 1073, 0, 531, 1847,
0, 0, 1025, 1779, 2840, 664, 0, 0, 289, 0, 0, 217, 0, 0, 635, 732,
963, 0, 0, 0, 43, 334, 1890, 2624, 0, 0, 0, 0, 1454, 3016, 0, 1820,
0, 0, 445, 0, 245, 2859, 421, 0, 0, 2752, 0, 2232, 0, 0, 983, 0,
0, 0, 0, 221, 2196, 0, 0, 527, 0, 0, 2655, 0, 0, 0, 0, 1629,
0, 0, 2912, 434, 0, 2183, 1136, 3151, 0, 2964, 0, 1688, 2065, 1064, 1160, 0,
0, 0, 756, 0, 778, 364, 0, 0, 0, 280, 631, 0, 1757, 0, 0, 1531,
0, 192, 828, 0, 0, 459, 522, 0, 0, 0, 0, 3002, 1948, 0, 0, 200,
0, 0, 845, 181, 2815, 0, 296, 0, 2885, 3085, 2218, 0, 941, 0, 0, 0,
3073, 2660, 0, 0, 469, 254, 0, 0, 1341, 334, 0, 571, 599, 0, 1001, 0,
0, 0, 0, 0, 0, 0, 545, 2769, 0, 0, 0, 2399, 2381, 0, 367, 0,
0, 0, 0, 0, 0, 0, 0, 611, 0, 0, 186, 210, 1352, 3104, 0, 54,
402, 1151, 710, 0, 107, 0, 0, 0, 404, 2385, 0, 117, 2046, 2891, 2432, 2449,
0, 731, 2649, 0, 0, 0, 2635, 0, 829, 506, 654, 0, 0, 0, 62, 0,
0, 1876, 1892, 768, 202, 0, 0, 0, 0, 36, 0, 0, 0, 174, 2062, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 465, 0, 0, 0, 0, 1557,
0, 0, 1071, 832, 0, 1359, 0, 0, 0, 0, 0, 0, 160, 385, 0, 0,
0, 0, 0, 304, 77, 0, 1536, 0, 0, 0, 2468, 0, 0, 0, 0, 2793,
0, 0, 0, 0, 2434, 0, 0, 1492, 0, 0, 0, 2513, 0, 0, 0, 1048,
628, 0, 0, 0, 1039, 278, 0, 0, 0, 1657, 690, 2960, 0, 565, 820, 61,
0, 0, 0, 772, 2479, 0, 460, 1502, 2448, 351, 0, 83, 0, 931, 671, 0,
1116, 417, 570, 0, 0, 0, 1138, 709, 0, 1133, 0, 0, 112, 0, 0, 0,
0, 0, 22, 0, 0, 482, 524, 0, 2625, 0, 444, 2502, 0, 2681, 960, 0,
1021, 0, 3099, 1313, 1113, 0, 977, 1171, 529, 1322, 0, 798, 1724, 0, 0, 2541,
719, 0, 967, 0, 1456, 0, 2820, 0, 3138, 0, 0, 2760, 0, 0, 0, 0,
0, 4, 0, 0, 120, 0, 0, 2416, 0, 872, 926, 1547, 0, 3193, 1229, 0,
1201, 0, 3205, 0, 350, 0, 0, 0, 54, 890, 0, 0, 0, 1874, 0, 1874,
2491, 818, 3183, 0, 1460, 0, 1665, 0, 0, 641, 0, 2163, 0, 0, 0, 0,
727, 0, 0, 0, 476, 0, 1308, 933, 0, 3133, 2673, 551, 733, 0, 0, 0,
0, 0, 0, 276, 0, 0, 0, 38, 0, 0, 2659, 1057, 0, 1354, 0, 0,
2319, 2660, 347, 930, 0, 406, 0, 0, 0, 1035, 0, 0, 0, 0, 0, 0,
673, 270, 0, 0, 592, 0, 737, 0, 0, 0, 0, 0, 2280, 0, 1262, 368,
0, 2321, 0, 0, 686, 0, 723, 0, 0, 0, 761, 1104, 0, 1579, 0, 1139,
0, 0, 0, 407, 0, 16, 984, 0, 0, 2713, 709, 0, 0, 78, 0, 0,
0, 31, 2319, 0, 0, 0, 0, 404, 2978, 0, 2411, 0, 0, 602, 2635, 0,
0, 0, 137, 0, 1225, 0, 560, 0, 0, 2790, 1225, 900, 0, 1672, 0, 0,
454, 600, 0, 0, 0, 0, 2321, 0, 0, 0, 0, 1817, 1354, 0, 0, 515,
0, 142, 0, 2651, 1455, 495, 1213, 410, 453, 1155, 583, 1582, 239, 1086, 373, 1536,
1956, 0, 54, 30, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0,
353, 1382, 253, 1563, 0, 416, 68, 2743, 1195, 0, 0, 782, 0, 102, 0, 2895,
1334, 0, 664, 539, 3010, 3020, 935, 0, 0, 1907, 688, 0, 1677, 0, 0, 443,
0, 0, 0, 2886, 0, 476, 1327, 0, 0, 959, 0, 0, 732, 0, 0, 769,
300, 964, 675, 0, 2886, 299, 855, 0, 0, 1363, 0, 0, 426, 0, 2628, 0,
778, 2366, 1268, 653, 0, 2281, 140, 0, 603, 0, 0, 0, 11, 245, 1298, 0,
0, 827, 0, 3080, 1068, 48, 2429, 3002, 93, 3068, 2984, 0, 3004, 0, 0, 0,
1376, 0, 1964, 0, 0, 0, 0, 2037, 1170, 2880, 501, 0, 0, 2049, 422, 0,
82, 544, 1338, 0, 0, 0, 2523, 2314, 1157, 0, 0, 882, 0, 609, 0, 21,
2280, 2854, 1081, 0, 1045, 0, 2191, 0, 0, 667, 0, 874, 269, 0, 0, 0,
145, 0, 0, 0, 133, 0, 0, 213, 1315, 97, 2532, 2134, 0, 1287, 23, 1215,
873, 0, 984, 0, 302, 1480, 1978, 2576, 0, 0, 1248, 389, 2033, 792, 0, 860,
300, 1301, 717, 0, 0, 728, 1144, 0, 36, 0, 21, 0, 1396, 0, 297, 0,
0, 353, 655, 1297, 604, 1394, 0, 0, 1642, 0, 2650, 0, 0, 1526, 742, 2036,
476, 2595, 656, 2549, 0, 597, 0, 0, 1596, 0, 1851, 0, 0, 826, 140, 896,
1544, 704, 166, 608, 0, 396, 2642, 1332, 0, 3056, 965, 679, 0, 0, 457, 1187,
227, 2472, 1137, 0, 0, 0, 5, 5, 0, 40, 1050, 790, 2992, 681, 2093, 0,
1013, 0, 0, 739, 0, 1146, 0, 449, 0, 391, 804, 312, 2541, 1232, 0, 0,
2174, 2180, 259, 1449, 3136, 868, 0, 0, 1819, 1152, 0, 1421, 0, 2, 1492, 462,
0, 2666, 0, 0, 0, 1035, 2789, 975, 1406, 2807, 908, 3150, 0, 1167, 1168, 2967,
0, 1579, 0, 394, 1423, 0, 150, 2269, 0, 0, 1262, 211, 0, 0, 1242, 429,
0, 178, 893, 449, 3092, 0, 0, 1328, 0, 0, 1128, 0, 355, 1202, 0, 2454,
0, 1648, 0, 0, 18, 1446, 626, 262, 0, 2764, 0, 0, 0, 1443, 0, 0,
0, 0, 208, 1539, 0, 0, 0, 0, 940, 0, 0, 2614, 0, 484, 845, 0,
2670, 0, 1075, 0, 0, 186, 2442, 236, 8, 0, 110, 799, 0, 0, 0, 0,
0, 0, 0, 2746, 1494, 0, 558, 727, 811, 0, 0, 539, 658, 406, 1486, 508,
0, 0, 2977, 0, 1208, 742, 2045, 250, 963, 0, 987, 0, 1912, 0, 1332, 489,
1404, 0, 1100, 3060, 2102, 0, 495, 0, 0, 3115, 0, 68, 0, 0, 0, 0,
114, 349, 0, 0, 2816, 1038, 3108, 0, 407, 0, 526, 0, 0, 0, 1147, 564,
0, 759, 2411, 0, 1300, 87, 3080, 3065, 0, 0, 88, 0, 3047, 0, 1247, 0,
382, 0, 1153, 0, 0, 3038, 2228, 0, 0, 0, 535, 912, 1121, 0, 0, 0,
561, 0, 0, 1026, 0, 455, 328, 0, 1013, 1485, 0, 791, 1190, 948, 0, 0,
52, 251, 0, 0, 1411, 1263, 0, 2895, 707, 0, 875, 2968, 0, 3201, 3040, 0,
3137, 285, 0, 1887, 2039, 242, 1359, 1150, 0, 2431, 0, 858, 1584, 0, 220, 0,
1193, 1140, 0, 0, 817, 116, 355, 2621, 1178, 0, 1842, 1610, 593, 0, 0, 0,
3170, 2983, 0, 1087, 255, 38, 2162, 1291, 777, 353, 0, 1279, 0, 3121, 638, 1249,
0, 0, 3133, 3006, 1297, 386, 2256, 853, 3067, 0, 0, 889, 0, 0, 1336, 0,
590, 164, 0, 89, 0, 668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2203, 0, 0, 2862, 0, 1024, 970, 0, 490, 0, 1440, 365, 1331, 977, 1419, 1131,
3143, 0, 969, 871, 2210, 132, 2681, 0, 1096, 0, 1062, 0, 0, 1278, 40, 2460,
75, 0, 157, 0, 2661, 2774, 1745, 1148, 639, 0, 0, 328, 0, 0, 1296, 0,
0, 0, 1238, 0, 826, 0, 1851, 1400, 256, 0, 1570, 157, 0, 0, 246, 55,
582, 1565, 1658, 0, 264, 0, 2752, 986, 0, 236, 1555, 907, 2367, 1159, 0, 2747,
0, 3016, 1410, 630, 943, 213, 268, 772, 3165, 2058, 1393, 0, 3151, 0, 1116, 2674,
0, 0, 2932, 1875, 0, 1043, 334, 0, 1984, 363, 817, 12, 2946, 0, 1066, 2998,
2077, 223, 3106, 2966, 113, 0, 1201, 0, 3196, 329, 1143, 698, 0, 1566, 0, 0,
0, 0, 287, 0, 0, 657, 0, 0, 1575, 248, 0, 0, 0, 1397, 0, 0,
780, 3054, 0, 0, 0, 0, 73, 0, 4, 0, 2303, 0, 212, 1217, 0, 0,
0, 679, 503, 496, 703, 518, 0, 0, 2107, 2883, 0, 1473, 427, 824, 0, 0,
0, 0, 1327, 0, 0, 0, 1844, 2443, 1078, 1782, 8, 1956, 0, 0, 562, 3158,
0, 0, 3163, 2209, 0, 0, 731, 0, 847, 679, 0, 0, 521, 0, 771, 0,
993, 2930, 2713, 2973, 1377, 0, 0, 0, 0, 3013, 273, 0, 0, 906, 275, 0,
2468, 0, 0, 1367, 907, 720, 626, 0, 0, 1402, 941, 0, 1509, 0, 35, 0,
3150, 0, 0, 0, 249, 0, 0, 0, 1087, 280, 2243, 0, 460, 0, 0, 1174,
0, 0, 0, 1090, 1517, 768, 2864, 0, 0, 0, 1295, 1982, 2580, 0, 1485, 0,
235, 1416, 0, 1724, 110, 627, 1339, 1013, 0, 3203, 890, 2267, 282, 0, 678, 0,
1233, 0, 1213, 923, 340, 1224, 0, 0, 0, 2687, 0, 1635, 0, 1594, 0, 663,
0, 3083, 0, 1144, 913, 0, 838, 1164, 2761, 1535, 1952, 1396, 501, 0, 0, 2977,
0, 0, 991, 296, 119, 0, 0, 520, 0, 1384, 996, 1294, 0, 1633, 989, 0,
2399, 87, 0, 0, 3038, 0, 1165, 2223, 425, 0, 0, 757, 0, 1570, 0, 900,
0, 2175, 0, 41, 404, 0, 0, 616, 0, 0, 256, 0, 0, 0, 0, 0,
0, 787, 3142, 519, 2379, 2716, 0, 613, 35, 0, 2816, 0, 0, 2522, 0, 1031,
5, 0, 0, 1226, 1220, 0, 1447, 0, 1484, 994, 628, 1286, 0, 631, 189, 0,
0, 1847, 1234, 3164, 2062, 2555, 0, 0, 0, 2826, 1505, 2030, 0, 3038, 1155, 604,
0, 823, 1450, 1601, 2244, 33, 1983, 0, 90, 0, 0, 0, 2331, 2945, 0, 1418,
1358, 349, 0, 1150, 0, 0, 0, 0, 1775, 2711, 2261, 0, 1091, 0, 1307, 2923,
1259, 1741, 0, 705, 1096, 1400, 0, 2552, 1645, 3136, 0, 1394, 1779, 0, 0, 1079,
863, 934, 1251, 0, 161, 416, 83, 42, 0, 2717, 2834, 0, 0, 0, 1800, 0,
31, 97, 0, 65, 740, 434, 0, 0, 880, 0, 0, 0, 2463, 1021, 0, 0,
3047, 0, 0, 0, 1191, 784, 0, 735, 2772, 1186, 0, 397, 2959, 911, 0, 1296,
0, 0, 0, 2557, 1608, 194, 577, 0, 863, 0, 0, 258, 2790, 0, 0, 937,
0, 0, 0, 0, 771, 654, 0, 1745, 0, 0, 3094, 1571, 1164, 0, 0, 40,
1042, 430, 0, 89, 0, 1081, 2358, 0, 0, 1065, 3124, 0, 1111, 1137, 2510, 0,
0, 493, 0, 576, 3181, 2257, 1245, 3115, 0, 0, 406, 0, 0, 0, 0, 0,
260, 3178, 2496, 1176, 582, 1656, 806, 0, 2536, 264, 0, 0, 0, 92, 218, 0,
0, 7, 0, 0, 180, 0, 1241, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1563, 1303, 2731, 790, 2829, 0, 1613, 2930, 0, 1770, 2512, 0, 842, 1531, 883, 2100,
3002, 0, 767, 1077, 802, 473, 936, 1918, 0, 0, 3095, 0, 0, 1815, 0, 575,
358, 2230, 0, 0, 1016, 0, 0, 184, 2927, 3123, 0, 1046, 2261, 1766, 87, 1071,
471, 544, 263, 827, 1381, 58, 163, 2815, 0, 198, 0, 2566, 1527, 2857, 0, 829,
0, 0, 206, 0, 2594, 1154, 0, 25, 1059, 3047, 2939, 0, 1454, 1816, 1524, 0,
0, 0, 2026, 1113, 305, 0, 49, 0, 2226, 1360, 3066, 0, 275, 956, 124, 0,
90, 383, 1928, 521, 2433, 43, 0, 551, 0, 0, 2591, 0, 0, 1166, 2737, 181,
1927, 0, 2601, 0, 0, 940, 445, 104, 0, 0, 828, 0, 0, 0, 0, 0,
645, 451, 1023, 1003, 1240, 2273, 1182, 0, 0, 0, 1582, 1185, 171, 0, 2741, 1434,
0, 0, 0, 300, 0, 0, 598, 0, 1254, 1320, 2536, 1072, 437, 832, 0, 1319,
257, 2866, 1189, 494, 42, 546, 770, 0, 1038, 310, 553, 0, 0, 0, 2446, 0,
0, 1466, 1394, 0, 0, 1007, 0, 2654, 0, 0, 707, 1308, 0, 1237, 0, 0,
0, 0, 0, 1552, 661, 958, 885, 0, 351, 1289, 2756, 0, 0, 3137, 0, 0,
0, 1474, 13, 395, 0, 1914, 0, 0, 522, 0, 547, 2527, 0, 0, 0, 2970,
1113, 385, 909, 2881, 0, 148, 1285, 325, 0, 2670, 781, 0, 235, 0, 341, 0,
2868, 0, 0, 2058, 1102, 612, 0, 2956, 2971, 3182, 0, 449, 1707, 1706, 815, 142,
2462, 282, 0, 0, 1621, 511, 0, 361, 327, 0, 373, 1346, 0, 764, 1475, 523,
3095, 0, 0, 0, 0, 1175, 0, 0, 789, 2341, 2967, 0, 0, 1238, 3106, 2554,
502, 2539, 1329, 975, 0, 687, 0, 2391, 2439, 1092, 131, 0, 2045, 0, 511, 0,
776, 412, 0, 409, 944, 1195, 0, 2956, 1438, 512, 0, 1044, 1246, 724, 0, 1208,
157, 2011, 374, 557, 160, 146, 615, 1278, 1020, 0, 0, 0, 1420, 1541, 0, 0,
230, 0, 717, 358, 2299, 1059, 280, 0, 2675, 0, 3003, 1284, 0, 589, 0, 842,
3141, 0, 1533, 0, 1024, 0, 579, 1505, 0, 0, 69, 2554, 0, 0, 540, 90,
80, 0, 0, 470, 313, 0, 0, 0, 0, 0, 0, 2623, 1549, 3025, 0, 63,
1080, 384, 2915, 1184, 2876, 11, 0, 1110, 1542, 0, 0, 916, 1445, 0, 2340, 1529,
0, 633, 0, 974, 0, 813, 0, 225, 1049, 1324, 1162, 1868, 504, 310, 0, 0,
456, 0, 422, 2906, 760, 0, 2100, 424, 1428, 532, 0, 750, 754, 1614, 406, 86,
517, 299, 0, 0, 161, 1364, 642, 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 %= 3208;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 40)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 3208;
}
constexpr int unmangledkT1[] = {246, 133, 248, 237, 59, 207, 93, 240, 98, 265, 137, 42, 147,
269, 280, 3, 248, 202, 278, 80, 240, 202, 142, 149, 257, 17};
constexpr int unmangledkT2[] = {166, 291, 199, 102, 183, 190, 20, 31, 50, 30, 134, 213, 202,
55, 268, 11, 15, 108, 22, 43, 119, 187, 239, 91, 190, 47};
constexpr int unmangledkG[] = {
0, 45, 0, 0, 0, 108, 0, 0, 0, 281, 0, 195, 0, 0, 231, 0, 0, 0, 0,
53, 0, 0, 0, 0, 0, 153, 155, 0, 71, 0, 214, 128, 0, 0, 162, 0, 0, 62,
0, 255, 0, 240, 0, 149, 156, 0, 0, 47, 17, 0, 102, 0, 148, 21, 0, 30, 0,
0, 0, 0, 84, 23, 16, 143, 176, 0, 18, 0, 24, 51, 255, 143, 136, 59, 241, 54,
36, 0, 0, 130, 141, 123, 0, 32, 0, 0, 76, 0, 0, 125, 291, 69, 0, 0, 0,
19, 64, 220, 0, 239, 289, 187, 117, 80, 81, 56, 0, 200, 44, 0, 0, 44, 283, 3,
267, 0, 39, 0, 45, 14, 0, 47, 192, 109, 276, 154, 0, 147, 142, 0, 0, 0, 147,
281, 0, 0, 65, 238, 159, 0, 73, 276, 0, 0, 188, 125, 0, 0, 0, 184, 0, 38,
0, 39, 0, 167, 88, 62, 0, 231, 0, 0, 58, 0, 81, 0, 0, 30, 0, 76, 0,
0, 75, 0, 101, 0, 9, 181, 0, 55, 0, 194, 22, 0, 0, 154, 76, 281, 0, 0,
124, 86, 0, 182, 274, 0, 0, 0, 129, 1, 0, 107, 0, 3, 49, 0, 33, 56, 67,
0, 118, 160, 0, 0, 5, 29, 0, 56, 189, 54, 0, 253, 191, 84, 277, 0, 119, 0,
203, 39, 5, 0, 0, 44, 162, 0, 0, 256, 0, 86, 137, 196, 153, 0, 171, 113, 87,
0, 0, 0, 0, 146, 0, 62, 15, 0, 0, 41, 274, 90, 246, 111, 0, 0, 119, 246,
273, 218, 0, 134, 0, 276, 0, 281, 0, 0, 97, 289, 79, 152, 157, 217, 276, 0, 0,
0, 0, 39, 64, 0, 125, 48};
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 %= 292;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 26)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 292;
}
} // 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