Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/compiler/translator/ImmutableString_ESSL_autogen.cpp
1693 views
1
// GENERATED FILE - DO NOT EDIT.
2
// Generated by gen_builtin_symbols.py using data from builtin_variables.json and
3
// builtin_function_declarations.txt.
4
//
5
// Copyright 2020 The ANGLE Project Authors. All rights reserved.
6
// Use of this source code is governed by a BSD-style license that can be
7
// found in the LICENSE file.
8
//
9
// ImmutableString_ESSL_autogen.cpp: Wrapper for static or pool allocated char arrays, that are
10
// guaranteed to be valid and unchanged for the duration of the compilation. Implements
11
// mangledNameHash using perfect hash function from gen_builtin_symbols.py
12
13
#include "compiler/translator/ImmutableString.h"
14
15
std::ostream &operator<<(std::ostream &os, const sh::ImmutableString &str)
16
{
17
return os.write(str.data(), str.length());
18
}
19
20
#if defined(_MSC_VER)
21
# pragma warning(disable : 4309) // truncation of constant value
22
#endif
23
24
namespace
25
{
26
27
constexpr int mangledkT1[] = {1527, 1943, 1880, 1243, 1509, 140, 1696, 103, 163, 2049,
28
1333, 2689, 1246, 626, 562, 1634, 2548, 2195, 2149, 59,
29
1179, 654, 587, 174, 1528, 1042, 266, 457, 140, 864,
30
520, 913, 1647, 598, 1669, 154, 2071, 580, 1372, 2809};
31
constexpr int mangledkT2[] = {890, 2242, 2689, 2094, 2746, 538, 1689, 1610, 625, 1617,
32
2764, 775, 612, 2458, 797, 438, 1122, 1941, 1673, 2635,
33
976, 2649, 2701, 1532, 1267, 49, 1285, 2806, 237, 342,
34
1105, 2537, 2291, 870, 693, 1953, 6, 1401, 1788, 1352};
35
constexpr int mangledkG[] = {
36
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2758, 0, 332, 0, 0,
37
0, 0, 949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1726, 0, 2569,
38
0, 0, 0, 0, 0, 0, 0, 0, 593, 0, 0, 1216, 0, 0, 222, 0,
39
0, 1645, 0, 0, 0, 0, 0, 0, 306, 27, 0, 0, 0, 2019, 0, 1761,
40
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1160, 0, 0, 0, 1102, 0,
41
0, 0, 0, 0, 2775, 0, 0, 1256, 0, 0, 531, 0, 0, 0, 0, 668,
42
0, 0, 0, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2470, 0,
43
2361, 0, 0, 0, 0, 0, 1624, 390, 714, 0, 0, 2675, 0, 2669, 992, 0,
44
0, 0, 0, 0, 582, 930, 0, 1485, 0, 0, 0, 0, 0, 0, 96, 0,
45
36, 141, 0, 0, 0, 0, 0, 748, 0, 0, 0, 0, 308, 0, 327, 1950,
46
0, 92, 0, 606, 0, 0, 0, 0, 0, 0, 0, 1249, 0, 0, 1223, 0,
47
1011, 0, 1787, 261, 945, 1542, 329, 0, 0, 0, 0, 0, 0, 854, 0, 573,
48
99, 0, 0, 0, 948, 0, 163, 1271, 1567, 0, 2533, 688, 1223, 0, 0, 0,
49
0, 0, 0, 0, 0, 1111, 704, 693, 620, 1078, 0, 0, 0, 2539, 415, 1990,
50
0, 0, 2702, 0, 712, 0, 1829, 0, 0, 0, 2682, 0, 0, 2040, 1784, 0,
51
318, 0, 0, 0, 0, 0, 0, 0, 2243, 0, 0, 0, 2479, 0, 1494, 0,
52
0, 95, 406, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 635, 2847, 2087,
53
0, 2798, 480, 1643, 0, 1670, 0, 1640, 303, 1196, 2443, 820, 133, 2201, 0, 0,
54
0, 0, 0, 1316, 746, 86, 0, 357, 375, 0, 0, 0, 0, 0, 0, 1901,
55
744, 0, 668, 2700, 1855, 0, 0, 0, 0, 0, 0, 0, 0, 875, 0, 679,
56
0, 0, 234, 1462, 0, 0, 0, 2409, 0, 1062, 2344, 0, 0, 0, 0, 0,
57
1350, 2254, 2320, 0, 0, 0, 0, 0, 1011, 0, 1010, 1068, 0, 0, 782, 848,
58
0, 1511, 0, 0, 0, 1452, 1417, 0, 0, 0, 0, 0, 959, 0, 0, 0,
59
0, 1250, 633, 696, 888, 1378, 1702, 1448, 1992, 348, 0, 0, 2513, 1441, 442, 0,
60
0, 849, 0, 0, 0, 0, 0, 1306, 0, 1080, 0, 2467, 0, 0, 1649, 0,
61
2363, 541, 0, 0, 0, 570, 0, 596, 298, 0, 1284, 0, 0, 0, 0, 0,
62
0, 0, 0, 0, 1016, 0, 0, 0, 1056, 0, 2233, 0, 2691, 1230, 0, 0,
63
0, 645, 972, 0, 0, 335, 480, 0, 356, 0, 1995, 0, 0, 0, 1999, 0,
64
778, 0, 0, 952, 1066, 0, 0, 0, 2574, 0, 2263, 1932, 0, 1404, 305, 0,
65
0, 1049, 0, 0, 2546, 1758, 0, 2549, 2895, 2636, 2355, 0, 0, 0, 0, 2903,
66
0, 356, 0, 1530, 1844, 0, 0, 2867, 2741, 624, 0, 0, 0, 0, 2064, 2462,
67
0, 2671, 165, 1638, 0, 0, 1433, 0, 1292, 0, 0, 0, 0, 2192, 2069, 1260,
68
892, 0, 465, 828, 456, 0, 0, 1799, 258, 912, 0, 2480, 637, 0, 0, 0,
69
0, 0, 0, 782, 393, 2356, 141, 0, 2538, 0, 0, 0, 0, 0, 0, 2769,
70
0, 0, 0, 0, 0, 0, 0, 906, 2070, 0, 0, 232, 0, 0, 1735, 2806,
71
2365, 0, 0, 539, 264, 0, 0, 0, 0, 1652, 2611, 995, 1348, 1809, 879, 0,
72
0, 985, 2178, 164, 0, 0, 0, 0, 399, 0, 1216, 0, 0, 259, 1515, 0,
73
0, 0, 1556, 563, 497, 0, 0, 0, 0, 2844, 0, 0, 2154, 0, 476, 0,
74
0, 1303, 2622, 1249, 2251, 0, 0, 499, 0, 2296, 0, 0, 0, 2480, 0, 0,
75
2118, 1962, 387, 0, 2289, 1968, 0, 0, 0, 0, 1850, 0, 1266, 0, 1697, 0,
76
0, 1230, 0, 0, 0, 417, 0, 1935, 1588, 391, 1671, 0, 0, 0, 2028, 1993,
77
0, 0, 854, 0, 0, 0, 864, 33, 1934, 1611, 564, 0, 0, 2491, 191, 408,
78
1484, 672, 0, 0, 2333, 0, 939, 268, 0, 2804, 2158, 0, 437, 323, 0, 1218,
79
0, 0, 0, 0, 0, 0, 2922, 0, 699, 543, 2629, 0, 0, 0, 0, 0,
80
2726, 311, 0, 0, 0, 0, 0, 0, 2445, 0, 0, 0, 540, 272, 0, 594,
81
0, 2332, 0, 1352, 1196, 0, 694, 1313, 0, 0, 0, 678, 0, 0, 88, 0,
82
604, 0, 1083, 577, 1102, 718, 1169, 0, 2356, 0, 0, 1936, 141, 791, 653, 408,
83
1212, 388, 0, 0, 0, 212, 0, 0, 2042, 0, 1962, 2110, 2853, 0, 0, 525,
84
0, 0, 2413, 2515, 0, 0, 109, 2477, 160, 1539, 513, 1587, 559, 1521, 0, 691,
85
0, 662, 333, 0, 0, 2784, 358, 0, 0, 0, 1425, 1269, 0, 0, 0, 1033,
86
0, 0, 0, 0, 0, 1459, 0, 838, 1463, 291, 0, 0, 0, 402, 0, 0,
87
886, 2775, 78, 2270, 1172, 2869, 0, 1455, 0, 2192, 0, 1322, 0, 1341, 1179, 0,
88
0, 501, 0, 0, 122, 1301, 0, 1596, 2269, 490, 0, 0, 2736, 0, 2042, 0,
89
204, 2861, 346, 1291, 0, 225, 0, 527, 0, 0, 2190, 0, 0, 0, 1171, 2123,
90
0, 0, 1581, 1705, 2667, 0, 1118, 1298, 2313, 0, 0, 0, 299, 1191, 479, 0,
91
0, 2308, 0, 1239, 2703, 1632, 0, 0, 0, 500, 179, 0, 1460, 709, 0, 0,
92
727, 2664, 2693, 1698, 0, 0, 0, 0, 1860, 0, 0, 671, 2609, 1730, 987, 1715,
93
0, 2163, 0, 1107, 638, 0, 2195, 0, 0, 278, 398, 0, 0, 367, 1469, 2459,
94
0, 0, 57, 1141, 2722, 0, 0, 2751, 1920, 2740, 0, 1945, 2526, 0, 1231, 0,
95
1095, 2340, 2116, 0, 1137, 0, 0, 0, 0, 0, 1883, 0, 1145, 1308, 0, 170,
96
756, 2911, 0, 663, 234, 0, 0, 1956, 0, 705, 2731, 758, 0, 0, 0, 1931,
97
0, 0, 704, 0, 0, 948, 579, 1393, 1873, 0, 2580, 832, 0, 2904, 2096, 0,
98
1964, 0, 2167, 0, 0, 553, 0, 0, 0, 768, 0, 2794, 0, 2678, 1810, 1988,
99
0, 1432, 0, 0, 0, 1943, 875, 0, 1138, 1735, 1336, 170, 1525, 1967, 0, 197,
100
0, 0, 0, 2398, 666, 0, 344, 0, 210, 0, 325, 2555, 2817, 1383, 2913, 0,
101
2746, 919, 1448, 0, 0, 0, 0, 2909, 0, 1095, 1199, 2451, 0, 1155, 439, 2734,
102
1479, 2512, 504, 1344, 0, 0, 2572, 684, 1039, 799, 2047, 0, 0, 871, 0, 0,
103
908, 0, 0, 0, 2069, 53, 376, 0, 566, 0, 920, 0, 2207, 0, 0, 0,
104
1353, 0, 0, 978, 0, 252, 656, 0, 1541, 1990, 0, 273, 140, 1670, 0, 762,
105
0, 0, 0, 0, 1913, 95, 0, 198, 1718, 175, 0, 0, 0, 0, 0, 0,
106
1447, 0, 1080, 2764, 0, 2471, 1574, 1091, 775, 0, 0, 1897, 2375, 2556, 1669, 0,
107
2710, 277, 193, 0, 0, 0, 0, 0, 0, 0, 1597, 0, 1757, 0, 2718, 0,
108
680, 0, 0, 0, 56, 0, 2217, 0, 872, 0, 0, 1106, 2099, 2778, 0, 0,
109
0, 0, 2297, 0, 2797, 0, 0, 1577, 590, 0, 996, 1982, 2886, 0, 0, 51,
110
0, 0, 0, 249, 424, 219, 0, 405, 1261, 0, 0, 1249, 420, 0, 0, 0,
111
1551, 884, 2340, 2855, 547, 0, 1203, 352, 0, 2001, 0, 340, 0, 1831, 425, 0,
112
1925, 0, 1074, 630, 1613, 522, 0, 0, 575, 2656, 0, 1096, 2744, 1804, 0, 0,
113
1182, 453, 1540, 889, 163, 0, 0, 0, 702, 999, 0, 1454, 0, 2587, 0, 483,
114
1358, 1722, 0, 277, 827, 2790, 0, 2170, 0, 0, 0, 1156, 63, 333, 803, 0,
115
757, 1835, 0, 2770, 2321, 0, 392, 1769, 0, 1071, 754, 0, 2677, 0, 426, 0,
116
0, 2795, 0, 512, 0, 2340, 883, 545, 457, 726, 2809, 1035, 0, 1104, 1921, 0,
117
0, 1854, 1942, 0, 0, 2526, 0, 460, 1225, 0, 1115, 2108, 0, 2746, 0, 0,
118
0, 0, 500, 0, 0, 0, 0, 172, 1682, 1542, 2730, 0, 1849, 0, 0, 0,
119
0, 1421, 0, 0, 0, 2806, 675, 63, 1402, 0, 314, 871, 0, 0, 1565, 2378,
120
0, 0, 0, 2897, 0, 924, 412, 0, 397, 0, 0, 1537, 0, 35, 2833, 0,
121
2207, 0, 0, 129, 2201, 2921, 0, 1522, 804, 0, 0, 1302, 1478, 0, 0, 747,
122
646, 0, 1823, 607, 0, 2459, 0, 2921, 8, 1218, 966, 265, 64, 2413, 2042, 0,
123
0, 1576, 1330, 698, 751, 0, 835, 1317, 0, 0, 1038, 196, 2462, 0, 1124, 2699,
124
1482, 0, 122, 0, 0, 0, 0, 1698, 0, 0, 0, 411, 1017, 50, 0, 0,
125
0, 0, 2033, 0, 0, 0, 0, 1822, 0, 1165, 1203, 548, 2831, 0, 728, 0,
126
1484, 0, 1137, 0, 1489, 0, 143, 427, 1833, 975, 0, 1014, 1928, 0, 1506, 2439,
127
0, 0, 2724, 0, 821, 0, 2276, 2551, 1368, 1395, 461, 1905, 551, 1095, 2202, 0,
128
534, 1064, 340, 951, 315, 625, 234, 1185, 2638, 1569, 666, 535, 0, 0, 2315, 2875,
129
1404, 0, 935, 2776, 335, 0, 0, 0, 637, 0, 0, 2481, 269, 777, 965, 268,
130
0, 1359, 853, 2228, 1171, 2266, 0, 24, 2586, 2732, 2589, 117, 0, 143, 0, 1565,
131
2144, 1580, 2899, 0, 745, 1194, 16, 1427, 1263, 2871, 2613, 1374, 0, 1036, 0, 505,
132
214, 1547, 1103, 0, 883, 0, 0, 0, 962, 0, 2431, 2798, 1569, 0, 1110, 0,
133
2650, 861, 926, 1741, 896, 251, 0, 2468, 2507, 7, 354, 2749, 0, 1325, 0, 0,
134
0, 1963, 0, 370, 0, 1193, 0, 0, 2922, 0, 2815, 0, 263, 1196, 350, 689,
135
1887, 0, 903, 0, 2145, 1585, 97, 2301, 0, 0, 1209, 1915, 0, 2604, 314, 1566,
136
142, 0, 0, 1492, 1730, 0, 2700, 887, 0, 1214, 1603, 966, 0, 1840, 0, 641,
137
1369, 0, 2415, 668, 2219, 0, 0, 1922, 0, 0, 2325, 2036, 1129, 462, 2343, 1591,
138
0, 407, 322, 2439, 0, 0, 2368, 0, 0, 290, 414, 1473, 2108, 393, 1972, 2534,
139
2217, 0, 2615, 1059, 1140, 0, 659, 1602, 0, 2509, 1857, 1062, 183, 1039, 1999, 0,
140
400, 2072, 0, 1807, 0, 129, 0, 0, 0, 0, 1402, 0, 83, 886, 2619, 2827,
141
75, 2462, 264, 474, 0, 1375, 339, 2698, 1397, 0, 900, 2035, 0, 2459, 2664, 0,
142
0, 2598, 1144, 1161, 0, 0, 294, 0, 521, 2269, 102, 2744, 0, 301, 385, 904,
143
0, 0, 0, 1903, 0, 0, 809, 553, 0, 1477, 344, 1286, 0, 2782, 0, 382,
144
1623, 0, 137, 0, 897, 0, 1133, 0, 2175, 1129, 0, 1866, 2482, 2876, 251, 31,
145
997, 1146, 2270, 893, 0, 0, 0, 0, 1610, 0, 1042, 2815, 2916, 0, 0, 1239,
146
0, 892, 2751, 1570, 2596, 97, 134, 418, 1188, 2752, 2491, 318, 0, 278, 1272, 743,
147
2595, 0, 1127, 289, 0, 2032, 2331, 0, 0, 2675, 2061, 1020, 0, 678, 2033, 2532,
148
440, 437, 685, 1009, 0, 416, 1264, 0, 0, 1023, 2891, 0, 0, 0, 0, 1493,
149
867, 182, 2205, 1668, 1359, 1593, 246, 0, 0, 2890, 91, 1019, 0, 0, 2085, 2212,
150
2722, 1629, 856, 2883, 389, 693, 0, 2230, 0, 1585, 371, 0, 823, 2216, 0, 0,
151
0, 0, 0, 1022, 0, 1833, 0, 0, 17, 0, 317, 343, 0, 1012, 2470, 2785,
152
0, 0, 122, 0, 1254, 0, 173, 351, 0, 0, 0, 0, 892, 1773, 1940, 295,
153
0, 2708, 2635, 1470, 1736, 466, 206, 631, 1194, 300, 28, 1109, 1694, 0, 0, 2859,
154
0, 1031, 0, 0, 1587, 629, 927, 2421, 0, 550, 0, 1896, 0, 2776, 0, 2560,
155
1240, 165, 383, 2745, 788, 0, 0, 1025, 158, 2406, 2662, 2611, 2316, 0, 0, 666,
156
2174, 0, 817, 1273, 0, 0, 843, 0, 2140, 0, 1598, 2696, 0, 0, 0, 1311,
157
563, 1708, 871, 0, 2088, 0, 979, 2752, 0, 2057, 39, 2081, 448, 0, 1167, 20,
158
1287, 0, 0, 1401, 453, 369, 2286, 515, 0, 1174, 0, 1410, 0, 0, 874, 0,
159
0, 585, 2689, 526, 1538, 0, 2265, 0, 955, 0, 2702, 0, 0, 0, 0, 0,
160
0, 193, 0, 473, 1156, 2427, 532, 403, 0, 0, 0, 0, 2843, 206, 2302, 208,
161
0, 1358, 642, 0, 0, 1064, 0, 1577, 0, 1069, 2021, 2745, 2333, 0, 239, 1178,
162
1486, 2029, 2248, 0, 0, 0, 2688, 0, 0, 2086, 1231, 0, 237, 0, 714, 1336,
163
2573, 0, 2730, 0, 2120, 12, 0, 2082, 769, 0, 125, 0, 207, 1333, 1127, 396,
164
0, 672, 0, 1251, 0, 0, 0, 2312, 829, 1007, 544, 2041, 1143, 1332, 889, 0,
165
0, 2898, 0, 1491, 0, 0, 0, 0, 0, 167, 2923, 750, 0, 0, 0, 829,
166
770, 244, 0, 584, 429, 755, 1302, 0, 0, 85, 157, 122, 1071, 0, 1601, 0,
167
0, 1820, 0, 0, 344, 0, 0, 453, 1879, 0, 0, 0, 604, 1446, 452, 2722,
168
2875, 286, 0, 1183, 428, 0, 0, 175, 0, 0, 0, 0, 950, 2134, 0, 0,
169
1077, 1623, 1400, 13, 541, 0, 0, 0, 0, 0, 0, 672, 2057, 23, 1157, 1920,
170
0, 403, 0, 1927, 0, 0, 1101, 0, 329, 93, 2765, 0, 1213, 1450, 0, 0,
171
53, 996, 0, 2402, 0, 228, 407, 2001, 0, 0, 0, 2684, 1051, 0, 1926, 0,
172
0, 0, 0, 0, 0, 0, 1753, 0, 973, 2392, 605, 0, 1731, 979, 2853, 0,
173
309, 0, 1658, 238, 153, 2396, 0, 0, 1176, 482, 210, 1013, 0, 0, 1166, 115,
174
161, 0, 509, 282, 0, 0, 0, 1085, 287, 74, 780, 2243, 0, 1401, 1227, 444,
175
0, 266, 0, 973, 16, 1516, 834, 0, 1212, 2585, 2432, 1312, 0, 0, 0, 1204,
176
1587, 2654, 0, 619, 487, 603, 1128, 367, 1088, 0, 0, 0, 1309, 1099, 2806, 0,
177
0, 353, 2005, 2469, 0, 0, 0, 0, 264, 553, 441, 2219, 442, 0, 1192, 0,
178
1246, 0, 220, 432, 0, 0, 816, 879, 1241, 0, 1338, 476, 1029, 0, 271, 355,
179
0, 0, 262, 1988, 963, 1220, 2479, 2542, 44, 0, 1197, 592, 2476, 1451, 2668, 1895,
180
2531, 746, 0, 1483, 1389, 912, 1056, 0, 56, 0, 2077, 0, 1977, 1253, 2890, 2559,
181
0, 1363, 915, 2090, 0, 77, 0, 2222, 0, 1399, 2628, 0, 922, 379, 351, 472,
182
2504, 0, 0, 0, 1034, 802, 0, 0, 2529, 2202, 1575, 1724, 0, 0, 0, 24,
183
0, 1506, 0, 1380, 0, 218, 0, 1148, 1114, 0, 0, 1788, 0, 1648, 1646, 2151,
184
547, 0, 2099, 0, 0, 0, 2035, 1628, 0, 1359, 183, 991, 1251, 1202, 0, 1131,
185
0, 0, 1, 880, 625, 0, 0, 1412, 2082, 697, 0, 836, 195, 2063, 1266, 220,
186
0, 1508, 1454, 2484, 854, 0, 481, 2595, 1171, 1435, 0, 882, 1083, 0, 2616, 777,
187
741, 0, 934, 279, 2059, 574, 1626, 0, 2055, 1643, 0, 1859, 0, 0, 0, 957,
188
528, 0, 1411, 1579, 0, 850, 1618, 393, 0, 1277, 454, 62, 1159, 406, 1517, 138,
189
1092, 237, 0, 0, 1162, 2741, 0, 0, 0, 1494, 1048, 2051, 0, 1755, 2110, 98,
190
844, 324, 1435, 0, 1578, 2746, 1217, 0, 0, 0, 292, 2713, 2882, 1464, 2010, 740,
191
1476, 0, 0, 0, 0, 0, 0, 1248, 0, 0, 0, 1, 951, 814, 900, 2869,
192
2488, 0, 2070, 0, 715, 905, 1075, 367, 571, 0, 1210, 583, 676, 0, 2493, 72,
193
0, 0, 835, 2637, 896, 792, 80, 0, 1992, 0, 0, 0, 0, 1588, 1398, 319,
194
174, 545, 838, 382, 0, 0, 0, 0, 461, 554, 0, 571, 2846, 674, 961, 691,
195
894, 1216, 0, 0, 1347, 2631, 1696, 1778, 468, 1276, 1539, 0, 1518, 724, 1083, 593,
196
0, 970, 2017, 1025, 1122, 867, 2172, 521, 1582, 0, 1097, 425, 0, 0, 0, 0,
197
0, 1077, 1027, 0, 0, 0, 1077, 2615, 51, 1130, 1030, 579, 1457, 1450, 0, 0,
198
2500, 0, 0, 1125, 2482, 0, 1334, 77, 0, 1180, 1373, 2724, 0, 79, 141, 0,
199
586, 1323, 1366, 1528, 1566, 1680, 1761, 0, 1489, 0, 0, 2100, 0, 0, 1664, 933,
200
523, 1303, 1398, 2476, 0, 1356, 0, 2278, 114, 1793, 2510, 0, 517, 1932, 1218, 0,
201
0, 0, 0, 1488, 0, 0, 2321, 0, 710, 0, 0, 843, 0, 59, 1134, 1938,
202
2545, 2272, 81, 2714, 2266, 614, 305, 0, 456, 1104, 1170, 0, 0, 0, 587, 1379,
203
2323, 1709, 1344, 843, 2346, 1464, 0, 0, 0, 2622, 0, 0, 211, 0, 2888, 0,
204
0, 0, 457, 0, 0, 91, 455, 62, 2755, 569, 2817, 0, 1104, 2520, 1583, 0,
205
2755, 973, 329, 1110, 0, 0, 1136, 641, 439, 651, 1152, 479, 1622, 2271, 452, 668,
206
255, 0, 0, 488, 0, 2711, 1974, 846, 0, 789, 0, 0, 0, 2136, 131, 0,
207
0, 233, 2553, 2431, 2528, 0, 395, 0, 0, 408, 0, 70, 0, 0, 0, 412,
208
893, 0, 1450, 0, 0, 1844, 0, 2620, 1507, 1234, 2137, 0, 888, 2693, 0, 0,
209
0, 0, 0, 2372, 2603, 1635, 0, 909, 1575, 762, 2041, 409, 0, 1512, 267, 0,
210
0, 935, 0, 0, 2867, 901, 144, 74, 0, 0, 2884, 2638, 0, 0, 2813, 363,
211
203, 1609, 0, 1216, 0, 297, 1274, 117, 366, 491, 317, 530, 1050, 868, 1236, 0,
212
2780, 0, 1312, 1223, 797, 603, 0, 0, 1203, 0, 2548, 0, 1538, 0, 1241, 0,
213
0, 2775, 1719, 1399, 97, 0, 1082, 1731, 3, 0, 0, 387, 0, 1090, 1910, 32,
214
162, 0, 2922, 0, 0, 608, 347, 510, 1465, 0, 675, 0, 0, 770, 971, 1673,
215
1159, 0, 0, 496, 939, 0, 269, 314, 2776, 0, 1721, 1563, 1557, 0, 0, 665,
216
1436, 2506, 1641, 601, 2171, 0, 914, 0, 784, 1072, 0, 0, 0, 740, 1147, 0,
217
0, 714, 682, 2427, 0, 1071, 2550, 2169, 1146, 61, 1232, 816, 10, 1453, 0, 1117,
218
278, 559, 584, 1605, 0, 0, 2887, 990, 1101, 2030, 0, 0};
219
220
int MangledHashG(const char *key, const int *T)
221
{
222
int sum = 0;
223
224
for (int i = 0; key[i] != '\0'; i++)
225
{
226
sum += T[i] * key[i];
227
sum %= 2924;
228
}
229
return mangledkG[sum];
230
}
231
232
int MangledPerfectHash(const char *key)
233
{
234
if (strlen(key) > 40)
235
return 0;
236
237
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 2924;
238
}
239
240
constexpr int unmangledkT1[] = {117, 100, 175, 73, 62, 169, 79, 220, 4, 91, 224, 166, 55,
241
229, 227, 3, 24, 236, 181, 221, 15, 67, 197, 152, 35, 35};
242
constexpr int unmangledkT2[] = {189, 204, 50, 180, 250, 9, 42, 246, 97, 141, 38, 136, 163,
243
102, 48, 27, 254, 180, 50, 30, 105, 152, 194, 229, 33, 152};
244
constexpr int unmangledkG[] = {
245
0, 0, 27, 0, 57, 0, 170, 30, 35, 81, 0, 0, 115, 112, 204, 0, 154, 52, 7,
246
17, 79, 19, 0, 79, 0, 130, 0, 0, 223, 81, 198, 121, 0, 63, 0, 220, 0, 68,
247
0, 197, 0, 0, 0, 189, 0, 0, 0, 240, 6, 0, 95, 0, 68, 0, 0, 195, 0,
248
0, 98, 0, 237, 0, 0, 229, 86, 110, 0, 53, 170, 223, 11, 0, 0, 166, 0, 0,
249
18, 48, 54, 0, 232, 113, 96, 58, 0, 208, 254, 172, 243, 119, 0, 0, 58, 81, 196,
250
131, 0, 0, 106, 81, 0, 198, 0, 218, 0, 160, 197, 123, 0, 180, 152, 177, 187, 0,
251
0, 0, 0, 175, 91, 0, 140, 215, 0, 89, 0, 245, 0, 26, 0, 104, 62, 0, 141,
252
235, 220, 193, 0, 0, 175, 29, 28, 137, 45, 217, 0, 0, 193, 191, 246, 201, 0, 0,
253
183, 165, 32, 60, 221, 156, 103, 38, 174, 223, 0, 0, 0, 44, 180, 194, 244, 58, 242,
254
88, 0, 30, 227, 200, 15, 0, 141, 0, 37, 93, 171, 42, 207, 7, 143, 0, 0, 187,
255
19, 243, 191, 0, 0, 0, 16, 0, 190, 112, 125, 71, 0, 126, 130, 105, 0, 0, 0,
256
217, 154, 0, 37, 203, 0, 234, 0, 222, 0, 42, 0, 54, 39, 251, 0, 124, 149, 132,
257
0, 66, 47, 69, 146, 0, 68, 247, 0, 32, 33, 62, 208, 96, 130, 227, 18, 20, 233,
258
107, 0, 191, 0, 217, 50, 52, 96};
259
260
int UnmangledHashG(const char *key, const int *T)
261
{
262
int sum = 0;
263
264
for (int i = 0; key[i] != '\0'; i++)
265
{
266
sum += T[i] * key[i];
267
sum %= 255;
268
}
269
return unmangledkG[sum];
270
}
271
272
int UnmangledPerfectHash(const char *key)
273
{
274
if (strlen(key) > 26)
275
return 0;
276
277
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 255;
278
}
279
280
} // namespace
281
282
namespace sh
283
{
284
285
template <>
286
const size_t ImmutableString::FowlerNollVoHash<4>::kFnvPrime = 16777619u;
287
288
template <>
289
const size_t ImmutableString::FowlerNollVoHash<4>::kFnvOffsetBasis = 0x811c9dc5u;
290
291
template <>
292
const size_t ImmutableString::FowlerNollVoHash<8>::kFnvPrime =
293
static_cast<size_t>(1099511628211ull);
294
295
template <>
296
const size_t ImmutableString::FowlerNollVoHash<8>::kFnvOffsetBasis =
297
static_cast<size_t>(0xcbf29ce484222325ull);
298
299
uint32_t ImmutableString::mangledNameHash() const
300
{
301
return MangledPerfectHash(data());
302
}
303
304
uint32_t ImmutableString::unmangledNameHash() const
305
{
306
return UnmangledPerfectHash(data());
307
}
308
309
} // namespace sh
310
311