blob: 98c793a0df140cc97d68e9df08838c035e876616 [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 2019 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"
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[] = {2324, 3570, 3888, 2418, 2383, 3870, 121, 2164, 476, 3290,
3760, 2253, 1201, 3621, 412, 3171, 167, 3120, 3068, 3179,
2664, 641, 656, 851, 2976, 2758, 1691, 3053, 2715, 239,
441, 2110, 418, 2258, 2888, 2486, 37};
constexpr int mangledkT2[] = {732, 3306, 900, 3331, 2519, 3385, 2162, 54, 3709, 2280,
1793, 1837, 2274, 3142, 1271, 1722, 765, 1930, 3122, 171,
3406, 3407, 759, 3634, 647, 645, 1347, 3761, 1022, 1840,
2108, 3928, 1242, 2643, 3369, 2269, 895};
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, 3902, 0,
0, 0, 0, 264, 3392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3741, 0,
0, 0, 0, 392, 0, 0, 477, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3159, 0, 0, 0, 0, 0, 495, 0, 3546, 0, 0, 1571, 490, 0, 0, 0,
0, 0, 0, 2236, 3717, 0, 0, 0, 0, 0, 0, 2282, 2101, 0, 2889, 0,
0, 0, 2409, 0, 0, 0, 0, 0, 0, 0, 2022, 0, 0, 2539, 0, 3741,
0, 0, 1831, 764, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 3891, 0, 0, 0, 0, 2481, 0, 0, 268, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 332, 0, 0, 1532, 3509, 3579, 0, 1446,
0, 1669, 0, 1017, 0, 0, 0, 0, 0, 0, 0, 0, 3186, 2727, 0, 1869,
0, 0, 0, 0, 0, 0, 0, 824, 3762, 2482, 0, 0, 2124, 0, 0, 1722,
0, 0, 0, 0, 0, 3442, 0, 0, 0, 0, 0, 1674, 0, 0, 3440, 3356,
0, 3699, 0, 1596, 0, 0, 2667, 0, 359, 0, 0, 0, 0, 0, 0, 405,
1051, 1440, 0, 0, 0, 3687, 0, 2676, 0, 0, 0, 3327, 0, 0, 625, 2116,
3415, 0, 0, 0, 0, 0, 723, 1443, 0, 0, 0, 0, 0, 3605, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1113, 0, 0, 0, 0, 0, 267, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 374, 0,
0, 1662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3990, 0, 0, 1443,
152, 0, 1018, 707, 0, 3202, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0,
0, 0, 0, 2641, 0, 585, 3479, 0, 0, 1793, 851, 2757, 0, 0, 2965, 3464,
0, 447, 748, 0, 0, 0, 0, 2403, 0, 0, 0, 0, 0, 0, 1916, 0,
0, 0, 3108, 1330, 3612, 921, 1577, 283, 0, 145, 3648, 2045, 0, 1618, 0, 1722,
2, 3421, 0, 3297, 0, 715, 0, 2125, 0, 1391, 3712, 0, 0, 0, 0, 976,
0, 0, 3195, 0, 0, 3570, 0, 3505, 0, 0, 0, 0, 0, 3910, 3417, 0,
1962, 0, 759, 0, 0, 1135, 2536, 2961, 0, 0, 1612, 0, 0, 0, 0, 117,
0, 0, 0, 0, 0, 849, 0, 0, 0, 701, 1559, 0, 146, 0, 575, 0,
0, 0, 0, 0, 33, 0, 1630, 0, 0, 1283, 0, 3633, 0, 0, 438, 0,
25, 3082, 0, 0, 46, 0, 211, 0, 0, 0, 666, 0, 0, 3766, 962, 0,
2601, 0, 107, 0, 2225, 1728, 0, 0, 123, 0, 133, 0, 0, 0, 0, 0,
0, 2783, 0, 1123, 0, 0, 0, 1021, 0, 0, 0, 2675, 0, 0, 0, 19,
1915, 0, 0, 0, 0, 0, 0, 0, 3206, 0, 2446, 0, 0, 0, 0, 0,
0, 0, 206, 0, 0, 0, 0, 866, 0, 0, 3134, 0, 3915, 0, 0, 0,
0, 517, 0, 1312, 0, 0, 0, 2213, 0, 0, 3560, 0, 0, 0, 2943, 0,
0, 0, 0, 1302, 1375, 301, 0, 305, 0, 645, 3814, 0, 1755, 3767, 0, 3307,
2684, 0, 685, 0, 0, 0, 0, 294, 1068, 0, 3349, 1240, 1102, 451, 0, 0,
0, 0, 0, 0, 956, 3207, 0, 0, 1128, 314, 2708, 166, 218, 0, 2202, 0,
0, 3970, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0,
1103, 0, 1425, 234, 2109, 0, 3322, 0, 678, 0, 0, 0, 0, 3909, 0, 3765,
0, 0, 0, 0, 0, 693, 0, 0, 0, 0, 746, 0, 0, 0, 0, 3176,
0, 0, 0, 0, 1514, 3835, 0, 0, 0, 0, 0, 71, 0, 3635, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 782, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 2992, 0, 0, 0, 0, 0, 129,
0, 1399, 4003, 0, 0, 0, 1424, 2962, 0, 0, 265, 0, 0, 0, 0, 3233,
0, 0, 0, 0, 476, 1507, 0, 0, 0, 3160, 2873, 1991, 0, 0, 0, 1548,
0, 903, 0, 0, 0, 2942, 0, 3960, 0, 4011, 3164, 442, 0, 2685, 2655, 2557,
0, 0, 0, 0, 39, 1188, 2352, 0, 1402, 3872, 2087, 264, 283, 1970, 0, 2154,
539, 1920, 3139, 0, 0, 556, 0, 0, 2623, 920, 405, 2402, 0, 3886, 0, 647,
464, 0, 76, 955, 371, 579, 2455, 0, 0, 1975, 0, 209, 2051, 0, 0, 0,
1328, 0, 3578, 68, 0, 0, 1151, 0, 0, 0, 3734, 0, 612, 0, 0, 0,
1955, 3378, 0, 2571, 0, 0, 3344, 0, 941, 2924, 765, 0, 3040, 2312, 412, 868,
0, 0, 0, 898, 0, 222, 1718, 0, 0, 0, 0, 0, 1513, 1833, 0, 0,
0, 0, 0, 2078, 3211, 367, 344, 3873, 276, 0, 741, 1347, 0, 1150, 0, 981,
1040, 0, 3067, 0, 0, 1934, 1416, 3567, 3154, 702, 0, 1745, 2874, 1077, 3665, 68,
0, 3788, 0, 0, 3418, 0, 873, 1274, 2025, 1900, 0, 0, 3924, 1120, 244, 840,
3573, 19, 0, 0, 0, 1019, 0, 0, 3895, 0, 0, 2141, 0, 0, 0, 0,
1227, 0, 3691, 0, 0, 1035, 0, 3778, 1982, 0, 0, 0, 0, 107, 0, 0,
0, 0, 0, 925, 0, 0, 0, 0, 1653, 1064, 52, 0, 1462, 1097, 0, 0,
0, 2923, 0, 492, 87, 1641, 2680, 1510, 0, 2718, 0, 0, 594, 0, 650, 487,
0, 0, 2729, 0, 1075, 0, 3807, 0, 0, 3961, 0, 0, 1313, 1690, 0, 0,
2405, 0, 1253, 1199, 3748, 0, 1432, 0, 0, 0, 399, 3372, 1088, 0, 3807, 0,
1662, 0, 0, 0, 1744, 0, 2451, 1625, 2313, 2201, 1829, 317, 0, 0, 120, 0,
52, 0, 0, 1028, 0, 0, 0, 2282, 33, 715, 0, 161, 552, 0, 3115, 1086,
0, 0, 0, 1654, 1349, 0, 0, 0, 1029, 1902, 0, 2125, 2186, 3922, 784, 0,
0, 0, 2297, 0, 0, 1450, 0, 0, 2759, 2039, 1325, 0, 3051, 0, 0, 1304,
0, 3924, 0, 0, 1444, 755, 3675, 3720, 0, 0, 0, 1976, 2679, 3793, 0, 0,
3527, 0, 2023, 744, 3760, 0, 0, 0, 0, 0, 0, 496, 1174, 3554, 1935, 1247,
0, 0, 0, 0, 0, 0, 0, 1247, 0, 0, 2556, 289, 2210, 1120, 1382, 750,
0, 1539, 0, 2145, 0, 0, 1875, 0, 0, 1904, 0, 0, 289, 3116, 0, 0,
0, 0, 0, 0, 0, 0, 1174, 1348, 3987, 1317, 1434, 0, 662, 668, 3001, 0,
0, 143, 508, 0, 896, 0, 838, 0, 0, 1461, 3248, 1887, 2619, 0, 0, 0,
0, 1599, 0, 0, 3997, 0, 9, 0, 603, 618, 1242, 3980, 0, 0, 0, 1324,
0, 0, 0, 0, 51, 0, 193, 624, 2309, 0, 3217, 2123, 1682, 3969, 0, 1981,
0, 863, 2086, 0, 0, 0, 0, 2363, 0, 1231, 2597, 2713, 0, 3084, 0, 3475,
0, 0, 0, 91, 0, 3859, 0, 0, 381, 2625, 0, 3968, 0, 165, 0, 456,
3777, 1216, 2235, 395, 0, 204, 0, 0, 0, 1936, 0, 299, 827, 3567, 3165, 0,
509, 162, 0, 3551, 1464, 0, 0, 2997, 102, 363, 0, 2106, 0, 1702, 1775, 3157,
0, 2529, 0, 3676, 297, 0, 0, 0, 0, 0, 1697, 617, 0, 0, 282, 0,
2304, 0, 1439, 0, 1563, 1481, 1942, 1367, 74, 538, 0, 3827, 2021, 0, 0, 0,
0, 0, 300, 0, 0, 3072, 3368, 0, 104, 2379, 0, 854, 2958, 1473, 2014, 0,
0, 4011, 0, 1211, 0, 0, 3307, 134, 1350, 0, 0, 0, 0, 0, 0, 0,
2562, 0, 0, 0, 455, 0, 3345, 0, 917, 0, 0, 929, 0, 1796, 0, 0,
796, 0, 2271, 2751, 0, 0, 0, 186, 578, 0, 1780, 3751, 0, 0, 0, 1393,
361, 2841, 3964, 2613, 2617, 0, 0, 0, 2008, 0, 1008, 0, 228, 0, 9, 2911,
3552, 0, 1532, 3140, 3634, 1274, 0, 6, 0, 436, 0, 208, 1026, 699, 0, 0,
0, 1099, 0, 2819, 0, 0, 0, 0, 0, 3840, 1688, 3765, 0, 158, 1224, 2826,
0, 0, 0, 729, 0, 835, 0, 3458, 0, 0, 0, 27, 1599, 2661, 1955, 0,
3742, 2708, 0, 1763, 0, 1063, 0, 777, 0, 788, 565, 0, 1617, 707, 0, 0,
2001, 411, 1532, 0, 0, 1710, 3468, 0, 1059, 1492, 0, 570, 0, 0, 0, 0,
3491, 0, 1254, 3023, 0, 3830, 0, 0, 393, 0, 0, 3942, 3390, 988, 0, 3759,
1426, 232, 3969, 1482, 2816, 2587, 484, 0, 0, 0, 1751, 0, 1495, 0, 0, 1444,
1405, 362, 2099, 0, 0, 0, 0, 3461, 656, 0, 503, 0, 0, 2848, 0, 3947,
1282, 3393, 2021, 0, 0, 0, 851, 0, 0, 0, 3558, 389, 0, 0, 0, 1054,
518, 2742, 0, 2758, 998, 2050, 1399, 0, 0, 0, 0, 3258, 0, 2410, 0, 0,
1995, 2288, 3814, 0, 336, 3876, 0, 641, 1543, 0, 3284, 905, 0, 0, 995, 0,
0, 0, 1148, 0, 0, 881, 0, 1426, 470, 2068, 0, 0, 0, 0, 0, 3205,
664, 1838, 2145, 924, 1217, 840, 0, 24, 0, 437, 724, 3180, 1290, 2747, 0, 2064,
3028, 670, 0, 498, 1306, 0, 611, 2080, 0, 0, 0, 0, 1893, 2553, 0, 869,
872, 1093, 591, 1428, 414, 0, 70, 3834, 0, 0, 200, 0, 0, 0, 0, 293,
0, 3391, 3089, 0, 0, 663, 3657, 3881, 0, 0, 469, 1334, 0, 1933, 253, 1387,
2969, 0, 1076, 1238, 0, 0, 0, 0, 1479, 1693, 532, 2937, 133, 1350, 0, 0,
3695, 658, 0, 1220, 0, 1462, 1698, 0, 1406, 2730, 0, 0, 0, 0, 1873, 0,
682, 0, 3697, 3413, 1669, 0, 0, 866, 0, 3054, 3269, 0, 3841, 0, 3895, 2225,
1312, 434, 0, 359, 3647, 647, 0, 1816, 0, 1172, 1889, 0, 0, 0, 0, 0,
1805, 3443, 0, 0, 2732, 1236, 0, 2897, 1133, 919, 0, 0, 0, 0, 3321, 0,
64, 0, 0, 2276, 1647, 0, 0, 508, 0, 0, 0, 0, 0, 4016, 1974, 1140,
0, 0, 0, 576, 970, 1531, 0, 0, 3547, 1788, 0, 2340, 0, 0, 3885, 85,
0, 0, 0, 0, 0, 2675, 0, 0, 215, 0, 0, 0, 1976, 2403, 1141, 415,
2740, 0, 266, 1531, 0, 0, 402, 0, 988, 1774, 1542, 205, 1292, 1593, 337, 2006,
749, 0, 0, 0, 0, 0, 49, 2688, 742, 1343, 669, 1138, 528, 1498, 182, 0,
1296, 3909, 359, 50, 0, 310, 2463, 0, 0, 2436, 1891, 322, 396, 0, 0, 0,
1971, 2978, 2176, 3732, 0, 0, 0, 6, 3137, 3203, 0, 108, 1050, 0, 0, 0,
0, 953, 1154, 0, 0, 689, 1257, 311, 2567, 2131, 1487, 0, 3180, 1308, 360, 0,
0, 3413, 3380, 3495, 1436, 1018, 3332, 318, 2619, 0, 485, 263, 0, 0, 0, 0,
0, 949, 1286, 0, 3119, 0, 543, 3012, 0, 0, 0, 0, 826, 110, 2605, 0,
2683, 0, 2225, 3692, 267, 2693, 336, 555, 665, 0, 0, 1448, 0, 0, 1939, 0,
0, 1980, 0, 2262, 3961, 0, 86, 0, 0, 421, 2520, 3458, 817, 3975, 2679, 2961,
1093, 287, 2110, 1069, 0, 3070, 0, 258, 3303, 0, 0, 0, 1708, 0, 2210, 0,
0, 0, 0, 397, 902, 2677, 918, 0, 728, 0, 2744, 1108, 0, 2456, 0, 0,
0, 2153, 924, 1147, 124, 3687, 335, 0, 374, 0, 1637, 1243, 1380, 0, 1600, 1451,
436, 0, 598, 0, 0, 349, 0, 0, 0, 1823, 0, 0, 0, 0, 3192, 304,
1710, 0, 0, 9, 443, 1143, 3491, 588, 0, 119, 4000, 0, 401, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1807, 1047, 61, 2442, 0, 612, 3005, 663, 45, 0,
471, 915, 0, 0, 1758, 1548, 0, 0, 1007, 0, 0, 0, 1359, 2621, 1793, 142,
913, 2738, 69, 0, 0, 3622, 0, 2179, 0, 0, 472, 928, 282, 0, 0, 979,
0, 840, 3889, 0, 0, 2584, 0, 2738, 1149, 719, 679, 1280, 424, 3106, 0, 2143,
856, 547, 0, 0, 3458, 428, 0, 2109, 2395, 0, 1320, 2224, 0, 0, 0, 0,
1993, 0, 31, 0, 1999, 0, 1471, 0, 0, 2533, 1084, 1031, 0, 242, 0, 0,
0, 286, 0, 0, 1224, 348, 2918, 0, 1930, 1949, 847, 0, 547, 0, 2251, 0,
235, 2594, 653, 510, 95, 1438, 0, 2129, 0, 0, 0, 0, 0, 255, 1573, 3691,
0, 2444, 0, 1330, 0, 108, 0, 1147, 64, 1296, 970, 771, 1078, 888, 1703, 1447,
697, 0, 0, 2665, 3261, 0, 1662, 0, 2549, 1829, 3665, 3156, 0, 0, 3624, 0,
0, 0, 0, 399, 382, 3842, 3493, 1668, 1092, 0, 503, 290, 3294, 1722, 4017, 0,
1600, 0, 0, 950, 567, 0, 0, 1457, 0, 0, 0, 1386, 3002, 1557, 3744, 605,
3013, 3906, 0, 247, 0, 0, 0, 3162, 1738, 2117, 1392, 0, 1912, 806, 0, 802,
1209, 2253, 0, 0, 0, 0, 0, 1509, 2112, 0, 3467, 0, 0, 1468, 0, 3344,
2120, 0, 840, 1026, 0, 1650, 238, 0, 1429, 1968, 0, 1456, 3555, 3765, 938, 3662,
0, 2246, 2027, 718, 0, 0, 0, 0, 2748, 0, 3125, 0, 681, 1801, 0, 3833,
581, 0, 933, 2636, 0, 759, 1514, 0, 1627, 1353, 222, 282, 0, 1814, 0, 1506,
0, 783, 693, 2370, 1864, 0, 3086, 0, 0, 537, 868, 0, 103, 0, 0, 0,
0, 3849, 3773, 0, 0, 1757, 0, 1545, 1313, 0, 85, 36, 0, 0, 1971, 0,
1513, 3225, 1408, 1164, 1886, 0, 940, 3699, 2076, 0, 1280, 2727, 0, 0, 0, 0,
0, 0, 3011, 407, 996, 0, 759, 1838, 1275, 1120, 0, 0, 2034, 0, 0, 2121,
0, 258, 2426, 0, 0, 683, 0, 0, 0, 0, 25, 0, 855, 1373, 0, 2114,
1102, 0, 2776, 917, 3731, 1119, 3353, 1869, 3813, 0, 2178, 0, 0, 0, 0, 0,
0, 3575, 0, 0, 1073, 1488, 0, 0, 0, 0, 0, 2834, 3635, 0, 3972, 0,
0, 1235, 0, 0, 1069, 2097, 0, 309, 1426, 1964, 1725, 1056, 3700, 0, 0, 504,
0, 1004, 0, 3829, 279, 123, 2600, 1548, 955, 0, 2737, 1544, 0, 2881, 3319, 658,
0, 0, 0, 1541, 1716, 0, 0, 0, 0, 0, 1644, 0, 4016, 1743, 1803, 3718,
1671, 3874, 2028, 1585, 0, 0, 0, 1574, 1535, 3268, 517, 374, 0, 0, 3787, 0,
1420, 0, 1215, 0, 0, 1043, 3621, 0, 598, 0, 896, 1347, 0, 540, 0, 0,
3832, 0, 429, 1952, 750, 1773, 0, 1038, 0, 0, 1723, 1195, 0, 1093, 260, 3628,
0, 2118, 0, 214, 0, 548, 0, 3107, 303, 198, 3001, 0, 1593, 0, 2725, 0,
0, 3117, 3300, 0, 450, 1029, 2937, 768, 2995, 0, 3644, 1807, 299, 0, 0, 613,
729, 0, 948, 0, 657, 0, 0, 3797, 0, 1576, 0, 59, 3535, 0, 2040, 0,
2524, 0, 0, 0, 1635, 1048, 0, 3783, 3985, 2985, 3954, 0, 258, 744, 1244, 3900,
0, 906, 53, 0, 165, 17, 3573, 1538, 0, 0, 0, 0, 3845, 2431, 0, 0,
2096, 0, 1592, 880, 2718, 0, 41, 0, 66, 0, 3212, 2634, 484, 1045, 1213, 1834,
0, 423, 0, 498, 27, 3972, 2285, 1322, 2206, 0, 1857, 0, 2499, 1931, 0, 0,
1870, 96, 0, 1323, 0, 0, 594, 682, 0, 0, 1312, 2715, 0, 2566, 1050, 0,
918, 170, 1085, 0, 49, 1053, 1894, 0, 0, 333, 3904, 0, 754, 331, 2666, 2559,
0, 2165, 3565, 3885, 3773, 0, 2672, 2585, 1414, 1076, 869, 0, 2170, 1072, 0, 0,
2503, 2304, 0, 2748, 1044, 987, 1267, 570, 0, 0, 0, 0, 0, 150, 0, 3567,
2423, 66, 0, 762, 0, 0, 3674, 0, 12, 3077, 0, 251, 0, 58, 0, 0,
704, 253, 0, 2787, 0, 0, 0, 562, 952, 0, 0, 3133, 0, 702, 569, 552,
0, 0, 2116, 0, 0, 1488, 1828, 292, 0, 1641, 0, 1616, 0, 0, 0, 3732,
1577, 0, 0, 0, 1332, 0, 0, 1826, 686, 772, 3809, 0, 269, 164, 264, 0,
534, 0, 1471, 2696, 0, 296, 3622, 1624, 0, 0, 3847, 608, 0, 760, 3400, 0,
3613, 0, 539, 138, 0, 0, 0, 0, 0, 0, 0, 0, 2362, 2009, 3910, 2368,
498, 2085, 632, 61, 627, 1052, 0, 3115, 2076, 0, 2271, 0, 898, 1143, 3331, 0,
3348, 1061, 1109, 295, 0, 0, 0, 0, 176, 1068, 0, 0, 0, 33, 0, 0,
0, 2904, 924, 0, 1556, 3159, 863, 0, 0, 0, 0, 3286, 2093, 1314, 561, 3244,
435, 0, 0, 3712, 0, 1230, 0, 803, 0, 0, 0, 244, 133, 0, 1927, 0,
1689, 0, 1881, 2801, 1421, 1021, 0, 0, 318, 644, 0, 1343, 0, 0, 305, 0,
707, 1932, 0, 979, 0, 373, 0, 0, 1867, 0, 0, 488, 0, 166, 41, 185,
1910, 0, 0, 1724, 0, 1975, 0, 2029, 1686, 1607, 1358, 0, 0, 0, 0, 610,
0, 0, 3240, 0, 2226, 0, 4003, 0, 1431, 0, 3783, 0, 483, 2608, 0, 1778,
0, 0, 608, 1671, 8, 0, 0, 0, 30, 0, 244, 0, 833, 0, 0, 3595,
2899, 2378, 0, 2089, 2528, 0, 0, 1217, 0, 0, 999, 2868, 1923, 0, 1914, 0,
0, 121, 832, 1779, 535, 0, 0, 0, 0, 1882, 2904, 0, 0, 0, 636, 2251,
1238, 206, 0, 0, 40, 0, 613, 1118, 3759, 0, 0, 0, 3088, 1083, 2763, 0,
1306, 0, 1971, 2012, 0, 602, 31, 1568, 1310, 1529, 0, 2856, 2687, 3451, 1961, 690,
3288, 0, 1352, 852, 1127, 0, 3661, 3301, 0, 0, 0, 1963, 0, 274, 2182, 864,
1709, 1872, 811, 2712, 0, 0, 0, 0, 2919, 0, 4016, 0, 2047, 1855, 1663, 107,
3335, 40, 1956, 0, 1648, 2066, 0, 0, 270, 3350, 1739, 2818, 1819, 782, 139, 90,
126, 0, 0, 0, 3964, 2025, 3571, 2108, 1486, 0, 3334, 0, 0, 0, 291, 0,
3163, 0, 0, 1033, 0, 151, 0, 0, 453, 0, 0, 174, 0, 643, 1078, 0,
1227, 416, 1376, 77, 832, 0, 905, 140, 1232, 136, 0, 55, 1401, 0, 0, 0,
0, 3012, 0, 0, 0, 1310, 1914, 2608, 261, 756, 0, 3623, 223, 521, 1926, 0,
3748, 0, 0, 288, 1428, 200, 0, 1506, 528, 0, 0, 0, 1983, 0, 637, 1557,
0, 3820, 1832, 1669, 0, 1596, 0, 1588, 1454, 0, 0, 0, 2429, 3381, 588, 559,
0, 388, 1044, 0, 2065, 2043, 1279, 0, 926, 0, 1374, 0, 0, 3479, 258, 0,
0, 1070, 3431, 2042, 0, 0, 603, 0, 2822, 505, 580, 1696, 3987, 1171, 967, 362,
1379, 0, 98, 664, 2728, 3841, 0, 0, 1347, 0, 2163, 0, 921, 2592, 439, 3454,
0, 225, 125, 3823, 803, 1046, 2578, 478, 0, 0, 0, 772, 0, 1466, 0, 2341,
736, 1534, 0, 1400, 1218, 1515, 1200, 165, 492, 2100, 2529, 1436, 509, 129, 3601, 3347,
0, 0, 3998, 0, 81, 1198, 1014, 936, 0, 898, 1427, 0, 807, 1057, 0, 0,
2676, 0, 168, 3934, 0, 360, 2476, 2012, 1252, 826, 2730, 0, 1205, 2165, 0, 997,
0, 3556, 1966, 1711, 980, 349, 507, 819, 3844, 2866, 490, 354, 2105, 0, 904, 1691,
375, 0, 0, 403, 2015, 527, 0, 0, 0, 0, 542, 1454, 2754, 1155, 0, 0,
0, 1972, 3563, 194, 0, 0, 130, 202, 1866, 653, 60, 0, 0, 3185, 2030, 3433,
762, 2046, 1167, 0, 3699, 0, 0, 0, 3999, 0, 0, 0, 1686, 1334, 0, 2140,
399, 3680, 137, 0, 2207, 3748, 1332, 448, 0, 0, 0, 491, 820, 0, 0, 2305,
402, 1016, 765, 3777, 0, 458, 2625, 252, 0, 0, 306, 2974, 0, 794, 844, 947,
768, 0, 0, 0, 0, 672, 3771, 0, 1888, 1125, 1297, 314, 1390, 216, 0, 0,
0, 3905, 3170, 915, 802, 0, 1570, 233, 1135, 3396, 0, 195, 784, 0, 738, 1426,
969, 2463, 463, 126, 436, 926, 1317, 3997, 0, 0, 895, 0, 1112, 772, 0, 325,
1447, 0, 0, 205, 0, 1272, 825, 0, 0, 1448, 0, 1890, 0, 3334, 0, 3721,
0, 2076, 0, 515, 0, 0, 0, 3099, 2151, 0, 3468, 0, 0, 30, 0, 1661,
1382, 0, 907, 948, 0, 0, 1115, 0, 1390, 0, 4003, 1493, 3119, 1063, 1867, 0,
1923, 0, 876, 3783, 817, 846, 1642, 1701, 3743, 0, 0, 0, 0, 2082, 1122, 1679,
3983, 0, 227, 1530, 0, 1289, 0, 0, 0, 0, 0, 1336, 0, 0, 0, 2695,
0, 406, 1281, 0, 973, 964, 3248, 2035, 0, 975, 0, 0, 533, 0, 3463, 335,
0, 1100, 0, 1073, 251, 0, 0, 0, 2464, 1000, 0, 0, 0, 104, 895, 0,
1666, 0, 0, 0, 1270, 3914, 2011, 0, 703, 1034, 0, 366, 1636, 1207, 2593, 3672,
2186, 0, 1738, 2114, 387, 658, 447, 2663, 1033, 1192, 2079, 0, 1616, 1369, 3104, 779,
0, 1196, 2496, 0, 2222, 2434, 2470, 1268, 0, 1953, 1294, 1572, 0, 0, 1493, 2890,
2519, 0, 2837, 0, 3485, 0, 0, 1420, 3939, 1033, 2620, 491, 0, 0, 0, 0,
1415, 0, 1495, 2516, 0, 269, 0, 3303, 2411, 2282, 3753, 2209, 534, 0, 1027, 0,
324, 1742, 2081, 0, 1899, 0, 13, 3115, 4005, 0, 0, 382, 0, 3892, 3407, 0,
3885, 1783, 0, 1328, 1643, 1528, 2260, 483, 0, 417, 3101, 0, 0, 2492, 286, 383,
0, 188, 0, 0, 0, 3776, 0, 1016, 932, 1041, 2095, 0, 3696, 0, 0, 0,
0, 1918, 0, 1713, 0, 1970, 1691, 3397, 1531, 0, 1638, 0, 0, 593, 0, 1337,
239, 2292, 0, 2173, 485, 947, 3952, 346, 776, 0, 0, 580, 829, 1353, 0, 3180,
0, 3448, 728, 2326, 0, 0, 0, 1578, 3997, 0, 1329, 2092, 2354, 1652, 0, 0,
0, 2175, 679, 493, 3813, 0, 3460, 3525, 1072, 0, 1490, 1926, 1897, 1815, 1838, 1,
0, 692, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 655, 3199, 0, 0,
17, 1089, 0, 718, 1085, 237, 3826, 0, 2005, 0, 0, 775, 0, 315, 1315, 0,
753, 1110, 0, 2443, 2031, 3187, 367, 0, 1873, 113, 63, 0, 1771, 3987, 0, 0,
346, 113, 993, 333, 3159, 0, 1727, 2059, 1709, 1750, 3520, 0, 0, 3974, 284, 2693,
328, 0, 1648, 2944, 1497, 399, 1572, 0, 3550, 575, 2523, 0, 3717, 1153, 0, 2857,
2275, 191, 1588, 0, 1736, 2904, 597, 0, 0, 192, 2300, 0, 0, 511, 136, 0,
0, 3709, 2729, 0, 3529, 3580, 183, 0, 0, 828, 0, 2737, 820, 0, 1608, 0,
0, 0, 2769, 2752, 817, 1290, 1903, 180, 785, 633, 0, 2229, 0, 3586, 1269, 0,
2004, 36, 1568, 0, 341, 0, 0, 0, 0, 846, 0, 1843, 1380, 11, 0, 1057,
0, 885, 176, 587, 1874, 2328, 0, 1030, 3391, 2073, 686, 0, 0, 339, 1897, 39,
0, 3124, 0, 0, 0, 0, 721, 2384, 0, 0, 455, 0, 0, 0, 0, 692,
3600, 3420, 1022, 1288, 533, 0, 1624, 3401, 0, 0, 0, 0, 3480, 3777, 0, 1595,
0, 0, 2035, 0, 805, 275, 1324, 3571, 3003, 0, 842, 786, 692, 3251, 2871, 1938,
885, 0, 1584, 0, 0, 272, 0, 2096, 204, 1022, 1615, 1443, 0, 1013, 0, 3531,
1224, 1518, 630, 2755, 1542, 717, 0, 0, 0, 764, 3510, 0, 19, 0, 346, 57,
3972, 2515, 3978, 0, 265, 3235, 906, 0, 0, 3443, 10, 0, 254, 3965, 742, 2045,
0, 937, 0, 0, 1377, 3011, 893, 1229, 0, 568, 61, 0, 1987, 2037, 633, 737,
3203, 0, 2364, 2826, 0, 549, 508, 3905, 1678, 1869, 0, 0, 1228, 1525, 0, 0,
0, 574, 3877, 975, 0, 949, 1268, 3875, 95, 0, 2139, 0, 161, 944, 0, 1479,
2573, 3230, 659, 2553, 94, 3097, 2007, 1949, 1802, 0, 3378, 0, 0, 1755, 1573, 0,
390, 2281, 0, 3730, 1315, 2037, 613, 0, 1351, 566, 3836, 1519, 1298, 415, 1041, 213,
2271, 0, 954, 0, 1090, 0, 0, 74, 1335, 3453, 2627, 0, 1597, 3455, 2134, 2468,
1708, 913, 0, 1120, 1460, 0, 2262, 3951, 0, 1199, 3928, 3087, 1460, 0, 1890, 0,
1344, 3294, 1368, 1287, 3653, 0, 1760, 0, 172, 0, 1420, 0, 0, 220, 977, 1089,
3790, 405, 0, 2450, 3821, 0, 0, 0, 2624, 0, 3245, 589, 1501, 0, 1932, 0,
3762, 1679, 12};
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 %= 4019;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 37)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 4019;
}
constexpr int unmangledkT1[] = {300, 235, 154, 260, 346, 345, 249, 45, 233, 222, 304, 137, 74,
372, 57, 44, 310, 11, 4, 182, 54, 39, 71, 306, 218, 339};
constexpr int unmangledkT2[] = {216, 37, 310, 175, 220, 134, 156, 16, 193, 203, 314, 328, 103,
366, 369, 30, 281, 104, 218, 234, 80, 211, 111, 56, 366, 234};
constexpr int unmangledkG[] = {
0, 0, 0, 0, 72, 0, 0, 0, 0, 209, 0, 0, 346, 46, 28, 0, 250, 0, 0,
0, 0, 0, 0, 0, 162, 0, 0, 0, 87, 361, 0, 345, 0, 162, 0, 0, 81, 0,
242, 33, 0, 79, 0, 0, 0, 55, 0, 0, 0, 229, 0, 156, 133, 0, 271, 0, 0,
0, 215, 321, 312, 0, 330, 0, 0, 271, 0, 161, 0, 163, 0, 0, 0, 0, 100, 0,
59, 0, 0, 249, 316, 0, 0, 195, 378, 41, 16, 362, 0, 0, 0, 0, 0, 160, 0,
0, 274, 95, 327, 0, 85, 257, 0, 0, 144, 0, 0, 0, 0, 0, 325, 153, 97, 0,
0, 350, 0, 371, 0, 239, 0, 0, 0, 0, 57, 0, 0, 345, 0, 138, 43, 121, 0,
0, 89, 0, 0, 172, 0, 0, 0, 120, 72, 68, 332, 0, 216, 93, 0, 19, 0, 82,
13, 0, 0, 324, 0, 165, 148, 140, 287, 356, 194, 42, 76, 108, 379, 250, 0, 130, 0,
112, 23, 0, 0, 43, 0, 73, 0, 0, 0, 56, 0, 0, 117, 147, 126, 77, 173, 0,
160, 341, 239, 0, 0, 116, 75, 16, 0, 171, 34, 226, 53, 14, 357, 32, 304, 196, 0,
0, 0, 13, 0, 0, 0, 0, 190, 0, 96, 165, 0, 5, 168, 98, 37, 56, 8, 268,
0, 0, 0, 139, 0, 0, 0, 22, 0, 55, 103, 165, 145, 0, 329, 153, 65, 94, 0,
101, 0, 284, 363, 214, 87, 0, 176, 0, 0, 0, 0, 0, 97, 0, 240, 64, 105, 0,
6, 270, 275, 27, 0, 0, 160, 101, 0, 297, 0, 0, 66, 0, 0, 241, 0, 380, 33,
169, 121, 0, 351, 0, 0, 232, 0, 45, 0, 189, 83, 144, 314, 335, 0, 318, 227, 0,
331, 158, 0, 332, 0, 0, 12, 183, 73, 0, 6, 0, 271, 0, 291, 297, 0, 136, 0,
21, 283, 49, 9, 182, 0, 315, 137, 0, 118, 0, 0, 0, 0, 364, 271, 30, 0, 66,
15, 256, 122, 261, 0, 39, 0, 134, 222, 0, 30, 23, 158, 0, 42, 84, 106, 0, 0,
59, 0, 243, 70, 34, 0, 12, 152, 142, 99, 21, 297, 0, 0, 146, 0, 332, 357, 223,
0, 0};
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 %= 382;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 26)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 382;
}
}
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