blob: 37e4b1696ad910cabffce3c8c9419977a77dbb55 [file]
// 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, 855, 969, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1644, 2907, 0, 405, 946, 0, 0, 1104, 0, 969, 508, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1376, 0, 0, 0, 0, 0, 0, 0,
0, 2630, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 2774, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2151, 0, 675, 0, 0, 0,
0, 0, 0, 0, 2606, 0, 1140, 1982, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 43, 1154, 0, 0, 0, 0, 2719, 963, 1401, 363, 0,
0, 0, 1483, 0, 0, 2838, 0, 0, 0, 123, 0, 2637, 0, 0, 0, 1236,
444, 252, 0, 1356, 756, 0, 0, 0, 0, 2619, 0, 321, 0, 0, 0, 0,
0, 0, 133, 0, 0, 0, 2604, 388, 0, 0, 0, 0, 0, 0, 0, 0,
1945, 0, 2090, 0, 0, 0, 0, 0, 196, 0, 0, 0, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2965, 1013, 2305, 452,
0, 193, 549, 0, 0, 0, 0, 0, 96, 0, 0, 1848, 0, 3189, 0, 0,
1154, 0, 0, 2874, 0, 2297, 0, 0, 0, 3135, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1043, 0, 1450, 0, 0, 2821, 0, 3104, 819, 588, 0, 1938, 0,
0, 0, 370, 2518, 1986, 1323, 0, 1991, 1123, 0, 0, 1797, 0, 771, 639, 0,
2709, 1573, 0, 1912, 2052, 0, 0, 0, 974, 3139, 0, 2030, 2481, 0, 0, 1962,
138, 0, 0, 0, 0, 0, 901, 0, 743, 0, 2747, 0, 0, 231, 1597, 0,
1303, 0, 2024, 0, 0, 0, 737, 0, 0, 495, 0, 0, 0, 0, 1542, 611,
0, 931, 0, 473, 0, 0, 0, 172, 2730, 0, 0, 1885, 0, 989, 0, 0,
0, 229, 0, 392, 725, 1583, 0, 3057, 0, 2412, 0, 0, 0, 0, 0, 0,
1309, 2569, 0, 2881, 516, 938, 363, 3126, 2769, 0, 3188, 0, 0, 371, 215, 0,
1239, 0, 598, 0, 0, 0, 0, 1223, 1217, 0, 0, 0, 1672, 0, 0, 0,
698, 0, 0, 1312, 0, 2763, 0, 0, 1220, 1064, 0, 1607, 0, 0, 0, 0,
1277, 0, 0, 0, 0, 885, 0, 1619, 0, 689, 2999, 0, 0, 0, 0, 236,
0, 1099, 960, 0, 285, 1626, 0, 2138, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 673, 1940, 1604, 0, 0, 0, 0, 0, 0, 911, 538, 0, 0, 0,
605, 2958, 0, 0, 1604, 0, 0, 0, 0, 0, 0, 0, 287, 429, 1698, 0,
0, 0, 0, 1111, 0, 640, 1122, 3026, 0, 1379, 1185, 0, 0, 0, 757, 0,
0, 144, 0, 0, 3013, 0, 0, 0, 2992, 2171, 1137, 1474, 2298, 0, 405, 0,
0, 0, 1012, 0, 426, 0, 0, 0, 0, 141, 682, 0, 1762, 763, 1585, 0,
0, 0, 0, 0, 3201, 542, 482, 0, 0, 749, 588, 0, 0, 0, 0, 1392,
0, 377, 0, 0, 0, 2627, 0, 1923, 0, 0, 0, 0, 0, 2838, 678, 0,
0, 0, 2586, 0, 2498, 0, 783, 0, 0, 1074, 0, 0, 0, 0, 0, 0,
0, 2993, 328, 0, 0, 2725, 323, 0, 0, 0, 0, 0, 0, 0, 2952, 0,
879, 0, 0, 0, 0, 0, 1499, 0, 0, 2175, 1279, 0, 2322, 0, 0, 2438,
0, 184, 0, 125, 0, 0, 0, 1737, 0, 0, 2987, 165, 282, 850, 0, 88,
0, 2603, 0, 1069, 0, 0, 2857, 0, 0, 0, 929, 279, 460, 650, 0, 0,
0, 797, 0, 0, 0, 0, 0, 821, 0, 886, 284, 0, 0, 2650, 3009, 0,
0, 2533, 2638, 2146, 155, 1466, 1350, 2416, 0, 2455, 0, 0, 0, 0, 0, 987,
2649, 0, 1610, 0, 0, 0, 0, 1167, 62, 0, 588, 1092, 0, 0, 1220, 3141,
757, 0, 0, 2569, 0, 0, 2823, 2966, 0, 0, 228, 1309, 1953, 2116, 2267, 802,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 3030, 3186, 376, 694,
0, 1191, 3157, 826, 0, 0, 0, 0, 0, 967, 0, 245, 571, 2888, 0, 0,
786, 1783, 148, 637, 0, 0, 1486, 0, 0, 426, 0, 0, 0, 0, 0, 3197,
2927, 0, 0, 0, 155, 2111, 0, 0, 1771, 1625, 0, 0, 0, 0, 0, 0,
2744, 1023, 1403, 2268, 867, 0, 0, 0, 0, 616, 0, 0, 258, 0, 259, 182,
834, 2251, 54, 0, 1124, 0, 0, 445, 0, 3198, 1848, 0, 0, 0, 750, 0,
0, 0, 0, 0, 695, 1103, 3085, 0, 0, 1016, 1090, 0, 151, 1358, 1369, 0,
0, 0, 0, 0, 3083, 2677, 2820, 0, 0, 0, 0, 634, 0, 2467, 0, 2565,
0, 0, 2056, 1294, 0, 1538, 0, 0, 1511, 2325, 0, 0, 25, 0, 0, 0,
145, 0, 2458, 0, 2015, 517, 354, 823, 0, 0, 0, 0, 0, 1265, 141, 2476,
0, 0, 0, 0, 1556, 184, 0, 0, 0, 0, 0, 1812, 134, 0, 1830, 0,
0, 968, 1037, 0, 792, 2673, 527, 0, 0, 2445, 0, 0, 0, 0, 686, 0,
0, 298, 1341, 0, 1020, 0, 0, 2045, 0, 0, 0, 0, 838, 329, 0, 2007,
1092, 1121, 1411, 0, 0, 0, 0, 2377, 593, 213, 645, 849, 2232, 149, 676, 0,
0, 0, 2902, 0, 1069, 1171, 892, 0, 416, 1281, 844, 0, 1081, 216, 397, 0,
0, 138, 0, 322, 2527, 341, 2158, 0, 0, 1665, 2991, 6, 1405, 0, 0, 0,
0, 0, 122, 394, 85, 0, 3201, 0, 447, 0, 0, 0, 679, 1489, 0, 2028,
0, 2969, 1982, 3143, 2732, 1053, 0, 0, 2745, 0, 346, 0, 1071, 0, 528, 1848,
0, 0, 879, 1929, 2839, 665, 0, 0, 282, 0, 0, 217, 0, 0, 632, 723,
960, 0, 0, 0, 45, 334, 1890, 2771, 0, 0, 0, 0, 1452, 3012, 0, 1797,
0, 0, 446, 0, 248, 3007, 421, 0, 0, 2754, 0, 2242, 0, 0, 1004, 0,
0, 0, 0, 223, 3169, 0, 0, 529, 0, 0, 2802, 0, 0, 0, 0, 1625,
0, 0, 2910, 324, 0, 2193, 1137, 3139, 0, 2970, 0, 1692, 2063, 1072, 1158, 0,
0, 0, 765, 0, 631, 364, 0, 0, 0, 281, 777, 0, 1757, 0, 0, 1692,
0, 192, 767, 0, 0, 451, 518, 0, 0, 0, 0, 3002, 1950, 0, 0, 200,
0, 0, 854, 179, 2666, 0, 294, 0, 2888, 3080, 2207, 0, 944, 0, 0, 0,
3072, 2662, 0, 0, 469, 256, 0, 0, 1339, 335, 0, 590, 600, 0, 998, 0,
0, 0, 0, 0, 0, 0, 548, 2769, 0, 0, 0, 2405, 2348, 0, 215, 0,
0, 0, 0, 0, 0, 0, 0, 612, 0, 0, 186, 210, 1350, 3104, 0, 54,
402, 1150, 712, 0, 107, 0, 0, 0, 410, 2389, 0, 117, 2046, 2890, 2434, 2449,
0, 729, 2658, 0, 0, 0, 2638, 0, 831, 512, 799, 0, 0, 0, 62, 0,
0, 1865, 1887, 766, 46, 0, 0, 0, 0, 34, 0, 0, 0, 174, 2001, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 462, 0, 0, 0, 0, 1548,
0, 0, 1069, 832, 0, 1358, 0, 0, 0, 0, 0, 0, 160, 539, 0, 0,
0, 0, 0, 304, 77, 0, 1532, 0, 0, 0, 278, 0, 0, 0, 0, 2794,
0, 0, 0, 0, 2434, 0, 0, 1492, 0, 0, 0, 2511, 0, 0, 0, 1046,
629, 0, 0, 0, 1037, 278, 0, 0, 0, 1507, 688, 2962, 0, 563, 679, 3159,
0, 0, 0, 770, 2479, 0, 460, 1500, 2451, 351, 0, 83, 0, 775, 672, 0,
1114, 429, 571, 0, 0, 0, 1136, 698, 0, 1131, 0, 0, 112, 0, 0, 0,
0, 0, 22, 0, 0, 482, 516, 0, 2624, 0, 444, 2529, 0, 2683, 958, 0,
1038, 0, 3099, 1311, 1111, 0, 983, 1281, 529, 1320, 0, 798, 1722, 0, 0, 2541,
718, 0, 965, 0, 1454, 0, 2828, 0, 3144, 0, 0, 2759, 0, 0, 0, 0,
0, 4, 0, 0, 125, 0, 0, 2418, 0, 870, 924, 1547, 0, 3193, 1083, 0,
1199, 0, 3205, 0, 350, 0, 0, 0, 54, 892, 0, 0, 0, 1869, 0, 1868,
2494, 831, 3183, 0, 1460, 0, 1654, 0, 0, 639, 0, 2164, 0, 0, 0, 0,
724, 0, 0, 0, 476, 0, 1306, 931, 0, 3133, 2671, 549, 731, 0, 0, 0,
0, 0, 0, 276, 0, 0, 0, 42, 0, 0, 2663, 1055, 0, 1355, 0, 0,
2316, 2662, 347, 928, 0, 407, 0, 0, 0, 1033, 0, 0, 0, 0, 0, 0,
674, 272, 0, 0, 593, 0, 729, 0, 0, 0, 0, 0, 2282, 0, 1260, 370,
0, 2158, 0, 0, 684, 0, 715, 0, 0, 0, 759, 1102, 0, 1579, 0, 1137,
0, 0, 0, 407, 0, 14, 981, 0, 0, 2715, 705, 0, 0, 78, 0, 0,
0, 29, 2460, 0, 0, 0, 0, 558, 2871, 0, 2411, 0, 0, 604, 2641, 0,
0, 0, 137, 0, 1223, 0, 561, 0, 0, 2788, 1225, 901, 0, 1681, 0, 0,
454, 596, 0, 0, 0, 0, 2327, 0, 0, 0, 0, 1667, 1352, 0, 0, 506,
0, 142, 0, 2654, 1603, 495, 1211, 443, 453, 1157, 584, 1576, 239, 1089, 373, 1536,
1959, 0, 58, 30, 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0,
355, 1381, 254, 1563, 0, 418, 68, 2743, 1193, 0, 0, 782, 0, 102, 0, 2896,
1325, 0, 662, 537, 3003, 3020, 933, 0, 0, 1759, 842, 0, 1676, 0, 0, 435,
0, 0, 0, 2888, 0, 474, 1325, 0, 0, 957, 0, 0, 585, 0, 0, 767,
298, 962, 671, 0, 2774, 299, 857, 0, 0, 1361, 0, 0, 426, 0, 2628, 0,
776, 2366, 1266, 654, 0, 2283, 140, 0, 605, 0, 0, 0, 11, 245, 1288, 0,
0, 827, 0, 3086, 1066, 48, 2279, 3000, 93, 3061, 2984, 0, 3004, 0, 0, 0,
1374, 0, 1969, 0, 0, 0, 0, 2037, 1024, 2882, 499, 0, 0, 2051, 427, 0,
82, 545, 1336, 0, 0, 0, 2521, 2316, 1155, 0, 0, 879, 0, 610, 0, 21,
2280, 2856, 936, 0, 1043, 0, 2195, 0, 0, 664, 0, 872, 269, 0, 0, 0,
144, 0, 0, 0, 133, 0, 0, 213, 1313, 103, 2534, 2122, 0, 1285, 21, 1213,
871, 0, 982, 0, 309, 1478, 1980, 2587, 0, 0, 1246, 391, 2040, 792, 0, 858,
302, 1299, 719, 0, 0, 726, 1142, 0, 36, 0, 21, 0, 1392, 0, 297, 0,
0, 346, 656, 1295, 604, 1394, 0, 0, 1638, 0, 2648, 0, 0, 1522, 887, 2036,
478, 2597, 657, 2538, 0, 598, 0, 0, 1596, 0, 1851, 0, 0, 826, 144, 894,
1544, 717, 161, 606, 0, 396, 2646, 1182, 0, 5, 963, 677, 0, 0, 457, 1185,
227, 2471, 1139, 0, 0, 0, 5, 5, 0, 40, 1048, 902, 2988, 820, 2093, 0,
1015, 0, 0, 737, 0, 1144, 0, 449, 0, 388, 805, 312, 2547, 1230, 0, 0,
2322, 2182, 269, 1447, 3134, 866, 0, 0, 1670, 1150, 0, 1419, 0, 2, 1491, 464,
0, 2657, 0, 0, 0, 1033, 2789, 973, 1400, 2805, 906, 3150, 0, 1165, 1168, 2966,
0, 1577, 0, 394, 1423, 0, 157, 2276, 0, 0, 1260, 211, 0, 0, 1240, 429,
0, 176, 1050, 449, 31, 0, 0, 1326, 0, 0, 1126, 0, 352, 1205, 0, 2465,
0, 1758, 0, 0, 18, 1449, 627, 262, 0, 2767, 0, 0, 0, 1294, 0, 0,
0, 0, 208, 1539, 0, 0, 0, 0, 938, 0, 0, 2614, 0, 475, 843, 0,
2668, 0, 1073, 0, 0, 186, 2444, 236, 8, 0, 110, 795, 0, 0, 0, 0,
0, 0, 0, 2755, 1492, 0, 559, 727, 813, 0, 0, 542, 659, 406, 1463, 514,
0, 0, 2976, 0, 1206, 740, 2036, 250, 961, 0, 999, 0, 1769, 0, 1330, 485,
1402, 0, 1098, 3054, 2104, 0, 494, 0, 0, 3115, 0, 71, 0, 0, 0, 0,
114, 345, 0, 0, 2819, 1036, 3108, 0, 407, 0, 638, 0, 0, 0, 1145, 562,
0, 757, 2411, 0, 1141, 87, 3083, 3070, 0, 0, 87, 0, 3046, 0, 1255, 0,
387, 0, 1151, 0, 0, 3038, 2228, 0, 0, 0, 540, 913, 1119, 0, 0, 0,
562, 0, 0, 1024, 0, 455, 324, 0, 1010, 1483, 0, 793, 1188, 941, 0, 0,
52, 94, 0, 0, 1409, 1261, 0, 2894, 709, 0, 873, 2970, 0, 3201, 2897, 0,
3136, 285, 0, 2037, 2041, 240, 1357, 1148, 0, 2428, 0, 856, 1582, 0, 229, 0,
1191, 1138, 0, 0, 818, 116, 355, 2621, 1176, 0, 1979, 1610, 594, 0, 0, 0,
3174, 2985, 0, 1085, 255, 38, 2159, 1289, 774, 355, 0, 1281, 0, 2960, 639, 1247,
0, 0, 3128, 2993, 1299, 386, 2256, 851, 3067, 0, 0, 887, 0, 0, 1334, 0,
591, 160, 0, 89, 0, 669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2208, 0, 0, 2708, 0, 1022, 972, 0, 486, 0, 1438, 357, 1329, 975, 1271, 1129,
3146, 0, 968, 869, 2210, 128, 2678, 0, 937, 0, 1063, 0, 0, 1267, 42, 2469,
75, 0, 157, 0, 2659, 2776, 1855, 1146, 641, 0, 0, 330, 0, 0, 1294, 0,
0, 0, 1229, 0, 826, 0, 878, 1398, 258, 0, 1713, 12, 0, 0, 246, 55,
583, 1565, 1645, 0, 268, 0, 2754, 985, 0, 234, 1550, 1070, 2369, 1154, 0, 2750,
0, 3037, 1408, 631, 941, 215, 268, 770, 3167, 2058, 1391, 0, 3153, 0, 1115, 2816,
0, 0, 2933, 1875, 0, 1041, 330, 0, 1975, 364, 925, 12, 2946, 0, 1064, 2853,
2069, 223, 3109, 2964, 112, 0, 1199, 0, 3196, 329, 1141, 696, 0, 1566, 0, 0,
0, 0, 287, 0, 0, 658, 0, 0, 1575, 101, 0, 0, 0, 1399, 0, 0,
782, 3054, 0, 0, 0, 0, 73, 0, 4, 0, 2300, 0, 212, 1217, 0, 0,
0, 680, 509, 498, 701, 520, 0, 0, 2111, 2885, 0, 1471, 424, 824, 0, 0,
0, 0, 1325, 0, 0, 0, 1697, 2443, 1076, 1630, 8, 1963, 0, 0, 563, 3013,
0, 0, 3161, 2207, 0, 0, 729, 0, 845, 667, 0, 0, 522, 0, 766, 0,
991, 3074, 2716, 2969, 1375, 0, 0, 0, 0, 3006, 273, 0, 0, 904, 275, 0,
2320, 0, 0, 1365, 905, 720, 627, 0, 0, 1401, 1100, 0, 1509, 0, 38, 0,
3148, 0, 0, 0, 249, 0, 0, 0, 1085, 281, 2243, 0, 315, 0, 0, 1172,
0, 0, 0, 1088, 1517, 759, 2866, 0, 0, 0, 1293, 1974, 2572, 0, 1472, 0,
86, 1416, 0, 1727, 114, 623, 1339, 1011, 3, 3203, 888, 2269, 268, 0, 679, 0,
1231, 0, 1211, 921, 340, 1222, 0, 0, 0, 2686, 0, 1634, 0, 1594, 0, 664,
0, 3086, 0, 1142, 911, 0, 836, 1155, 2773, 1536, 1800, 1394, 495, 0, 0, 2977,
0, 0, 989, 296, 266, 0, 0, 522, 0, 1380, 994, 1327, 0, 1794, 987, 0,
2402, 84, 0, 0, 3038, 0, 1163, 2073, 425, 0, 0, 755, 0, 1570, 0, 895,
0, 2186, 0, 51, 392, 0, 0, 617, 0, 0, 256, 0, 0, 0, 0, 0,
0, 631, 3142, 521, 2385, 2707, 0, 614, 3133, 0, 2818, 0, 0, 2522, 0, 1029,
162, 0, 0, 1224, 1218, 0, 1445, 0, 1483, 992, 628, 1284, 0, 632, 183, 0,
0, 1845, 1232, 3168, 2066, 2553, 0, 0, 0, 2826, 1495, 2032, 0, 2884, 1153, 602,
0, 823, 1448, 1601, 2244, 33, 1979, 0, 93, 0, 0, 0, 2184, 2933, 0, 1416,
1356, 210, 0, 1300, 0, 0, 0, 0, 1762, 2710, 2262, 0, 1089, 0, 1305, 2904,
1257, 1744, 0, 703, 1094, 1398, 0, 2550, 1656, 3145, 0, 1392, 1802, 0, 0, 1081,
866, 932, 1249, 0, 162, 416, 83, 42, 0, 2704, 2689, 0, 0, 0, 1800, 0,
31, 97, 0, 65, 738, 434, 0, 0, 878, 0, 0, 0, 2466, 1019, 0, 0,
3047, 0, 0, 0, 1187, 792, 0, 734, 2781, 1182, 0, 397, 2959, 908, 0, 1296,
0, 0, 0, 2445, 1608, 190, 578, 0, 860, 0, 0, 258, 2765, 0, 0, 935,
0, 0, 0, 0, 769, 655, 0, 1746, 0, 0, 3094, 1571, 1164, 0, 0, 40,
1040, 437, 0, 93, 0, 1079, 2208, 0, 0, 1063, 3119, 0, 1109, 1135, 2512, 0,
0, 489, 0, 568, 3181, 2263, 1243, 3113, 0, 0, 397, 0, 0, 0, 0, 0,
267, 115, 2498, 1167, 583, 1654, 806, 0, 2534, 264, 0, 0, 0, 92, 218, 0,
0, 7, 0, 0, 180, 0, 1239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1563, 1452, 2734, 790, 2687, 0, 1613, 2930, 0, 1770, 2508, 0, 840, 1695, 881, 2102,
2997, 0, 763, 1075, 802, 473, 934, 1757, 0, 0, 3095, 0, 0, 1654, 0, 576,
358, 2230, 0, 0, 1014, 0, 0, 193, 2930, 3126, 0, 1044, 2263, 1766, 87, 1069,
471, 547, 263, 830, 1314, 58, 163, 2821, 0, 198, 0, 2403, 1528, 2865, 0, 826,
0, 0, 206, 0, 2592, 1156, 0, 25, 1056, 3047, 2937, 0, 1452, 1814, 1519, 0,
0, 0, 2025, 1113, 305, 0, 46, 0, 2218, 1248, 3063, 0, 281, 954, 124, 0,
94, 383, 2078, 523, 2425, 43, 0, 552, 0, 0, 2589, 0, 0, 1162, 2884, 181,
1766, 0, 2608, 0, 0, 936, 445, 104, 0, 0, 814, 0, 0, 0, 0, 0,
647, 451, 1025, 1001, 1236, 2275, 1180, 0, 0, 0, 1578, 1183, 171, 0, 2602, 1436,
0, 0, 0, 300, 0, 0, 596, 0, 1252, 1318, 2538, 1070, 435, 832, 0, 1317,
257, 3014, 1181, 493, 39, 540, 768, 0, 1040, 308, 492, 0, 0, 0, 2442, 0,
0, 1464, 1394, 0, 0, 1007, 0, 2657, 0, 0, 709, 1311, 0, 1237, 0, 0,
0, 0, 0, 1552, 659, 959, 883, 0, 241, 1301, 2755, 0, 0, 3137, 0, 0,
0, 1476, 13, 395, 0, 1916, 0, 0, 518, 0, 545, 2529, 0, 0, 0, 2965,
1111, 385, 912, 2879, 0, 148, 1283, 325, 0, 2659, 781, 0, 235, 0, 341, 0,
2833, 0, 0, 2066, 1100, 608, 0, 2918, 2971, 3182, 0, 451, 1703, 1705, 815, 142,
2462, 282, 0, 0, 1621, 501, 0, 365, 327, 0, 373, 1344, 0, 762, 1473, 525,
3094, 0, 0, 0, 0, 1173, 0, 0, 789, 2341, 2974, 0, 0, 1236, 3106, 2543,
500, 2526, 1327, 973, 0, 694, 0, 2400, 2442, 1090, 130, 0, 2047, 0, 511, 0,
620, 412, 0, 409, 942, 1193, 0, 3108, 1436, 508, 0, 1041, 1244, 722, 0, 1206,
155, 2007, 374, 401, 13, 146, 622, 1276, 1018, 0, 0, 0, 1418, 1541, 0, 0,
230, 0, 715, 358, 2305, 1057, 286, 0, 2675, 0, 2837, 1282, 0, 587, 0, 841,
3139, 0, 1643, 0, 912, 0, 580, 1503, 0, 0, 69, 2560, 0, 0, 543, 90,
80, 0, 0, 471, 313, 0, 0, 0, 0, 0, 0, 2621, 1547, 2913, 0, 63,
1078, 384, 2778, 1182, 2878, 11, 0, 1108, 1542, 0, 0, 914, 1443, 0, 2337, 1529,
0, 626, 0, 972, 0, 813, 0, 225, 1047, 1322, 1155, 1864, 510, 308, 0, 0,
456, 0, 422, 2906, 758, 0, 2102, 425, 1426, 686, 0, 748, 752, 1614, 406, 86,
519, 299, 0, 0, 161, 1362, 643, 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, 46, 0, 0, 0, 124, 0, 0, 0, 291, 0, 204, 0, 0, 230, 0, 0, 0, 0,
48, 0, 0, 0, 0, 0, 152, 153, 0, 60, 0, 227, 127, 0, 0, 161, 0, 0, 53,
0, 265, 0, 241, 0, 160, 155, 0, 0, 46, 22, 0, 106, 0, 147, 21, 0, 29, 0,
0, 0, 0, 84, 23, 16, 142, 177, 0, 18, 0, 23, 60, 255, 142, 135, 59, 225, 53,
35, 0, 0, 129, 142, 122, 0, 32, 0, 0, 75, 0, 0, 136, 291, 68, 0, 0, 0,
19, 64, 208, 0, 238, 280, 176, 116, 80, 81, 108, 0, 201, 45, 0, 0, 57, 268, 3,
277, 0, 39, 0, 31, 14, 0, 57, 181, 93, 277, 146, 0, 146, 153, 0, 0, 0, 158,
282, 0, 0, 65, 238, 158, 0, 73, 276, 0, 0, 185, 136, 0, 0, 0, 179, 0, 38,
0, 39, 0, 166, 88, 57, 0, 232, 0, 0, 57, 0, 80, 0, 0, 30, 0, 88, 0,
0, 75, 0, 105, 0, 9, 182, 0, 55, 0, 192, 21, 0, 0, 153, 76, 269, 0, 0,
125, 86, 0, 193, 279, 0, 0, 0, 128, 2, 0, 99, 0, 13, 64, 0, 28, 58, 67,
0, 117, 159, 0, 0, 5, 29, 0, 56, 186, 54, 0, 254, 180, 84, 287, 0, 117, 0,
204, 39, 5, 0, 0, 44, 151, 0, 0, 254, 0, 96, 136, 194, 152, 0, 166, 112, 87,
0, 0, 0, 0, 137, 0, 62, 15, 0, 0, 41, 274, 90, 236, 110, 0, 0, 118, 246,
273, 227, 0, 133, 0, 266, 0, 3, 0, 0, 95, 277, 89, 151, 156, 218, 282, 0, 0,
0, 0, 29, 54, 0, 126, 57};
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