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