blob: b7790f7b566816a29d9f3c13c18d0c54774680cf [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_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[] = {417, 3313, 3044, 680, 2508, 3561, 1073, 351, 457, 1363,
1704, 3701, 2117, 3388, 1046, 3102, 4330, 1835, 3825, 249,
345, 1171, 4152, 3215, 3212, 3745, 2872, 3795, 3526, 3916,
2870, 642, 326, 585, 2346, 2144, 2595};
constexpr int mangledkT2[] = {173, 3815, 3691, 3308, 3907, 1340, 3432, 3919, 2665, 3544,
3700, 2906, 3546, 3971, 952, 918, 2735, 3910, 3624, 3624,
689, 3012, 1300, 3916, 1468, 4198, 864, 1975, 3174, 2392,
2885, 3797, 379, 3769, 1054, 4303, 2029};
constexpr int mangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 0, 4046, 0, 0, 0, 3913, 0, 0, 0,
0, 1688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1126, 0,
0, 0, 0, 0, 0, 0, 0, 1324, 0, 0, 559, 3047, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1220, 3078, 4432, 0, 0, 0, 4398,
1246, 0, 0, 0, 2758, 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, 1024, 0,
0, 0, 0, 4156, 0, 0, 0, 0, 0, 2014, 0, 0, 0, 0, 0, 0,
3409, 1575, 0, 1860, 818, 1854, 0, 0, 2843, 0, 0, 0, 0, 0, 376, 0,
0, 0, 0, 0, 0, 0, 3906, 0, 982, 0, 0, 0, 1719, 0, 0, 0,
0, 0, 0, 0, 0, 240, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4174, 0, 0, 0,
0, 0, 296, 1398, 0, 1665, 0, 0, 67, 0, 853, 0, 0, 2957, 0, 0,
2419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1211, 0, 0, 3659, 0, 0, 0, 0, 0, 0, 0,
240, 0, 1545, 1946, 0, 0, 0, 2341, 0, 0, 0, 0, 0, 0, 2096, 0,
0, 3018, 0, 0, 0, 0, 0, 2306, 984, 14, 0, 0, 0, 3367, 0, 0,
4406, 0, 0, 0, 0, 3898, 0, 0, 354, 0, 0, 0, 0, 4386, 0, 2046,
0, 0, 0, 0, 0, 1234, 0, 1483, 0, 0, 4335, 228, 2659, 0, 526, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1896, 0, 0, 0, 0,
0, 0, 1728, 0, 0, 0, 2163, 1841, 3798, 0, 0, 0, 890, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 872, 0, 0, 0, 0, 0, 503, 0,
333, 1676, 0, 0, 4356, 2068, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
798, 0, 115, 1536, 0, 0, 0, 0, 4327, 0, 0, 0, 0, 0, 0, 0,
3513, 0, 0, 0, 0, 4035, 999, 764, 0, 0, 0, 0, 0, 0, 0, 1127,
2850, 0, 0, 0, 0, 0, 0, 0, 0, 3897, 0, 0, 0, 0, 0, 0,
0, 2732, 1387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 3079, 0, 0,
0, 1425, 0, 0, 0, 874, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1153, 0, 0, 1232, 0, 0, 0, 1208, 0, 0, 0, 0, 0, 3898, 0, 0,
0, 0, 0, 0, 0, 1706, 3200, 3292, 1993, 0, 1020, 3202, 0, 0, 0, 0,
2043, 862, 0, 3541, 0, 0, 3985, 0, 0, 0, 0, 0, 0, 75, 0, 0,
0, 0, 3555, 1345, 640, 0, 0, 0, 0, 0, 0, 0, 2041, 0, 3950, 874,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3176, 412,
0, 0, 0, 0, 4409, 0, 0, 3255, 0, 0, 0, 0, 0, 0, 0, 0,
896, 0, 0, 0, 4344, 4215, 0, 0, 3028, 0, 0, 0, 1697, 269, 0, 0,
0, 0, 1530, 0, 0, 4216, 1620, 0, 0, 0, 0, 611, 498, 0, 0, 452,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1757, 0, 0, 117, 1172,
0, 900, 4137, 0, 0, 3639, 1838, 0, 0, 793, 0, 0, 0, 0, 191, 0,
0, 0, 0, 2407, 0, 0, 0, 311, 0, 0, 0, 0, 824, 0, 1560, 0,
0, 2105, 0, 0, 1522, 4347, 0, 1445, 1601, 0, 3674, 0, 2444, 0, 0, 0,
0, 1467, 1387, 3874, 2896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2099, 0, 0, 3277, 0, 1100, 0, 0, 2418, 0, 0, 1616, 0, 3212, 0, 328,
0, 0, 0, 2574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
773, 0, 0, 0, 0, 1652, 0, 2750, 955, 719, 0, 0, 0, 0, 383, 0,
0, 0, 0, 0, 0, 0, 0, 1385, 0, 0, 84, 0, 0, 0, 3263, 0,
0, 0, 3517, 0, 0, 0, 0, 0, 1634, 0, 1931, 2758, 0, 0, 0, 0,
3887, 570, 851, 0, 0, 1408, 1789, 0, 0, 1637, 590, 0, 0, 0, 0, 891,
0, 0, 0, 2412, 0, 0, 0, 0, 0, 0, 3824, 0, 0, 131, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 909, 0, 0, 0, 0, 0, 0, 3632,
0, 0, 0, 0, 0, 876, 0, 0, 1684, 0, 3820, 0, 0, 0, 0, 1902,
2531, 677, 0, 3733, 1261, 139, 1652, 0, 0, 0, 1331, 1631, 0, 0, 0, 0,
0, 515, 1197, 645, 0, 2137, 203, 0, 0, 0, 0, 369, 469, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1816, 782, 0, 3192, 0, 1959, 0,
243, 0, 573, 0, 0, 0, 3141, 0, 0, 0, 0, 0, 290, 1751, 0, 0,
1943, 0, 0, 1021, 2402, 0, 2671, 0, 2747, 4067, 0, 0, 0, 0, 0, 0,
3845, 4125, 0, 356, 0, 0, 2585, 0, 0, 0, 1626, 0, 0, 4289, 0, 0,
0, 0, 990, 916, 302, 0, 0, 0, 0, 0, 2310, 0, 4383, 0, 0, 2396,
0, 4088, 1847, 0, 3847, 0, 0, 0, 0, 0, 0, 0, 315, 0, 0, 1091,
0, 0, 0, 2669, 0, 4148, 0, 0, 0, 0, 630, 0, 251, 0, 3728, 0,
1546, 1879, 0, 3815, 0, 1548, 1389, 0, 2596, 3228, 314, 3563, 3798, 0, 206, 3170,
0, 0, 2316, 0, 3357, 3608, 0, 0, 466, 0, 101, 3756, 0, 0, 0, 2093,
780, 0, 0, 0, 2844, 0, 0, 0, 0, 0, 1190, 201, 0, 0, 0, 0,
0, 480, 0, 4413, 4024, 0, 36, 0, 0, 1795, 1037, 0, 0, 0, 3440, 1528,
0, 0, 1643, 0, 3495, 0, 0, 1786, 0, 0, 0, 0, 0, 0, 0, 90,
3083, 3508, 3718, 2824, 0, 0, 3774, 0, 0, 0, 0, 150, 0, 0, 4245, 0,
1010, 1446, 0, 0, 0, 0, 0, 981, 0, 689, 0, 422, 0, 0, 4075, 0,
0, 0, 0, 739, 316, 0, 0, 0, 0, 964, 0, 1060, 0, 0, 3893, 0,
1724, 126, 0, 0, 0, 428, 3764, 0, 411, 0, 0, 0, 0, 0, 1164, 3790,
0, 0, 0, 454, 879, 0, 0, 0, 1677, 0, 1093, 0, 1249, 843, 524, 0,
0, 0, 3691, 0, 0, 1343, 3408, 0, 0, 1798, 0, 251, 0, 0, 0, 0,
0, 4121, 0, 0, 3993, 1416, 0, 779, 0, 0, 0, 0, 0, 2935, 0, 0,
930, 0, 749, 0, 0, 0, 0, 499, 0, 1031, 2063, 1762, 1334, 2398, 0, 875,
0, 1016, 0, 0, 0, 0, 0, 0, 0, 273, 2030, 1220, 0, 0, 3271, 0,
0, 0, 0, 1910, 0, 0, 0, 0, 0, 0, 0, 0, 597, 1737, 2139, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 1123, 0, 0,
1124, 3860, 203, 675, 0, 4057, 0, 0, 745, 0, 0, 0, 1175, 0, 3140, 64,
0, 2640, 0, 104, 0, 2072, 772, 0, 0, 0, 0, 547, 0, 0, 0, 1312,
0, 0, 0, 0, 1870, 0, 3993, 2934, 0, 0, 2777, 0, 4314, 648, 0, 677,
0, 2942, 0, 452, 0, 3622, 0, 4209, 0, 0, 1009, 0, 0, 0, 0, 0,
1023, 0, 312, 1713, 1127, 0, 866, 0, 0, 0, 0, 0, 2113, 510, 4204, 0,
0, 0, 0, 0, 645, 213, 0, 0, 1985, 1181, 0, 1408, 165, 931, 76, 0,
0, 1291, 4264, 0, 1507, 1278, 0, 0, 0, 0, 630, 0, 0, 513, 1092, 4033,
0, 4339, 930, 0, 450, 1569, 4389, 0, 0, 0, 0, 982, 0, 0, 897, 0,
1706, 0, 1963, 0, 0, 789, 2035, 0, 813, 342, 0, 3001, 0, 230, 0, 2916,
0, 0, 2637, 1897, 0, 0, 0, 0, 0, 882, 37, 0, 2120, 0, 2968, 0,
0, 567, 0, 3458, 0, 0, 0, 0, 730, 0, 3579, 0, 1364, 0, 0, 4416,
0, 0, 3773, 1046, 3779, 0, 540, 1666, 1678, 0, 822, 0, 0, 0, 0, 0,
0, 900, 1908, 0, 0, 0, 4332, 4273, 1025, 739, 2558, 216, 368, 0, 0, 0,
2454, 857, 0, 148, 451, 0, 0, 170, 0, 0, 1104, 0, 216, 0, 1662, 782,
0, 0, 0, 1240, 1098, 4298, 0, 0, 0, 0, 449, 0, 0, 0, 69, 0,
0, 0, 669, 0, 797, 0, 266, 2615, 2513, 0, 1231, 0, 1362, 0, 0, 0,
2775, 0, 165, 0, 0, 0, 1516, 0, 963, 0, 0, 0, 805, 0, 0, 0,
0, 0, 1258, 0, 4209, 0, 1035, 84, 0, 760, 0, 2044, 0, 0, 1164, 42,
1205, 35, 0, 3565, 2849, 0, 2741, 2048, 0, 2451, 0, 0, 0, 0, 0, 0,
2880, 720, 1617, 0, 1493, 0, 0, 0, 0, 3678, 0, 0, 2489, 0, 2423, 0,
1279, 469, 3735, 408, 0, 2886, 0, 0, 0, 0, 0, 0, 1616, 223, 3639, 923,
1892, 0, 3758, 0, 0, 0, 0, 3901, 1934, 0, 0, 0, 0, 0, 31, 962,
3425, 0, 169, 766, 169, 0, 0, 369, 0, 137, 2234, 0, 0, 0, 1699, 3838,
3523, 561, 109, 3650, 0, 1784, 3960, 1203, 0, 0, 0, 0, 0, 86, 0, 0,
2396, 0, 1855, 0, 0, 0, 0, 0, 3004, 0, 2934, 904, 0, 4399, 29, 0,
902, 1046, 3238, 0, 0, 0, 1763, 0, 628, 0, 0, 88, 0, 0, 2368, 0,
0, 0, 704, 2780, 0, 604, 0, 0, 360, 4304, 2313, 271, 0, 0, 0, 222,
3006, 880, 0, 3146, 1328, 1562, 1138, 101, 4260, 84, 1737, 1511, 4327, 0, 2211, 1612,
0, 0, 0, 952, 0, 3654, 1919, 1720, 0, 0, 0, 1716, 3380, 1891, 0, 1351,
0, 97, 0, 0, 3450, 0, 3751, 3934, 0, 0, 704, 0, 0, 0, 0, 0,
1929, 94, 0, 1166, 0, 60, 0, 87, 0, 1128, 0, 0, 654, 0, 4131, 1291,
0, 175, 0, 700, 1706, 0, 0, 0, 0, 0, 0, 180, 1705, 2132, 235, 0,
1290, 578, 0, 815, 0, 0, 4050, 0, 0, 0, 163, 0, 2590, 0, 0, 0,
0, 0, 347, 0, 1960, 0, 0, 3038, 0, 3307, 3297, 0, 0, 1848, 0, 1211,
0, 0, 0, 0, 0, 2903, 50, 64, 2403, 1253, 0, 622, 0, 0, 1984, 3035,
0, 0, 1332, 3984, 1098, 4181, 0, 0, 0, 623, 0, 1503, 0, 0, 1202, 0,
405, 281, 0, 2447, 0, 0, 1010, 0, 192, 0, 3923, 554, 0, 0, 0, 1216,
0, 354, 1150, 0, 3779, 0, 0, 0, 1086, 1257, 4383, 0, 0, 4128, 0, 3408,
3718, 3991, 0, 0, 0, 2006, 0, 0, 3731, 0, 0, 4216, 1907, 1880, 0, 0,
1698, 1335, 812, 0, 0, 0, 4173, 0, 3273, 0, 0, 881, 0, 4111, 0, 0,
0, 0, 1740, 0, 991, 4135, 0, 0, 0, 99, 3182, 0, 3246, 1752, 1853, 0,
2670, 0, 2896, 2800, 1790, 208, 1188, 0, 3136, 0, 292, 1489, 641, 1693, 0, 1837,
413, 2584, 0, 0, 0, 0, 0, 373, 0, 2199, 362, 4049, 2535, 57, 2776, 0,
3416, 0, 0, 1123, 0, 2573, 0, 0, 416, 2966, 0, 716, 0, 455, 0, 1352,
0, 0, 1086, 1996, 444, 2239, 914, 0, 3600, 0, 0, 0, 0, 0, 1159, 0,
0, 99, 4250, 0, 2033, 3204, 3970, 0, 446, 0, 0, 0, 0, 0, 1869, 2409,
0, 0, 0, 0, 1341, 0, 1696, 0, 589, 0, 3326, 4332, 0, 0, 3146, 0,
0, 0, 0, 195, 0, 0, 0, 0, 0, 374, 2590, 2571, 1804, 0, 0, 0,
0, 178, 1641, 444, 4049, 0, 4038, 575, 0, 0, 258, 1456, 0, 0, 2000, 1085,
0, 1911, 0, 0, 0, 3651, 0, 311, 1771, 0, 4083, 2800, 0, 0, 0, 0,
0, 553, 534, 0, 440, 0, 0, 2082, 0, 0, 0, 2524, 1559, 4115, 2154, 0,
0, 0, 389, 0, 363, 0, 871, 2076, 1097, 3734, 3674, 0, 244, 3638, 0, 1541,
0, 203, 1051, 1630, 0, 0, 2713, 0, 0, 0, 915, 0, 0, 0, 2988, 0,
0, 0, 0, 4329, 3873, 0, 0, 1676, 0, 0, 0, 1839, 1017, 560, 0, 0,
4372, 0, 0, 169, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 44, 1440,
397, 0, 0, 158, 0, 709, 0, 2456, 2069, 4250, 0, 1729, 0, 0, 0, 0,
1508, 0, 0, 68, 0, 0, 443, 2979, 2402, 0, 0, 0, 0, 3208, 0, 2317,
0, 37, 376, 4204, 0, 2224, 0, 0, 50, 219, 729, 3407, 1141, 0, 1769, 0,
563, 451, 193, 238, 58, 3468, 0, 3863, 0, 91, 1053, 0, 2888, 0, 1887, 4176,
0, 620, 0, 478, 0, 0, 1481, 0, 4074, 0, 0, 0, 596, 0, 0, 0,
1435, 0, 2441, 1374, 0, 0, 4208, 2090, 0, 0, 0, 3760, 0, 0, 1134, 109,
2325, 797, 0, 0, 0, 996, 497, 1077, 0, 2551, 329, 322, 0, 0, 1925, 0,
0, 1118, 0, 1481, 3885, 0, 261, 0, 0, 0, 0, 0, 0, 174, 0, 0,
0, 1376, 0, 1617, 0, 576, 0, 3778, 0, 961, 1375, 4359, 0, 1542, 143, 0,
733, 0, 4026, 2149, 0, 1675, 339, 1811, 0, 0, 0, 1612, 0, 0, 2146, 0,
0, 0, 3890, 0, 218, 0, 1250, 0, 4070, 0, 0, 2363, 4280, 231, 0, 0,
1236, 1568, 3398, 448, 0, 0, 3680, 674, 0, 1743, 0, 0, 4012, 830, 3922, 1380,
658, 0, 2166, 293, 1824, 0, 0, 1102, 0, 3662, 1902, 228, 0, 0, 0, 0,
0, 41, 1793, 2577, 0, 0, 726, 4196, 0, 0, 0, 0, 2824, 0, 0, 4408,
0, 0, 0, 1779, 3767, 3623, 1313, 0, 0, 1780, 0, 1149, 1648, 0, 2360, 0,
4117, 646, 0, 0, 1661, 2840, 0, 3553, 0, 1867, 2797, 0, 0, 0, 0, 3265,
799, 4307, 0, 386, 0, 490, 4172, 1695, 0, 0, 0, 696, 0, 524, 480, 3188,
2035, 891, 0, 0, 0, 0, 1409, 262, 242, 700, 0, 0, 845, 2268, 1247, 1646,
2602, 0, 1048, 0, 3406, 408, 0, 584, 0, 1680, 0, 0, 2036, 0, 0, 274,
0, 0, 0, 0, 0, 3781, 0, 168, 4136, 16, 164, 136, 1992, 0, 406, 0,
0, 1967, 0, 3903, 2555, 0, 1280, 3742, 537, 1272, 966, 797, 2924, 0, 1952, 1013,
0, 1923, 0, 1397, 1507, 497, 0, 0, 401, 923, 455, 0, 0, 4122, 1592, 4257,
0, 1350, 1364, 4006, 3958, 0, 1301, 1947, 0, 2168, 818, 187, 0, 0, 0, 1324,
0, 1438, 1375, 0, 2397, 2984, 0, 1864, 252, 0, 0, 0, 0, 2361, 395, 0,
2309, 814, 0, 802, 0, 3423, 1205, 0, 0, 465, 0, 0, 0, 4179, 0, 2954,
4373, 1898, 1202, 2019, 0, 2057, 0, 0, 1190, 1647, 4065, 0, 268, 3437, 0, 678,
1061, 0, 0, 0, 0, 613, 403, 2081, 0, 0, 2063, 2059, 0, 1683, 1069, 358,
637, 396, 0, 0, 980, 0, 1211, 1120, 651, 1280, 969, 846, 3385, 4414, 0, 0,
337, 0, 1750, 788, 1163, 0, 0, 0, 113, 616, 1822, 0, 0, 0, 491, 0,
0, 1911, 0, 0, 0, 974, 0, 1641, 2128, 0, 0, 0, 0, 650, 419, 345,
0, 0, 0, 1569, 791, 0, 660, 0, 1915, 361, 1658, 1717, 324, 0, 0, 1290,
0, 2282, 280, 0, 416, 1629, 0, 2152, 4186, 904, 3459, 0, 0, 2017, 0, 0,
0, 0, 267, 1207, 1198, 4348, 0, 0, 250, 0, 0, 0, 3204, 1165, 817, 2708,
1012, 0, 0, 482, 1649, 0, 1745, 0, 980, 761, 0, 0, 3182, 0, 0, 1287,
0, 0, 905, 410, 1246, 566, 0, 756, 4011, 0, 2273, 2742, 0, 375, 1787, 695,
0, 3955, 471, 0, 3229, 202, 3939, 1958, 436, 318, 0, 0, 0, 4009, 0, 617,
1530, 699, 1307, 1945, 0, 2074, 1869, 583, 1664, 120, 1156, 1879, 0, 0, 3457, 1710,
0, 0, 0, 0, 318, 926, 0, 0, 1650, 0, 0, 957, 0, 0, 0, 0,
0, 0, 0, 0, 0, 592, 4318, 0, 9, 4355, 911, 973, 0, 3257, 0, 78,
0, 1024, 0, 0, 0, 3569, 0, 1532, 0, 0, 571, 1217, 350, 0, 0, 0,
3742, 0, 359, 0, 1178, 0, 0, 839, 1834, 994, 65, 59, 0, 0, 4289, 69,
0, 0, 0, 2795, 746, 0, 0, 305, 0, 0, 0, 0, 0, 3674, 0, 0,
0, 3899, 0, 1828, 1851, 2091, 0, 1700, 4120, 913, 0, 188, 0, 3340, 1848, 984,
0, 0, 4345, 0, 1948, 3914, 1915, 0, 0, 1721, 0, 2950, 0, 0, 0, 0,
456, 300, 2456, 803, 0, 509, 1737, 0, 0, 0, 0, 2049, 0, 16, 407, 0,
506, 352, 1668, 1465, 0, 0, 0, 1298, 0, 0, 0, 390, 3405, 0, 0, 0,
2027, 842, 1321, 1194, 0, 0, 935, 0, 0, 0, 0, 546, 1221, 0, 0, 396,
1452, 4370, 0, 0, 0, 0, 2029, 0, 0, 826, 1297, 4178, 0, 764, 0, 4253,
1954, 0, 0, 0, 1357, 0, 1214, 0, 0, 0, 0, 2712, 0, 1269, 0, 2851,
0, 507, 332, 0, 4198, 0, 0, 0, 1545, 0, 0, 0, 0, 230, 496, 0,
3648, 0, 1465, 0, 0, 278, 0, 2294, 1121, 0, 832, 0, 1789, 3253, 1445, 3773,
2820, 512, 4259, 1924, 3447, 0, 0, 0, 1741, 255, 0, 3039, 1501, 0, 2854, 1484,
1325, 838, 897, 549, 3815, 1736, 0, 129, 3982, 4324, 0, 1955, 2835, 0, 1594, 0,
686, 4385, 71, 1672, 1799, 4169, 0, 0, 1012, 0, 0, 1686, 0, 864, 0, 1120,
0, 2792, 0, 0, 1227, 0, 655, 785, 1315, 655, 1893, 0, 0, 0, 3540, 2028,
0, 3509, 1283, 1075, 0, 0, 0, 4368, 2010, 0, 0, 969, 2626, 4070, 1159, 1998,
0, 860, 3518, 0, 1754, 4247, 34, 4167, 1467, 0, 1894, 178, 0, 0, 0, 1203,
0, 0, 1593, 0, 867, 3802, 473, 0, 0, 0, 551, 1061, 972, 0, 0, 0,
0, 451, 3555, 0, 2097, 3002, 0, 2043, 0, 0, 926, 1990, 1201, 0, 0, 0,
2083, 690, 0, 0, 0, 0, 0, 0, 1180, 489, 3296, 1558, 2379, 569, 3423, 453,
574, 0, 0, 0, 511, 798, 0, 0, 0, 1147, 731, 829, 1112, 3623, 0, 0,
3548, 0, 0, 2031, 1090, 3615, 0, 637, 3063, 0, 292, 499, 0, 0, 0, 2989,
1413, 611, 1114, 2129, 0, 0, 0, 1303, 4279, 0, 1950, 0, 3053, 1591, 854, 2996,
1181, 0, 742, 939, 840, 1319, 0, 4025, 3328, 0, 3242, 2929, 2251, 0, 1988, 1670,
1350, 0, 3672, 0, 0, 0, 3553, 0, 0, 157, 1015, 0, 0, 0, 4053, 1517,
0, 0, 0, 0, 677, 0, 0, 3545, 750, 599, 0, 0, 4404, 0, 1852, 1513,
0, 412, 0, 0, 4128, 284, 0, 473, 442, 24, 3048, 0, 455, 0, 2433, 684,
470, 276, 594, 700, 1282, 0, 0, 0, 1586, 103, 0, 888, 0, 1559, 1476, 841,
0, 2709, 3176, 1538, 486, 0, 119, 0, 0, 1992, 0, 370, 453, 0, 206, 1839,
240, 2465, 383, 727, 689, 0, 1083, 4384, 0, 1151, 1688, 0, 2026, 1388, 1075, 0,
177, 2683, 0, 4405, 1962, 3120, 4162, 0, 0, 247, 720, 0, 0, 714, 1552, 1043,
417, 0, 197, 0, 729, 1098, 0, 106, 0, 801, 3127, 0, 0, 1459, 309, 0,
737, 316, 1451, 67, 275, 400, 135, 93, 4001, 3413, 0, 372, 4022, 1371, 146, 4242,
847, 0, 959, 1431, 4173, 4172, 708, 0, 249, 3339, 112, 0, 1866, 2450, 3786, 0,
1653, 1627, 0, 0, 0, 0, 4325, 1809, 351, 1199, 3317, 0, 4271, 1685, 883, 2360,
939, 836, 0, 0, 2395, 0, 1135, 0, 800, 337, 0, 0, 4292, 3378, 0, 4239,
0, 37, 2292, 0, 0, 0, 1629, 0, 792, 0, 2073, 1096, 541, 0, 263, 1237,
3719, 1463, 0, 0, 2130, 0, 1861, 512, 0, 853, 649, 2388, 1035, 1904, 0, 969,
0, 1492, 615, 3658, 313, 340, 1217, 3502, 1555, 1407, 833, 999, 2591, 2118, 0, 704,
4231, 0, 279, 0, 2642, 1822, 1715, 1707, 1030, 2920, 2567, 0, 0, 0, 0, 0,
2900, 3155, 0, 3667, 1772, 2, 0, 1078, 2977, 0, 0, 0, 2729, 0, 1442, 0,
0, 0, 0, 0, 3920, 0, 0, 3935, 0, 1268, 0, 0, 445, 1392, 1363, 0,
0, 1065, 0, 488, 174, 3583, 2426, 1695, 0, 0, 1701, 947, 2725, 506, 1912, 0,
0, 2584, 783, 0, 73, 63, 8, 0, 4059, 281, 0, 0, 0, 200, 1234, 0,
0, 0, 2040, 0, 0, 491, 2550, 0, 270, 0, 0, 3633, 0, 545, 0, 1828,
0, 2017, 776, 2246, 1943, 3754, 0, 1359, 3380, 1757, 0, 0, 1655, 0, 972, 0,
820, 0, 721, 0, 902, 0, 4345, 139, 833, 0, 613, 3566, 2190, 1456, 4312, 0,
0, 0, 0, 21, 0, 2853, 0, 0, 675, 2107, 0, 293, 0, 479, 0, 0,
2196, 1468, 0, 0, 484, 0, 2156, 0, 946, 145, 1120, 1186, 0, 172, 1633, 1336,
0, 0, 289, 3205, 0, 256, 593, 968, 0, 3951, 0, 1419, 2564, 2002, 0, 0,
1740, 0, 0, 4287, 0, 1653, 1921, 570, 0, 1034, 0, 1124, 662, 0, 0, 1755,
1400, 0, 0, 0, 316, 0, 0, 0, 1490, 0, 0, 0, 0, 0, 1541, 4087,
0, 1393, 0, 948, 0, 4399, 1366, 0, 239, 0, 0, 4434, 0, 0, 247, 0,
3410, 0, 677, 412, 3905, 0, 2360, 0, 3052, 0, 838, 1582, 0, 1221, 0, 0,
0, 1453, 528, 2773, 0, 515, 0, 2112, 3720, 1068, 3636, 378, 0, 1726, 778, 4077,
0, 0, 0, 55, 1311, 1115, 1243, 0, 0, 3736, 1583, 0, 2313, 1409, 213, 0,
3382, 0, 0, 1182, 1514, 993, 853, 1962, 0, 0, 1307, 693, 0, 1299, 382, 0,
843, 0, 0, 2964, 515, 1136, 0, 0, 0, 0, 0, 1064, 1333, 0, 1655, 3331,
1533, 3489, 0, 1758, 2071, 51, 2062, 0, 0, 0, 3874, 4331, 2770, 0, 1815, 0,
0, 3463, 0, 1133, 682, 3269, 0, 991, 685, 0, 1954, 4084, 435, 0, 270, 0,
485, 4390, 1306, 0, 743, 192, 3816, 0, 0, 1694, 1547, 4004, 1444, 1348, 754, 345,
0, 2231, 945, 1737, 2846, 0, 893, 1224, 664, 1978, 0, 410, 3665, 1977, 1389, 0,
568, 0, 785, 938, 2869, 1699, 820, 0, 0, 14, 124, 0, 3984, 58, 0, 2133,
0, 0, 4166, 0, 1983, 0, 0, 1672, 1835, 2693, 3941, 850, 0, 1504, 0, 0,
0, 166, 2235, 3296, 0, 3197, 1921, 1293, 0, 789, 0, 0, 0, 0, 0, 0,
735, 472, 2520, 657, 1893, 1044, 4135, 0, 1939, 551, 0, 0, 0, 0, 753, 0,
0, 1206, 985, 0, 1472, 377, 218, 2261, 1553, 3987, 1622, 0, 4395, 2758, 1471, 4329,
110, 1951, 308, 212, 312, 0, 3532, 1846, 1738, 0, 2034, 0, 1002, 248, 1935, 0,
0, 1105, 0, 0, 4251, 315, 0, 167, 2505, 361, 0, 3188, 422, 0, 0, 0,
0, 0, 0, 1639, 0, 1178, 1681, 3464, 1113, 962, 0, 0, 1164, 803, 807, 0,
0, 0, 0, 0, 0, 0, 1541, 0, 0, 723, 0, 255, 0, 0, 196, 0,
0, 1239, 4332, 0, 161, 0, 0, 0, 12, 663, 899, 1396, 0, 706, 3925, 3944,
0, 1580, 580, 0, 770, 0, 0, 0, 1308, 0, 0, 3245, 0, 1509, 1581, 4074,
796, 0, 67, 1991, 2099, 0, 0, 756, 1332, 0, 3100, 1685, 473, 0, 0, 3556,
310, 1742, 0, 99, 0, 0, 0, 1615, 1045, 0, 0, 4293, 0, 0, 63, 1454,
1201, 1423, 3959, 0, 0, 1550, 1409, 0, 338, 0, 0, 4084, 0, 0, 0, 0,
1808, 0, 0, 544, 0, 2445, 1182, 1095, 45, 0, 2143, 0, 1297, 3930, 1618, 4262,
271, 945, 2502, 0, 0, 3228, 0, 0, 1921, 0, 0, 0, 52, 1704, 510, 556,
571, 0, 4124, 0, 2102, 3796, 0, 889, 0, 0, 44, 1938, 629, 224, 0, 0,
0, 0, 385, 1554, 0, 2228, 139, 0, 627, 1972, 335, 62, 669, 1773, 0, 2083,
1366, 0, 1471, 0, 498, 3988, 0, 522, 0, 205, 1606, 1757, 3023, 0, 1010, 564,
107, 628, 1884, 0, 3461, 1369, 585, 0, 1725, 3483, 3024, 653, 4278, 1602, 889, 372,
220, 1198, 460, 0, 1165, 0, 863, 0, 0, 0, 0, 496, 3563, 1046, 0, 0,
0, 0, 1745, 1158, 2089, 125, 857, 0, 2195, 0, 619, 4298, 0, 0, 0, 732,
313, 711, 0, 1694, 372, 0, 1326, 930, 4009, 1224, 0, 1090, 3888, 2008, 1390, 3070,
2099, 2815, 3538, 3573, 1715, 4373, 0, 0, 1474, 1076, 2760, 1542, 0, 861, 0, 0,
0, 0, 0, 944, 4203, 990, 3499, 0, 0, 177, 1642, 0, 1222, 0, 196, 3731,
0, 0, 1858, 0, 0, 2971, 0, 678, 0, 3380, 601, 698, 2915, 3734, 0, 2065,
0, 0, 2780, 1479, 0, 0, 1624, 0, 0, 0, 2957, 2660, 3970, 0, 196, 392,
0, 754, 0, 0, 0, 0, 1601, 1405, 2884, 1413, 4185, 0, 1844, 104, 1007, 2054,
0, 0, 700, 0, 336, 0, 3635, 202, 0, 0, 0, 1449, 798, 758, 522, 2544,
0, 34, 0, 2092, 434, 146, 0, 0, 4294, 0, 4276, 863, 0, 3228, 0, 725,
4420, 987, 0, 1882, 0, 1881, 3797, 1764, 2024, 2690, 0, 220, 0, 549, 1106, 505,
1260, 0, 0, 2110, 3273, 0, 768, 2086, 0, 795, 3357, 4368, 142, 0, 3030, 10,
1109, 1192, 0, 3817, 3209, 2265, 983, 170, 0, 0, 1582, 0, 0, 0, 480, 943,
0, 1295, 1216, 1460, 1193, 0, 0, 368, 1386, 3889, 764, 0, 1310, 0, 2126, 1118,
1355, 0, 1486, 1056, 2964, 1596, 4059, 0, 0, 2131, 3414, 29, 910, 555, 1830, 982,
2894, 3557, 0, 2950, 2127, 2982, 360, 0, 0, 1204, 0, 1170, 0, 0, 1242, 282,
1052, 1942, 0, 2124, 0, 289, 511, 527, 0, 0, 4314, 3611, 0, 911, 1100, 0,
118, 479, 1874, 3541, 344, 259, 3202, 0, 3182, 127, 1813, 1476, 0, 0, 0, 0,
2944, 468, 0, 521, 0, 578, 0, 808, 0, 450, 1054, 425, 850, 1197, 0, 715,
0, 1203, 4109, 2110, 0, 0, 1093, 0, 2023, 760, 1473, 0, 0, 1944, 0, 72,
0, 1519, 1, 3083, 440, 1294, 671, 739, 4179, 1407, 0, 0, 3482, 1356, 1345, 2094,
0, 209, 732, 0, 1134, 1230, 3570, 1386, 1806, 424, 302, 1604, 662, 2635, 0, 0,
1469, 0, 820, 0, 1600, 0, 47, 894, 1388, 4282, 0, 855, 2659, 0, 2707, 3184,
3384, 0, 0, 47, 0, 0, 1454, 1646, 958, 4262, 0, 0, 0, 1630, 0, 0,
0, 3738, 2920, 0, 2965, 0, 362, 0, 0, 0, 1026, 0, 547, 4297, 1897, 973,
1775, 0, 3494, 2714, 3430, 852, 1497, 1432, 0, 4150, 2123, 40, 1254, 697, 912, 0,
4211, 0, 878, 0, 1346};
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 %= 4437;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 37)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 4437;
}
constexpr int unmangledkT1[] = {162, 98, 200, 17, 263, 137, 354, 364, 24, 149, 40, 40, 170,
267, 387, 255, 7, 55, 108, 152, 27, 154, 105, 349, 229, 229};
constexpr int unmangledkT2[] = {290, 338, 301, 284, 117, 303, 83, 150, 389, 350, 323, 330, 58,
316, 310, 107, 30, 65, 14, 310, 8, 298, 365, 40, 174, 83};
constexpr int unmangledkG[] = {
0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 199, 165, 0, 0, 0,
0, 0, 231, 244, 164, 0, 0, 71, 381, 37, 0, 0, 138, 9, 33, 0, 6, 0, 0,
163, 102, 0, 0, 152, 0, 70, 0, 0, 203, 0, 181, 0, 0, 206, 0, 0, 0, 0,
0, 0, 0, 40, 0, 0, 119, 0, 0, 122, 0, 116, 0, 66, 0, 92, 116, 0, 355,
101, 0, 0, 0, 70, 0, 0, 0, 78, 366, 0, 28, 383, 0, 0, 273, 0, 392, 0,
0, 0, 369, 325, 0, 74, 0, 0, 260, 0, 0, 0, 306, 306, 0, 68, 0, 123, 61,
0, 140, 190, 0, 0, 0, 165, 88, 73, 0, 379, 17, 81, 82, 360, 0, 170, 28, 120,
0, 0, 0, 0, 315, 58, 56, 0, 393, 50, 0, 0, 392, 48, 305, 0, 0, 384, 24,
0, 381, 0, 0, 0, 74, 0, 0, 227, 0, 0, 160, 174, 0, 0, 0, 0, 0, 0,
0, 0, 192, 0, 59, 0, 0, 0, 225, 327, 0, 75, 142, 367, 0, 0, 107, 0, 0,
48, 0, 0, 66, 47, 0, 0, 0, 228, 341, 58, 0, 196, 40, 130, 25, 41, 179, 136,
3, 0, 115, 373, 0, 0, 311, 31, 0, 0, 0, 349, 113, 62, 89, 0, 21, 0, 21,
24, 76, 378, 0, 390, 0, 140, 123, 0, 0, 0, 0, 2, 322, 151, 382, 112, 0, 19,
273, 137, 0, 0, 69, 23, 0, 0, 160, 0, 39, 26, 269, 362, 0, 186, 0, 109, 62,
82, 0, 57, 37, 0, 155, 64, 399, 146, 191, 0, 0, 282, 0, 0, 163, 392, 153, 192,
127, 0, 98, 0, 72, 0, 0, 128, 24, 396, 0, 41, 71, 0, 0, 17, 133, 0, 381,
180, 310, 115, 124, 166, 7, 0, 0, 0, 0, 81, 295, 369, 0, 230, 134, 86, 0, 121,
0, 0, 206, 0, 0, 188, 85, 230, 197, 118, 0, 0, 10, 394, 59, 96, 0, 371, 53,
0, 369, 0, 364, 0, 209, 0, 178, 195, 228, 0, 0, 0, 0, 0, 0, 0, 167, 41,
89, 0, 76, 0, 172, 0, 0, 176, 0, 48, 0, 198, 0, 265, 56, 157, 0, 283, 0,
102, 217, 0, 0, 0, 38, 146, 0, 112, 0, 41, 0, 0, 0, 200, 0, 19, 43, 0,
82, 396, 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 %= 402;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 26)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 402;
}
} // 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