blob: b7912a2569a9867d328186e8a033f523e2b155f3 [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[] = {1556, 238, 1079, 2379, 1830, 1969, 1294, 1527, 2823, 1963,
1949, 2765, 253, 197, 2341, 1962, 2150, 3196, 2836, 1405,
65, 1616, 194, 3215, 1963, 835, 1185, 1040, 776, 1429,
2833, 2536, 3097, 2289, 2243, 407, 2802, 1920, 2364, 819};
constexpr int mangledkT2[] = {2251, 438, 1259, 2530, 406, 1029, 185, 2724, 2797, 476,
2188, 3034, 264, 1903, 1339, 1935, 1186, 1808, 2356, 1337,
1708, 557, 2982, 2555, 2384, 2229, 2382, 1976, 1471, 2699,
2002, 1699, 752, 2862, 2949, 2208, 1670, 256, 1054, 2471};
constexpr int mangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1267,
0, 0, 0, 2778, 0, 0, 0, 0, 0, 0, 0, 0, 2196, 0, 2049, 911,
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, 3190, 0, 0, 0,
0, 0, 0, 0, 2291, 0, 2090, 2, 0, 0, 0, 535, 0, 2621, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2650, 0, 0, 0, 0, 0, 0, 0, 0,
0, 2523, 0, 0, 0, 0, 2609, 0, 0, 0, 2366, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 1723, 0, 2222, 0, 1305,
1037, 0, 0, 0, 0, 0, 0, 914, 0, 0, 2039, 0, 139, 0, 261, 0,
0, 291, 0, 0, 0, 2680, 0, 0, 0, 789, 0, 1207, 0, 0, 0, 0,
0, 0, 886, 0, 0, 0, 0, 0, 625, 0, 0, 0, 0, 0, 0, 3071,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1170, 0, 0, 0, 739, 0,
0, 159, 857, 0, 0, 0, 0, 3093, 778, 0, 0, 0, 0, 660, 0, 0,
0, 0, 0, 295, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 1917,
0, 0, 0, 0, 0, 0, 0, 1929, 0, 0, 0, 0, 0, 0, 0, 0,
1553, 0, 0, 1909, 3123, 0, 0, 0, 0, 286, 0, 0, 0, 0, 0, 0,
1393, 740, 0, 0, 563, 0, 0, 0, 0, 1626, 0, 0, 0, 530, 0, 0,
0, 423, 0, 0, 0, 0, 0, 1089, 0, 0, 0, 3074, 0, 3014, 0, 405,
1596, 0, 0, 0, 0, 0, 1563, 0, 0, 0, 0, 974, 1166, 1654, 0, 0,
0, 876, 0, 0, 0, 0, 1699, 1056, 1194, 1834, 0, 0, 0, 2434, 934, 197,
0, 0, 0, 0, 0, 0, 547, 0, 2841, 0, 1759, 0, 0, 0, 0, 0,
0, 0, 712, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 810, 0, 0, 0, 0, 0, 2831, 271, 0, 0, 212,
2961, 0, 0, 115, 0, 0, 1297, 0, 0, 0, 0, 1487, 0, 2515, 0, 3063,
106, 2632, 0, 0, 0, 0, 0, 0, 0, 2827, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1728, 2348, 756, 0, 0, 0, 548, 0, 1059, 0,
2935, 0, 2125, 656, 388, 0, 0, 0, 1698, 1535, 11, 0, 324, 1696, 0, 1878,
0, 0, 0, 1761, 506, 0, 2704, 0, 0, 0, 564, 0, 536, 0, 0, 592,
0, 0, 0, 2489, 0, 0, 1556, 0, 0, 0, 0, 2680, 0, 0, 0, 1978,
824, 0, 1553, 0, 0, 0, 0, 1428, 0, 0, 1591, 0, 0, 0, 740, 1338,
0, 0, 0, 0, 414, 2573, 0, 2711, 2849, 0, 999, 1928, 3163, 0, 0, 1244,
0, 0, 0, 1197, 2516, 0, 0, 0, 1458, 2069, 0, 0, 0, 0, 1210, 332,
1908, 0, 0, 0, 0, 1121, 0, 1010, 0, 0, 66, 1941, 2631, 2219, 0, 2068,
0, 0, 0, 0, 0, 0, 0, 0, 1600, 0, 0, 783, 0, 1259, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 851, 0, 0, 1491, 0, 3041, 0, 0,
2910, 0, 0, 2262, 1299, 0, 0, 580, 790, 0, 1403, 0, 2401, 0, 627, 1023,
2636, 0, 0, 0, 0, 0, 0, 3147, 0, 2713, 0, 231, 451, 1446, 0, 0,
3106, 0, 0, 0, 0, 0, 0, 1868, 0, 0, 0, 0, 1055, 0, 21, 94,
0, 1792, 0, 1642, 1761, 0, 0, 0, 0, 0, 1435, 0, 0, 558, 423, 1295,
0, 0, 0, 0, 1784, 0, 0, 0, 0, 1412, 0, 0, 2934, 366, 0, 0,
0, 2233, 0, 0, 0, 373, 2332, 1648, 0, 0, 2317, 3028, 0, 0, 2125, 0,
0, 0, 0, 0, 0, 0, 823, 0, 0, 0, 2274, 0, 0, 3027, 0, 0,
0, 2500, 0, 0, 0, 0, 0, 203, 2882, 1277, 0, 848, 0, 0, 0, 0,
0, 1211, 1225, 0, 0, 0, 1057, 0, 2649, 0, 0, 1725, 0, 0, 0, 1206,
0, 0, 205, 236, 29, 1503, 816, 771, 1580, 0, 0, 0, 1084, 0, 3021, 198,
2147, 0, 0, 0, 0, 29, 0, 0, 0, 1707, 0, 0, 1544, 0, 0, 2685,
0, 0, 3168, 0, 0, 1160, 727, 1501, 2503, 2679, 800, 2850, 0, 0, 2252, 0,
1203, 1416, 0, 0, 2908, 2674, 94, 2383, 0, 0, 0, 0, 1415, 2713, 435, 0,
0, 1029, 0, 2133, 0, 0, 0, 0, 0, 0, 0, 1614, 346, 0, 0, 0,
0, 3114, 0, 2728, 0, 446, 0, 0, 0, 3045, 1773, 0, 2923, 0, 0, 0,
0, 0, 1564, 0, 1852, 0, 1585, 2233, 0, 0, 618, 2412, 457, 814, 0, 0,
1287, 329, 372, 1258, 3184, 2486, 0, 361, 2574, 0, 2101, 0, 2009, 1320, 1348, 1144,
2591, 0, 954, 2798, 0, 483, 907, 0, 0, 1334, 0, 3213, 0, 0, 1593, 13,
87, 0, 113, 0, 0, 0, 0, 0, 164, 0, 0, 0, 812, 3220, 567, 109,
0, 0, 0, 265, 0, 0, 0, 1529, 463, 0, 0, 0, 0, 0, 0, 3211,
1778, 1094, 738, 1193, 1254, 0, 0, 616, 234, 0, 0, 0, 1712, 2731, 0, 0,
0, 0, 3081, 2289, 0, 0, 0, 0, 0, 776, 2356, 2048, 447, 610, 79, 0,
1145, 0, 2679, 0, 0, 0, 0, 2365, 1588, 317, 0, 0, 0, 0, 2151, 0,
0, 0, 0, 1443, 0, 0, 0, 0, 1674, 0, 3042, 667, 0, 2935, 2582, 0,
0, 382, 0, 0, 0, 0, 98, 0, 2966, 1425, 0, 0, 2686, 0, 2393, 550,
0, 0, 0, 86, 1198, 717, 1829, 0, 0, 0, 0, 523, 2813, 0, 806, 0,
376, 0, 1782, 0, 822, 0, 1476, 271, 2862, 0, 0, 596, 0, 560, 0, 2395,
1155, 0, 0, 187, 188, 0, 0, 1485, 1082, 1148, 220, 1693, 0, 0, 0, 1547,
0, 0, 1042, 436, 0, 0, 1004, 0, 694, 190, 0, 906, 0, 0, 2840, 0,
509, 922, 3219, 1017, 871, 0, 0, 0, 0, 0, 0, 1580, 1421, 0, 0, 0,
675, 0, 0, 137, 2855, 0, 1707, 184, 0, 0, 0, 502, 257, 1673, 176, 0,
0, 2564, 2800, 0, 0, 0, 0, 1211, 1287, 0, 0, 0, 2904, 906, 581, 453,
0, 1584, 928, 2294, 0, 0, 2256, 0, 1397, 0, 1817, 0, 0, 0, 1142, 694,
0, 222, 0, 549, 1358, 0, 0, 619, 1878, 0, 357, 1604, 3010, 0, 0, 1047,
722, 0, 2783, 588, 0, 0, 0, 695, 2841, 0, 0, 0, 899, 0, 0, 0,
995, 302, 2151, 0, 812, 0, 0, 925, 0, 0, 0, 0, 0, 1331, 1292, 808,
0, 2461, 0, 1946, 862, 0, 666, 0, 0, 323, 0, 2010, 421, 0, 3087, 2497,
0, 217, 73, 14, 3104, 0, 0, 622, 0, 0, 1173, 0, 0, 0, 3000, 0,
0, 0, 1336, 655, 1099, 0, 0, 0, 2220, 2358, 0, 0, 2945, 0, 0, 2635,
1380, 0, 0, 2277, 0, 0, 728, 1399, 1441, 0, 1964, 0, 3038, 0, 0, 3139,
0, 1149, 3019, 351, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 325, 0,
0, 2174, 1384, 0, 1542, 1006, 960, 0, 1719, 0, 0, 1745, 2369, 1042, 2797, 0,
0, 2445, 0, 0, 1720, 2576, 427, 505, 2924, 0, 3055, 0, 196, 174, 0, 1617,
2648, 292, 2333, 3064, 0, 0, 1000, 0, 1420, 0, 0, 1281, 1562, 1652, 0, 801,
60, 1121, 430, 0, 1149, 2982, 0, 0, 1262, 0, 1167, 0, 0, 1580, 986, 0,
145, 0, 2060, 0, 0, 0, 0, 1289, 0, 0, 573, 820, 0, 9, 2551, 2178,
0, 587, 0, 196, 0, 115, 0, 114, 0, 0, 0, 0, 463, 653, 0, 0,
66, 0, 1102, 0, 0, 1047, 0, 2708, 804, 0, 1444, 2469, 1832, 0, 0, 1498,
913, 0, 0, 1406, 752, 0, 128, 992, 188, 0, 0, 771, 552, 0, 65, 0,
63, 1200, 0, 0, 2225, 0, 0, 2635, 0, 48, 0, 0, 33, 791, 1350, 0,
0, 0, 2981, 1090, 0, 0, 2514, 2478, 582, 0, 142, 2960, 278, 2223, 1573, 1082,
1731, 2556, 712, 0, 0, 0, 484, 0, 19, 0, 0, 0, 0, 0, 1496, 1321,
0, 0, 57, 0, 0, 955, 0, 932, 150, 0, 1729, 182, 119, 703, 28, 0,
0, 2164, 0, 0, 1422, 0, 2958, 0, 0, 0, 364, 0, 1128, 641, 0, 1371,
277, 0, 0, 0, 0, 1338, 0, 0, 962, 0, 575, 2917, 0, 0, 995, 0,
0, 1158, 613, 0, 0, 76, 0, 0, 2231, 0, 0, 0, 225, 0, 0, 450,
638, 0, 0, 0, 2995, 360, 143, 2543, 1080, 215, 0, 0, 0, 1525, 550, 256,
1355, 0, 1154, 1411, 2860, 356, 0, 0, 2658, 366, 0, 0, 0, 4, 889, 419,
0, 3141, 0, 0, 917, 2551, 0, 452, 179, 1124, 700, 0, 0, 624, 0, 0,
0, 34, 0, 213, 0, 106, 1242, 1380, 0, 0, 1187, 2339, 938, 358, 0, 1103,
0, 0, 2724, 867, 0, 2248, 0, 0, 2598, 1070, 0, 0, 0, 431, 518, 0,
0, 1375, 12, 633, 165, 2622, 3132, 0, 711, 1000, 344, 0, 0, 0, 0, 249,
0, 2096, 72, 0, 0, 476, 2397, 0, 1867, 0, 2775, 0, 0, 0, 2803, 985,
0, 0, 0, 0, 2564, 1195, 3059, 2627, 1156, 2115, 1178, 208, 0, 0, 1189, 229,
0, 1389, 0, 812, 2059, 0, 0, 0, 2769, 752, 237, 0, 0, 1602, 1253, 0,
0, 0, 608, 0, 912, 2257, 879, 2503, 1261, 799, 1380, 2183, 559, 0, 0, 0,
2403, 227, 1561, 0, 0, 0, 902, 477, 0, 553, 929, 2702, 0, 0, 0, 0,
0, 0, 2235, 521, 1719, 369, 773, 395, 1583, 0, 0, 0, 2924, 0, 3185, 44,
1390, 1004, 2312, 0, 0, 1494, 0, 1259, 633, 0, 793, 0, 3120, 0, 556, 0,
0, 1457, 0, 612, 1291, 474, 0, 3015, 0, 0, 0, 1506, 722, 3175, 439, 978,
29, 1538, 3172, 2266, 1050, 2605, 773, 819, 0, 2773, 3187, 0, 400, 0, 2107, 1379,
0, 0, 430, 1541, 0, 573, 1374, 0, 2609, 0, 2010, 2955, 302, 0, 31, 1576,
0, 1709, 1191, 0, 0, 0, 1065, 2600, 3206, 2394, 0, 50, 2745, 1390, 0, 2263,
1207, 58, 2033, 0, 2521, 0, 521, 0, 0, 0, 0, 2992, 0, 0, 0, 2032,
1259, 534, 0, 0, 0, 0, 2348, 0, 2112, 310, 0, 536, 0, 2453, 432, 0,
2475, 0, 0, 986, 863, 233, 1313, 0, 829, 0, 0, 0, 775, 2991, 2090, 0,
1381, 2631, 1638, 0, 1146, 2526, 0, 0, 2883, 3097, 2210, 0, 1339, 2850, 1337, 0,
1220, 0, 2408, 0, 0, 945, 0, 525, 2565, 623, 847, 2619, 0, 0, 1370, 0,
0, 1226, 64, 0, 0, 1054, 0, 0, 1170, 1925, 0, 0, 141, 1606, 951, 2144,
0, 0, 171, 466, 0, 654, 2213, 0, 0, 0, 0, 13, 0, 192, 1161, 0,
371, 0, 0, 491, 0, 1132, 0, 1552, 0, 0, 53, 1155, 1147, 975, 0, 0,
0, 2276, 0, 0, 178, 392, 0, 2352, 2698, 1728, 0, 1942, 0, 3028, 0, 1566,
1525, 0, 0, 0, 245, 0, 512, 0, 0, 2106, 0, 3152, 972, 0, 0, 2857,
0, 1197, 2568, 2427, 1421, 2310, 0, 1190, 1293, 2619, 795, 1066, 367, 2606, 2919, 0,
0, 847, 0, 2793, 3076, 0, 1279, 2538, 3203, 2445, 1509, 427, 0, 238, 0, 0,
1885, 0, 0, 0, 2706, 1926, 656, 0, 451, 0, 0, 0, 37, 610, 643, 2522,
256, 0, 3151, 473, 0, 693, 0, 1754, 0, 0, 0, 0, 0, 0, 0, 0,
1121, 1322, 0, 0, 1445, 0, 0, 2235, 0, 0, 431, 1624, 0, 275, 0, 1050,
0, 0, 0, 0, 0, 0, 0, 817, 0, 2505, 0, 711, 0, 0, 663, 36,
3168, 694, 0, 2011, 973, 0, 2635, 2865, 895, 0, 297, 0, 1925, 0, 910, 386,
1058, 0, 312, 313, 512, 108, 320, 0, 0, 0, 697, 400, 1207, 1979, 1311, 1028,
0, 0, 0, 0, 1526, 0, 0, 342, 0, 0, 0, 0, 0, 2547, 0, 286,
151, 0, 1366, 103, 514, 2574, 1985, 0, 0, 631, 507, 2673, 0, 3053, 0, 0,
0, 0, 472, 1216, 2618, 0, 0, 1364, 383, 2926, 0, 0, 0, 942, 365, 0,
1282, 3052, 0, 0, 0, 297, 0, 829, 3134, 2557, 2638, 781, 2441, 0, 651, 284,
0, 1439, 0, 0, 1514, 3028, 0, 66, 324, 7, 1395, 0, 384, 401, 0, 1972,
0, 1364, 0, 3005, 762, 898, 2080, 365, 105, 0, 2597, 0, 0, 2619, 2919, 422,
0, 919, 0, 0, 0, 722, 1504, 0, 1716, 0, 0, 150, 343, 641, 219, 0,
2162, 557, 1113, 0, 960, 0, 0, 1354, 3105, 0, 744, 0, 782, 0, 1730, 429,
2165, 2214, 0, 0, 0, 0, 652, 364, 61, 0, 870, 2176, 0, 0, 693, 980,
0, 150, 1464, 0, 1644, 538, 0, 0, 0, 0, 0, 1959, 179, 998, 293, 0,
1064, 3158, 1949, 638, 1011, 0, 0, 2221, 0, 0, 0, 0, 631, 1569, 2225, 1906,
828, 840, 3177, 2830, 275, 2558, 2901, 2544, 0, 299, 2712, 0, 3102, 0, 2673, 735,
2982, 0, 0, 1342, 138, 1963, 149, 273, 1085, 1868, 0, 0, 2251, 0, 0, 0,
2570, 2504, 0, 1076, 1835, 2594, 0, 590, 1495, 318, 0, 0, 660, 379, 666, 0,
1404, 2997, 512, 0, 0, 842, 850, 1543, 708, 3194, 0, 0, 0, 2197, 0, 0,
246, 306, 0, 0, 2810, 0, 1308, 0, 1335, 572, 245, 1531, 3038, 0, 0, 1361,
0, 2703, 0, 1150, 93, 2081, 1484, 0, 3093, 178, 342, 0, 3167, 616, 0, 1043,
0, 2369, 2492, 3098, 0, 0, 335, 249, 0, 0, 0, 85, 726, 0, 482, 2260,
1621, 1250, 0, 799, 1498, 0, 0, 911, 448, 0, 1266, 1816, 626, 2978, 0, 425,
3081, 250, 2860, 0, 987, 1151, 0, 2322, 0, 0, 0, 0, 0, 540, 1324, 1269,
0, 380, 0, 0, 0, 185, 3074, 0, 952, 0, 0, 659, 2837, 497, 617, 3189,
2965, 0, 906, 333, 1221, 180, 0, 0, 2946, 0, 2616, 0, 2802, 1812, 274, 0,
751, 277, 0, 0, 0, 218, 750, 966, 930, 0, 0, 0, 0, 1021, 819, 1561,
0, 0, 1152, 2779, 251, 0, 252, 0, 2603, 1471, 811, 0, 566, 0, 1267, 0,
1162, 1401, 285, 0, 0, 547, 3074, 297, 61, 0, 1711, 29, 2213, 2980, 0, 635,
919, 792, 2527, 812, 0, 0, 1061, 0, 0, 0, 0, 0, 1490, 616, 537, 0,
0, 227, 0, 0, 0, 1989, 455, 282, 0, 1460, 2836, 0, 2692, 0, 734, 249,
984, 2940, 1430, 1972, 1668, 2683, 0, 0, 1442, 1330, 383, 3008, 0, 0, 0, 854,
354, 198, 0, 1286, 0, 98, 0, 1346, 0, 1639, 404, 0, 82, 1084, 655, 0,
0, 3180, 0, 1074, 904, 218, 0, 2861, 2155, 0, 1578, 0, 1599, 21, 3116, 3022,
661, 0, 0, 1594, 0, 0, 1075, 0, 1194, 1392, 0, 1475, 1108, 934, 2471, 0,
1045, 265, 283, 639, 0, 0, 218, 0, 2751, 0, 0, 46, 979, 0, 0, 0,
448, 0, 2971, 206, 1503, 0, 699, 1673, 0, 2935, 2092, 0, 0, 0, 957, 0,
444, 0, 1356, 0, 990, 1615, 3155, 0, 553, 2827, 652, 565, 1295, 1484, 483, 375,
1369, 1432, 132, 361, 577, 0, 0, 1589, 59, 0, 0, 0, 1621, 0, 949, 0,
1312, 0, 0, 0, 3124, 2307, 1337, 1546, 108, 0, 1487, 397, 1388, 495, 812, 0,
0, 0, 0, 164, 0, 0, 0, 0, 0, 273, 2938, 43, 3185, 1100, 0, 1076,
1119, 0, 1202, 0, 0, 1243, 1257, 2102, 30, 268, 533, 0, 1268, 651, 231, 0,
0, 0, 766, 724, 2952, 901, 3052, 3048, 381, 0, 859, 0, 0, 811, 1719, 2470,
3187, 168, 0, 47, 0, 0, 0, 1702, 0, 276, 0, 0, 2942, 269, 1408, 1109,
1020, 2149, 0, 1810, 281, 1663, 1294, 0, 1304, 0, 0, 534, 2134, 0, 632, 620,
1181, 1586, 2561, 1681, 718, 0, 0, 0, 0, 0, 1049, 589, 8, 1329, 760, 147,
0, 2916, 1600, 1007, 0, 1572, 2167, 1161, 0, 304, 0, 1759, 1530, 43, 0, 207,
0, 322, 0, 0, 0, 0, 2181, 0, 0, 0, 251, 389, 0, 0, 109, 0,
496, 2428, 31, 0, 165, 1940, 0, 3173, 0, 16, 881, 1613, 0, 2547, 0, 0,
2944, 258, 3065, 644, 1585, 1030, 1277, 0, 0, 1161, 616, 1063, 2812, 1843, 151, 390,
1, 0, 1166, 0, 1544, 0, 485, 0, 1100, 0, 0, 0, 0, 296, 0, 2943,
1284, 637, 1340, 202, 0, 1730, 0, 18, 0, 843, 3070, 0, 0, 1011, 339, 1107,
114, 410, 2841, 1431, 231, 0, 0, 857, 251, 2917, 0, 445, 0, 275, 1307, 1994,
2059, 0, 1251, 120, 0, 2183, 1017, 1210, 2320, 1549, 2091, 294, 1902, 0, 277, 542,
0, 68, 0, 786, 0, 0, 736, 229, 3067, 187, 1826, 1654, 1553, 861, 2587, 191,
0, 2237, 0, 1600, 0, 873, 0, 0, 0, 504, 1296, 0, 0, 0, 1105, 691,
863, 361, 516, 669, 0, 0, 2036, 176, 2025, 1863, 427, 0, 0, 815, 232, 0,
0, 839, 3054, 2181, 2638, 0, 412, 2744, 0, 201, 748, 598, 0, 247, 2147, 0,
134, 1150, 0, 638, 0, 5, 842, 859, 0, 1223, 0, 0, 0, 887, 1288, 1440,
0, 0, 2050, 584, 93, 212, 255, 173, 712, 0, 2912, 219, 0, 1270, 43, 0,
775, 0, 623, 0, 0, 0, 2, 0, 482, 1457, 909, 360, 682, 0, 0, 435,
827, 749, 279, 0, 1012, 513, 456, 626, 1990, 730, 0, 429, 983, 0, 0, 1170,
0, 0, 78, 2859, 948, 0, 0, 2134, 2378, 568, 627, 501, 1556, 1303, 1098, 0,
298, 1729, 3109, 0, 3135, 0, 769, 954, 1128, 262, 0, 133, 1450, 2704, 2062, 1496,
1025, 0, 458, 2477, 0, 1732, 2859, 0, 772, 1111, 0, 0, 0, 1494, 0, 953,
333, 0, 1557, 2455, 0, 256, 761, 1769, 1504, 1302, 61, 878, 2909, 739, 1285, 0,
833, 1581, 2110, 0, 1382, 1114, 0, 3004, 1111, 520, 0, 0, 1199, 2651, 2555, 381,
0, 0, 2376, 0, 1, 1951, 125, 0, 343, 0, 793, 1629, 2834, 2490, 440, 0,
0, 0, 2897, 865, 0, 2591, 0, 1081, 1675, 2807, 0, 0, 589, 1114, 0, 1349,
0, 555, 2328, 936, 0, 0, 132, 1878, 1927, 0, 1195, 1273, 1125, 0, 0, 4,
0, 1103, 0, 1821, 0, 700, 558, 0, 0, 344, 0, 0, 1033, 2232, 1964, 1426,
1035, 657, 987, 370, 0, 0, 6, 0, 2941, 2027, 0, 832, 188, 1015, 0, 0,
797, 742, 663, 1048, 0, 417, 2076, 0, 1315, 0, 316, 0, 1026, 827, 0, 0,
0, 0, 1986, 2036, 1327, 0, 0, 0, 0, 254, 0, 741, 2906, 429, 287, 2856,
2547, 2361, 366, 2467, 0, 0, 0, 0, 0, 301, 0, 284, 942, 0, 0, 0,
0, 226, 0, 0, 0, 890, 3077, 326, 445, 0, 579, 0, 1427, 1357, 1539, 1813,
0, 0, 1298, 0, 1180, 2462, 2939, 0, 47, 0, 411, 141, 916, 319, 0, 1125,
689, 1300, 2907, 774, 1494, 0, 0, 0, 2813, 1313, 0, 2611, 993, 2977, 0, 1402,
0, 2293, 1271, 910, 355, 0, 0, 0, 1304, 729, 1662, 0, 0, 0, 0, 1307,
669, 0, 0, 566, 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 %= 3221;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 40)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 3221;
}
constexpr int unmangledkT1[] = {202, 208, 9, 296, 56, 272, 36, 228, 4, 48, 70, 19, 29,
55, 232, 227, 54, 80, 69, 190, 185, 285, 268, 237, 143, 100};
constexpr int unmangledkT2[] = {261, 131, 142, 12, 76, 239, 150, 35, 289, 106, 40, 20, 117,
22, 36, 130, 142, 198, 16, 2, 109, 249, 53, 77, 44, 159};
constexpr int unmangledkG[] = {
0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 216, 0,
0, 0, 0, 0, 0, 0, 0, 287, 161, 0, 222, 246, 0, 94, 25, 139, 0, 228, 0,
170, 0, 190, 0, 304, 0, 0, 203, 0, 0, 0, 0, 0, 290, 110, 103, 260, 109, 0,
130, 0, 0, 0, 57, 295, 79, 162, 0, 114, 150, 257, 0, 0, 246, 71, 243, 0, 17,
0, 141, 87, 0, 0, 182, 0, 12, 290, 0, 67, 0, 217, 0, 35, 0, 70, 0, 0,
0, 150, 0, 165, 0, 65, 0, 130, 55, 0, 0, 0, 9, 149, 243, 0, 264, 0, 11,
0, 0, 0, 151, 0, 138, 58, 44, 278, 0, 0, 143, 0, 242, 0, 299, 72, 0, 15,
0, 107, 121, 275, 0, 0, 302, 0, 0, 137, 0, 263, 0, 70, 23, 20, 0, 224, 0,
1, 0, 306, 0, 0, 0, 132, 43, 0, 52, 274, 104, 0, 86, 94, 7, 41, 49, 141,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 286, 0, 0, 0, 17, 0, 216, 0,
0, 109, 117, 84, 0, 0, 95, 0, 9, 190, 0, 0, 66, 0, 142, 129, 0, 68, 136,
120, 29, 0, 0, 0, 144, 25, 67, 0, 276, 0, 20, 25, 0, 0, 81, 0, 238, 0,
122, 0, 10, 93, 2, 0, 127, 0, 0, 262, 0, 40, 3, 107, 0, 0, 227, 5, 300,
174, 5, 42, 97, 32, 85, 0, 269, 73, 154, 98, 0, 266, 0, 0, 61, 36, 283, 90,
42, 276, 68, 0, 7, 112, 114, 51, 113, 32, 0, 21, 192, 76, 115, 248, 0, 89, 63,
108, 45, 0, 58, 95, 0, 0, 33, 166, 226, 117, 71, 35, 117, 56, 66, 0, 0, 290,
0, 0, 0, 72};
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 %= 308;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 26)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 308;
}
} // 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