diff --git a/src/corelib/time/qtimezoneprivate_data_p.h b/src/corelib/time/qtimezoneprivate_data_p.h index 4678c80335c..d0c29b364e6 100644 --- a/src/corelib/time/qtimezoneprivate_data_p.h +++ b/src/corelib/time/qtimezoneprivate_data_p.h @@ -49,7 +49,7 @@ namespace QtTimeZoneCldr { struct AliasData { // Table is sorted on aliasId(), then on ianaId(). - // Indices in alias table, not IANA (group) table + // These are both indices into the IANA table. quint16 aliasIdIndex; quint16 ianaIdIndex; // Values for the actual IDs: @@ -57,14 +57,13 @@ struct AliasData constexpr QByteArrayView ianaId() const; }; -// FIXME: rename ianaIdData[] to ianaListData[], aliasIdData[] to ianaIdData[] struct ZoneData { // Keys (table is sorted in Windows ID, then on territory enum value): quint16 windowsIdKey; // Windows ID sequence number quint16 territory; // QLocale::Territory, AnyTerritory means No Territory // Values for this Windows zone and territory: - quint16 ianaIdIndex; // Index in ianaIdData of space-joined IANA IDs + quint16 ianaIdIndex; // Index in ianaListData of space-joined IANA IDs constexpr QLatin1StringView id() const; // Space-joined list of IANA IDs constexpr auto ids() const { return id().tokenize(u' '); } // Iterate IANA IDs }; @@ -75,16 +74,15 @@ struct WindowsData quint16 windowsIdKey; // Windows ID sequence number quint16 windowsIdIndex; // Index of Windows ID in windowsIdData // Values for this Windows zone: - quint16 ianaIdIndex; // Index in ianaIdData of space-joined IANA IDs + quint16 ianaIdIndex; // Index in ianaIdData of single IANA ID qint32 offsetFromUtc; // Standard Time Offset from UTC, used for quick look-ups - // FIXME: ianaIdIndex is actually always a single IANA ID, so re-route to alias table constexpr QByteArrayView windowsId() const; - constexpr QByteArrayView ianaId() const; // Space-joined list of IANA IDs + constexpr QByteArrayView ianaId() const; // Single IANA ID }; struct UtcData { - quint16 ianaIdIndex; // Index in ianaIdData of space-joined IANA IDs + quint16 ianaIdIndex; // Index in ianaListData of space-joined IANA IDs qint32 offsetFromUtc; // Offset form UTC in seconds constexpr QByteArrayView id() const; // Space-joined list of IANA IDs }; @@ -92,7 +90,7 @@ struct UtcData // GENERATED PART STARTS HERE /* - This part of the file was generated on 2024-05-31 from the + This part of the file was generated on 2024-06-11 from the Common Locale Data Repository v45 http://www.unicode.org/cldr/ @@ -102,7 +100,7 @@ struct UtcData edited) CLDR data; see qtbase/util/locale_database/. */ -// Alias ID Index, Alias ID Index +// IANA ID indices of alias and IANA ID static constexpr AliasData aliasMappingTable[] = { { 0, 14 }, // Africa/Asmera -> Africa/Asmara { 28, 44 }, // Africa/Timbuktu -> Africa/Bamako @@ -250,7 +248,7 @@ static constexpr AliasData aliasMappingTable[] = { { 3457, 2347 }, // Zulu -> Etc/UTC }; -// Windows ID Key, Territory Enum, IANA ID Index +// Windows ID Key, Territory Enum, IANA List Index static constexpr ZoneData zoneDataTable[] = { { 1, 1, 0 }, // Afghanistan Standard Time / Afghanistan { 2, 248, 11 }, // Alaskan Standard Time / United States @@ -621,191 +619,191 @@ static constexpr ZoneData zoneDataTable[] = { // Windows ID Key, Windows ID Index, IANA ID Index, UTC Offset static constexpr WindowsData windowsDataTable[] = { - { 1, 0, 0, 16200 }, // Afghanistan Standard Time - { 2, 26, 7184,-32400 }, // Alaskan Standard Time - { 3, 48, 106,-36000 }, // Aleutian Standard Time - { 4, 71, 119, 25200 }, // Altai Standard Time - { 5, 91, 168, 10800 }, // Arab Standard Time - { 6, 110, 212, 14400 }, // Arabian Standard Time - { 7, 132, 223, 10800 }, // Arabic Standard Time - { 8, 153, 7202,-10800 }, // Argentina Standard Time - { 9, 177, 7233, 14400 }, // Astrakhan Standard Time - { 10, 201, 7250,-14400 }, // Atlantic Standard Time - { 11, 224, 692, 34200 }, // AUS Central Standard Time - { 12, 250, 709, 31500 }, // Aus Central W. Standard Time - { 13, 279, 7266, 36000 }, // AUS Eastern Standard Time - { 14, 305, 762, 14400 }, // Azerbaijan Standard Time - { 15, 330, 793, -3600 }, // Azores Standard Time - { 16, 351, 809,-10800 }, // Bahia Standard Time - { 17, 371, 823, 21600 }, // Bangladesh Standard Time - { 18, 396, 847, 10800 }, // Belarus Standard Time - { 19, 418, 860, 39600 }, // Bougainville Standard Time - { 20, 445, 7283,-21600 }, // Canada Central Standard Time - { 21, 474, 928, -3600 }, // Cape Verde Standard Time - { 22, 499, 948, 14400 }, // Caucasus Standard Time - { 23, 522, 7298, 34200 }, // Cen. Australia Standard Time - { 24, 551, 1084,-21600 }, // Central America Standard Time - { 25, 581, 1192, 21600 }, // Central Asia Standard Time - { 26, 608, 7317,-14400 }, // Central Brazilian Standard Time - { 27, 640, 1269, 3600 }, // Central Europe Standard Time - { 28, 669, 1397, 3600 }, // Central European Standard Time - { 29, 700, 1485, 39600 }, // Central Pacific Standard Time - { 30, 730, 7332,-21600 }, // Central Standard Time - { 31, 752, 7348,-21600 }, // Central Standard Time (Mexico) - { 32, 783, 1878, 45900 }, // Chatham Islands Standard Time - { 33, 813, 1894, 28800 }, // China Standard Time - { 34, 833, 1934,-18000 }, // Cuba Standard Time - { 35, 852, 1949,-43200 }, // Dateline Standard Time - { 36, 875, 2050, 10800 }, // E. Africa Standard Time - { 37, 899, 7368, 36000 }, // E. Australia Standard Time - { 38, 926, 2191, 7200 }, // E. Europe Standard Time - { 39, 950, 2207,-10800 }, // E. South America Standard Time - { 40, 981, 2225,-21600 }, // Easter Island Standard Time - { 41, 1009, 7387,-18000 }, // Eastern Standard Time - { 42, 1031, 2461,-18000 }, // Eastern Standard Time (Mexico) - { 43, 1062, 2476, 7200 }, // Egypt Standard Time - { 44, 1082, 2489, 18000 }, // Ekaterinburg Standard Time - { 45, 1109, 2508, 43200 }, // Fiji Standard Time - { 46, 1128, 2609, 7200 }, // FLE Standard Time - { 47, 1146, 2621, 14400 }, // Georgian Standard Time - { 48, 1169, 2759, 0 }, // GMT Standard Time - { 49, 1187, 2773,-10800 }, // Greenland Standard Time - { 50, 1211, 2882, 0 }, // Greenwich Standard Time - { 51, 1235, 3066, 7200 }, // GTB Standard Time - { 52, 1253, 3083,-18000 }, // Haiti Standard Time - { 53, 1273, 3150,-36000 }, // Hawaiian Standard Time - { 54, 1296, 3167, 19800 }, // India Standard Time - { 55, 1316, 3180, 12600 }, // Iran Standard Time - { 56, 1335, 3192, 7200 }, // Israel Standard Time - { 57, 1356, 3207, 7200 }, // Jordan Standard Time - { 58, 1377, 3218, 7200 }, // Kaliningrad Standard Time - { 59, 1403, 3237, 32400 }, // Korea Standard Time - { 60, 1423, 3248, 7200 }, // Libya Standard Time - { 61, 1443, 3274, 50400 }, // Line Islands Standard Time - { 62, 1470, 3293, 37800 }, // Lord Howe Standard Time - { 63, 1494, 3313, 36000 }, // Magadan Standard Time - { 64, 1516, 3326,-10800 }, // Magallanes Standard Time - { 65, 1541, 3347,-34200 }, // Marquesas Standard Time - { 66, 1565, 3365, 14400 }, // Mauritius Standard Time - { 67, 1589, 3409, 7200 }, // Middle East Standard Time - { 68, 1615, 3421,-10800 }, // Montevideo Standard Time - { 69, 1640, 3440, 0 }, // Morocco Standard Time - { 70, 1662, 7404,-25200 }, // Mountain Standard Time - { 71, 1685, 3587,-25200 }, // Mountain Standard Time (Mexico) - { 72, 1717, 3617, 23400 }, // Myanmar Standard Time - { 73, 1739, 3629, 21600 }, // N. Central Asia Standard Time - { 74, 1769, 3646, 3600 }, // Namibia Standard Time - { 75, 1791, 3662, 20700 }, // Nepal Standard Time - { 76, 1811, 3696, 43200 }, // New Zealand Standard Time - { 77, 1837, 3713,-12600 }, // Newfoundland Standard Time - { 78, 1864, 3730, 39600 }, // Norfolk Standard Time - { 79, 1886, 3746, 28800 }, // North Asia East Standard Time - { 80, 1916, 7419, 25200 }, // North Asia Standard Time - { 81, 1941, 3794, 30600 }, // North Korea Standard Time - { 82, 1967, 3809, 21600 }, // Omsk Standard Time - { 83, 1986, 3819,-10800 }, // Pacific SA Standard Time - { 84, 2011, 3862,-28800 }, // Pacific Standard Time - { 85, 2033, 3882,-28800 }, // Pacific Standard Time (Mexico) - { 86, 2064, 3898, 18000 }, // Pakistan Standard Time - { 87, 2087, 3911,-14400 }, // Paraguay Standard Time - { 88, 2110, 3928, 18000 }, // Qyzylorda Standard Time - { 89, 2134, 3977, 3600 }, // Romance Standard Time - { 90, 2156, 4017, 39600 }, // Russia Time Zone 10 - { 91, 2176, 7436, 43200 }, // Russia Time Zone 11 - { 92, 2196, 4063, 14400 }, // Russia Time Zone 3 - { 93, 2215, 7451, 10800 }, // Russian Standard Time - { 94, 2237, 4265,-10800 }, // SA Eastern Standard Time - { 95, 2262, 4378,-18000 }, // SA Pacific Standard Time - { 96, 2287, 4529,-14400 }, // SA Western Standard Time - { 97, 2312, 4969,-10800 }, // Saint Pierre Standard Time - { 98, 2339, 4986, 39600 }, // Sakhalin Standard Time - { 99, 2362, 5000, 46800 }, // Samoa Standard Time - { 100, 2382, 5013, 0 }, // Sao Tome Standard Time - { 101, 2405, 5029, 14400 }, // Saratov Standard Time - { 102, 2427, 5147, 25200 }, // SE Asia Standard Time - { 103, 2449, 5256, 28800 }, // Singapore Standard Time - { 104, 2473, 5405, 7200 }, // South Africa Standard Time - { 105, 2500, 5453, 7200 }, // South Sudan Standard Time - { 106, 2526, 5465, 19800 }, // Sri Lanka Standard Time - { 107, 2550, 5478, 7200 }, // Sudan Standard Time - { 108, 2570, 5494, 7200 }, // Syria Standard Time - { 109, 2590, 5508, 28800 }, // Taipei Standard Time - { 110, 2611, 7465, 36000 }, // Tasmania Standard Time - { 111, 2634, 5558,-10800 }, // Tocantins Standard Time - { 112, 2658, 5600, 32400 }, // Tokyo Standard Time - { 113, 2678, 5635, 25200 }, // Tomsk Standard Time - { 114, 2698, 5646, 46800 }, // Tonga Standard Time - { 115, 2718, 5664, 32400 }, // Transbaikal Standard Time - { 116, 2744, 5675, 7200 }, // Turkey Standard Time - { 117, 2765, 5691,-14400 }, // Turks And Caicos Standard Time - { 118, 2796, 7482, 28800 }, // Ulaanbaatar Standard Time - { 119, 2822, 7499,-18000 }, // US Eastern Standard Time - { 120, 2847, 5904,-25200 }, // US Mountain Standard Time - { 121, 2873, 7528, 0 }, // UTC - { 122, 2877, 5936, 43200 }, // UTC+12 - { 123, 2884, 6054, 46800 }, // UTC+13 - { 124, 2891, 6096, -7200 }, // UTC-02 - { 125, 2898, 6145,-28800 }, // UTC-08 - { 126, 2905, 6172,-32400 }, // UTC-09 - { 127, 2912, 6198,-39600 }, // UTC-11 - { 128, 2919, 6255,-16200 }, // Venezuela Standard Time - { 129, 2943, 7536, 36000 }, // Vladivostok Standard Time - { 130, 2969, 6302, 14400 }, // Volgograd Standard Time - { 131, 2993, 6319, 28800 }, // W. Australia Standard Time - { 132, 3020, 6503, 3600 }, // W. Central Africa Standard Time - { 133, 3052, 7553, 3600 }, // W. Europe Standard Time - { 134, 3076, 6802, 25200 }, // W. Mongolia Standard Time - { 135, 3102, 7567, 18000 }, // West Asia Standard Time - { 136, 3126, 7581, 7200 }, // West Bank Standard Time - { 137, 3150, 7102, 36000 }, // West Pacific Standard Time - { 138, 3177, 7593, 32400 }, // Yakutsk Standard Time - { 139, 3199, 7606,-25200 }, // Yukon Standard Time + { 1, 0, 3462, 16200 }, // Afghanistan Standard Time + { 2, 26, 3173,-32400 }, // Alaskan Standard Time + { 3, 48, 132,-36000 }, // Aleutian Standard Time + { 4, 71, 3473, 25200 }, // Altai Standard Time + { 5, 91, 3486, 10800 }, // Arab Standard Time + { 6, 110, 3498, 14400 }, // Arabian Standard Time + { 7, 132, 3509, 10800 }, // Arabic Standard Time + { 8, 153, 166,-10800 }, // Argentina Standard Time + { 9, 177, 3522, 14400 }, // Astrakhan Standard Time + { 10, 201, 1923,-14400 }, // Atlantic Standard Time + { 11, 224, 1581, 34200 }, // AUS Central Standard Time + { 12, 250, 3539, 31500 }, // Aus Central W. Standard Time + { 13, 279, 1447, 36000 }, // AUS Eastern Standard Time + { 14, 305, 3555, 14400 }, // Azerbaijan Standard Time + { 15, 330, 3565, -3600 }, // Azores Standard Time + { 16, 351, 3581,-10800 }, // Bahia Standard Time + { 17, 371, 1060, 21600 }, // Bangladesh Standard Time + { 18, 396, 3595, 10800 }, // Belarus Standard Time + { 19, 418, 3608, 39600 }, // Bougainville Standard Time + { 20, 445, 1979,-21600 }, // Canada Central Standard Time + { 21, 474, 3629, -3600 }, // Cape Verde Standard Time + { 22, 499, 3649, 14400 }, // Caucasus Standard Time + { 23, 522, 1654, 34200 }, // Cen. Australia Standard Time + { 24, 551, 3662,-21600 }, // Central America Standard Time + { 25, 581, 3680, 21600 }, // Central Asia Standard Time + { 26, 608, 3693,-14400 }, // Central Brazilian Standard Time + { 27, 640, 3708, 3600 }, // Central Europe Standard Time + { 28, 669, 3059, 3600 }, // Central European Standard Time + { 29, 700, 3724, 39600 }, // Central Pacific Standard Time + { 30, 730, 3241,-21600 }, // Central Standard Time + { 31, 752, 2825,-21600 }, // Central Standard Time (Mexico) + { 32, 783, 2856, 45900 }, // Chatham Islands Standard Time + { 33, 813, 1020, 28800 }, // China Standard Time + { 34, 833, 2221,-18000 }, // Cuba Standard Time + { 35, 852, 3744,-43200 }, // Dateline Standard Time + { 36, 875, 3755, 10800 }, // E. Africa Standard Time + { 37, 899, 1619, 36000 }, // E. Australia Standard Time + { 38, 926, 2475, 7200 }, // E. Europe Standard Time + { 39, 950, 1862,-10800 }, // E. South America Standard Time + { 40, 981, 2201,-21600 }, // Easter Island Standard Time + { 41, 1009, 3284,-18000 }, // Eastern Standard Time + { 42, 1031, 3770,-18000 }, // Eastern Standard Time (Mexico) + { 43, 1062, 2256, 7200 }, // Egypt Standard Time + { 44, 1082, 3785, 18000 }, // Ekaterinburg Standard Time + { 45, 1109, 3804, 43200 }, // Fiji Standard Time + { 46, 1128, 2419, 7200 }, // FLE Standard Time + { 47, 1146, 3817, 14400 }, // Georgian Standard Time + { 48, 1169, 2393, 0 }, // GMT Standard Time + { 49, 1187, 393,-10800 }, // Greenland Standard Time + { 50, 1211, 2614, 0 }, // Greenwich Standard Time + { 51, 1235, 3830, 7200 }, // GTB Standard Time + { 52, 1253, 3847,-18000 }, // Haiti Standard Time + { 53, 1273, 2933,-36000 }, // Hawaiian Standard Time + { 54, 1296, 992, 19800 }, // India Standard Time + { 55, 1316, 2638, 12600 }, // Iran Standard Time + { 56, 1335, 1257, 7200 }, // Israel Standard Time + { 57, 1356, 3870, 7200 }, // Jordan Standard Time + { 58, 1377, 3881, 7200 }, // Kaliningrad Standard Time + { 59, 1403, 3116, 32400 }, // Korea Standard Time + { 60, 1423, 2732, 7200 }, // Libya Standard Time + { 61, 1443, 3900, 50400 }, // Line Islands Standard Time + { 62, 1470, 1531, 37800 }, // Lord Howe Standard Time + { 63, 1494, 3919, 36000 }, // Magadan Standard Time + { 64, 1516, 3932,-10800 }, // Magallanes Standard Time + { 65, 1541, 3953,-34200 }, // Marquesas Standard Time + { 66, 1565, 3971, 14400 }, // Mauritius Standard Time + { 67, 1589, 3988, 7200 }, // Middle East Standard Time + { 68, 1615, 4000,-10800 }, // Montevideo Standard Time + { 69, 1640, 4019, 0 }, // Morocco Standard Time + { 70, 1662, 805,-25200 }, // Mountain Standard Time + { 71, 1685, 2793,-25200 }, // Mountain Standard Time (Mexico) + { 72, 1717, 1202, 23400 }, // Myanmar Standard Time + { 73, 1739, 4037, 21600 }, // N. Central Asia Standard Time + { 74, 1769, 4054, 3600 }, // Namibia Standard Time + { 75, 1791, 1152, 20700 }, // Nepal Standard Time + { 76, 1811, 932, 43200 }, // New Zealand Standard Time + { 77, 1837, 2045,-12600 }, // Newfoundland Standard Time + { 78, 1864, 4070, 39600 }, // Norfolk Standard Time + { 79, 1886, 4086, 28800 }, // North Asia East Standard Time + { 80, 1916, 4099, 25200 }, // North Asia Standard Time + { 81, 1941, 4116, 30600 }, // North Korea Standard Time + { 82, 1967, 4131, 21600 }, // Omsk Standard Time + { 83, 1986, 2165,-10800 }, // Pacific SA Standard Time + { 84, 2011, 3380,-28800 }, // Pacific Standard Time + { 85, 2033, 313,-28800 }, // Pacific Standard Time (Mexico) + { 86, 2064, 4141, 18000 }, // Pakistan Standard Time + { 87, 2087, 4154,-14400 }, // Paraguay Standard Time + { 88, 2110, 4171, 18000 }, // Qyzylorda Standard Time + { 89, 2134, 4186, 3600 }, // Romance Standard Time + { 90, 2156, 4199, 39600 }, // Russia Time Zone 10 + { 91, 2176, 4218, 43200 }, // Russia Time Zone 11 + { 92, 2196, 4233, 14400 }, // Russia Time Zone 3 + { 93, 2215, 3443, 10800 }, // Russian Standard Time + { 94, 2237, 4247,-10800 }, // SA Eastern Standard Time + { 95, 2262, 4263,-18000 }, // SA Pacific Standard Time + { 96, 2287, 4278,-14400 }, // SA Western Standard Time + { 97, 2312, 4293,-10800 }, // Saint Pierre Standard Time + { 98, 2339, 4310, 39600 }, // Sakhalin Standard Time + { 99, 2362, 4324, 46800 }, // Samoa Standard Time + { 100, 2382, 4337, 0 }, // Sao Tome Standard Time + { 101, 2405, 4353, 14400 }, // Saratov Standard Time + { 102, 2427, 4368, 25200 }, // SE Asia Standard Time + { 103, 2449, 3137, 28800 }, // Singapore Standard Time + { 104, 2473, 4381, 7200 }, // South Africa Standard Time + { 105, 2500, 4401, 7200 }, // South Sudan Standard Time + { 106, 2526, 4413, 19800 }, // Sri Lanka Standard Time + { 107, 2550, 4426, 7200 }, // Sudan Standard Time + { 108, 2570, 4442, 7200 }, // Syria Standard Time + { 109, 2590, 3100, 28800 }, // Taipei Standard Time + { 110, 2611, 1500, 36000 }, // Tasmania Standard Time + { 111, 2634, 4456,-10800 }, // Tocantins Standard Time + { 112, 2658, 2687, 32400 }, // Tokyo Standard Time + { 113, 2678, 4474, 25200 }, // Tomsk Standard Time + { 114, 2698, 4485, 46800 }, // Tonga Standard Time + { 115, 2718, 4503, 32400 }, // Transbaikal Standard Time + { 116, 2744, 1097, 7200 }, // Turkey Standard Time + { 117, 2765, 4514,-14400 }, // Turks And Caicos Standard Time + { 118, 2796, 1346, 28800 }, // Ulaanbaatar Standard Time + { 119, 2822, 348,-18000 }, // US Eastern Standard Time + { 120, 2847, 3214,-25200 }, // US Mountain Standard Time + { 121, 2873, 2347, 0 }, // UTC + { 122, 2877, 4533, 43200 }, // UTC+12 + { 123, 2884, 4544, 46800 }, // UTC+13 + { 124, 2891, 4555, -7200 }, // UTC-02 + { 125, 2898, 4565,-28800 }, // UTC-08 + { 126, 2905, 4575,-32400 }, // UTC-09 + { 127, 2912, 4585,-39600 }, // UTC-11 + { 128, 2919, 4596,-16200 }, // Venezuela Standard Time + { 129, 2943, 4612, 36000 }, // Vladivostok Standard Time + { 130, 2969, 4629, 14400 }, // Volgograd Standard Time + { 131, 2993, 1746, 28800 }, // W. Australia Standard Time + { 132, 3020, 4646, 3600 }, // W. Central Africa Standard Time + { 133, 3052, 4659, 3600 }, // W. Europe Standard Time + { 134, 3076, 4673, 25200 }, // W. Mongolia Standard Time + { 135, 3102, 4683, 18000 }, // West Asia Standard Time + { 136, 3126, 4697, 7200 }, // West Bank Standard Time + { 137, 3150, 4709, 36000 }, // West Pacific Standard Time + { 138, 3177, 4730, 32400 }, // Yakutsk Standard Time + { 139, 3199, 2128,-25200 }, // Yukon Standard Time }; -// IANA ID Index, UTC Offset +// IANA List Index, UTC Offset static constexpr UtcData utcDataTable[] = { - { 7625,-50400 }, // UTC-14:00 - { 7635,-46800 }, // UTC-13:00 - { 7645,-43200 }, // UTC-12:00 - { 7655,-39600 }, // UTC-11:00 - { 7665,-36000 }, // UTC-10:00 - { 7675,-34200 }, // UTC-09:30 - { 7685,-32400 }, // UTC-09:00 - { 7695,-28800 }, // UTC-08:00 - { 7705,-25200 }, // UTC-07:00 - { 7715,-21600 }, // UTC-06:00 - { 7725,-18000 }, // UTC-05:00 - { 7735,-16200 }, // UTC-04:30 - { 7745,-14400 }, // UTC-04:00 - { 7755,-12600 }, // UTC-03:30 - { 7765,-10800 }, // UTC-03:00 - { 7775, -7200 }, // UTC-02:00 - { 7785, -3600 }, // UTC-01:00 - { 7795, 0 }, // UTC - { 7819, 3600 }, // UTC+01:00 - { 7829, 7200 }, // UTC+02:00 - { 7839, 10800 }, // UTC+03:00 - { 7849, 12600 }, // UTC+03:30 - { 7859, 14400 }, // UTC+04:00 - { 7869, 16200 }, // UTC+04:30 - { 7879, 18000 }, // UTC+05:00 - { 7889, 19800 }, // UTC+05:30 - { 7899, 20700 }, // UTC+05:45 - { 7909, 21600 }, // UTC+06:00 - { 7919, 23400 }, // UTC+06:30 - { 7929, 25200 }, // UTC+07:00 - { 7939, 28800 }, // UTC+08:00 - { 7949, 30600 }, // UTC+08:30 - { 7959, 31500 }, // UTC+08:45 - { 7969, 32400 }, // UTC+09:00 - { 7979, 34200 }, // UTC+09:30 - { 7989, 36000 }, // UTC+10:00 - { 7999, 37800 }, // UTC+10:30 - { 8009, 39600 }, // UTC+11:00 - { 8019, 43200 }, // UTC+12:00 - { 8029, 45900 }, // UTC+12:45 - { 8039, 46800 }, // UTC+13:00 - { 8049, 50400 }, // UTC+14:00 + { 7184,-50400 }, // UTC-14:00 + { 7194,-46800 }, // UTC-13:00 + { 7204,-43200 }, // UTC-12:00 + { 7214,-39600 }, // UTC-11:00 + { 7224,-36000 }, // UTC-10:00 + { 7234,-34200 }, // UTC-09:30 + { 7244,-32400 }, // UTC-09:00 + { 7254,-28800 }, // UTC-08:00 + { 7264,-25200 }, // UTC-07:00 + { 7274,-21600 }, // UTC-06:00 + { 7284,-18000 }, // UTC-05:00 + { 7294,-16200 }, // UTC-04:30 + { 7304,-14400 }, // UTC-04:00 + { 7314,-12600 }, // UTC-03:30 + { 7324,-10800 }, // UTC-03:00 + { 7334, -7200 }, // UTC-02:00 + { 7344, -3600 }, // UTC-01:00 + { 7354, 0 }, // UTC + { 7378, 3600 }, // UTC+01:00 + { 7388, 7200 }, // UTC+02:00 + { 7398, 10800 }, // UTC+03:00 + { 7408, 12600 }, // UTC+03:30 + { 7418, 14400 }, // UTC+04:00 + { 7428, 16200 }, // UTC+04:30 + { 7438, 18000 }, // UTC+05:00 + { 7448, 19800 }, // UTC+05:30 + { 7458, 20700 }, // UTC+05:45 + { 7468, 21600 }, // UTC+06:00 + { 7478, 23400 }, // UTC+06:30 + { 7488, 25200 }, // UTC+07:00 + { 7498, 28800 }, // UTC+08:00 + { 7508, 30600 }, // UTC+08:30 + { 7518, 31500 }, // UTC+08:45 + { 7528, 32400 }, // UTC+09:00 + { 7538, 34200 }, // UTC+09:30 + { 7548, 36000 }, // UTC+10:00 + { 7558, 37800 }, // UTC+10:30 + { 7568, 39600 }, // UTC+11:00 + { 7578, 43200 }, // UTC+12:00 + { 7588, 45900 }, // UTC+12:45 + { 7598, 46800 }, // UTC+13:00 + { 7608, 50400 }, // UTC+14:00 }; static constexpr char windowsIdData[] = { @@ -1013,7 +1011,7 @@ static constexpr char windowsIdData[] = { 0x6d, 0x65, 0x0 }; -static constexpr char ianaIdData[] = { +static constexpr char ianaListData[] = { 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x62, 0x75, 0x6c, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x6e, 0x65, 0x61, 0x75, 0x20, 0x41, 0x6d, 0x65, 0x72, @@ -1463,64 +1461,37 @@ static constexpr char ianaIdData[] = { 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x68, 0x61, 0x6e, 0x64, 0x79, 0x67, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6f, 0x72, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x0, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61, 0x67, -0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, -0x69, 0x6e, 0x61, 0x2f, 0x42, 0x75, 0x65, 0x6e, 0x6f, 0x73, 0x5f, 0x41, 0x69, 0x72, 0x65, 0x73, -0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x73, 0x74, 0x72, 0x61, 0x6b, 0x68, 0x61, -0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x6c, 0x69, 0x66, 0x61, -0x78, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x53, 0x79, 0x64, 0x6e, -0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x67, 0x69, 0x6e, -0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x41, 0x64, 0x65, 0x6c, -0x61, 0x69, 0x64, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x75, 0x69, -0x61, 0x62, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x63, -0x61, 0x67, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x78, 0x69, -0x63, 0x6f, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, -0x61, 0x2f, 0x42, 0x72, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x59, 0x6f, 0x72, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, -0x4b, 0x72, 0x61, 0x73, 0x6e, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x4b, 0x61, 0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, -0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, -0x69, 0x61, 0x2f, 0x48, 0x6f, 0x62, 0x61, 0x72, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, -0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, -0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x55, 0x54, 0x43, 0x0, -0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x6c, 0x61, 0x64, 0x69, 0x76, 0x6f, 0x73, 0x74, 0x6f, 0x6b, -0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x0, 0x41, -0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x6e, 0x74, 0x0, 0x41, 0x73, 0x69, -0x61, 0x2f, 0x48, 0x65, 0x62, 0x72, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x61, -0x6b, 0x75, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x68, -0x69, 0x74, 0x65, 0x68, 0x6f, 0x72, 0x73, 0x65, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x34, 0x3a, -0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, -0x2d, 0x31, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x31, 0x3a, 0x30, 0x30, -0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, -0x39, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x39, 0x3a, 0x30, 0x30, 0x0, 0x55, -0x54, 0x43, 0x2d, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x37, 0x3a, -0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x36, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, -0x2d, 0x30, 0x35, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x34, 0x3a, 0x33, 0x30, -0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, -0x33, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, -0x54, 0x43, 0x2d, 0x30, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x31, 0x3a, -0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x20, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x30, 0x3a, 0x30, 0x30, -0x20, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, -0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, -0x54, 0x43, 0x2b, 0x30, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x33, 0x3a, -0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, -0x2b, 0x30, 0x34, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x30, 0x30, -0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, -0x35, 0x3a, 0x34, 0x35, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x36, 0x3a, 0x30, 0x30, 0x0, 0x55, -0x54, 0x43, 0x2b, 0x30, 0x36, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x37, 0x3a, -0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, -0x2b, 0x30, 0x38, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a, 0x34, 0x35, -0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x39, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, -0x39, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, -0x54, 0x43, 0x2b, 0x31, 0x30, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x31, 0x3a, -0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, -0x2b, 0x31, 0x32, 0x3a, 0x34, 0x35, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x33, 0x3a, 0x30, 0x30, -0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x34, 0x3a, 0x30, 0x30, 0x0 +0x55, 0x54, 0x43, 0x2d, 0x31, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x33, +0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, +0x43, 0x2d, 0x31, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x30, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x39, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, +0x30, 0x39, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x0, +0x55, 0x54, 0x43, 0x2d, 0x30, 0x37, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x36, +0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x35, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, +0x43, 0x2d, 0x30, 0x34, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x34, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x33, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, +0x30, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x32, 0x3a, 0x30, 0x30, 0x0, +0x55, 0x54, 0x43, 0x2d, 0x30, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x20, 0x55, 0x54, +0x43, 0x2b, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x20, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x30, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, +0x30, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x33, 0x3a, 0x30, 0x30, 0x0, +0x55, 0x54, 0x43, 0x2b, 0x30, 0x33, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x34, +0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x34, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, +0x43, 0x2b, 0x30, 0x35, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x33, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x34, 0x35, 0x0, 0x55, 0x54, 0x43, 0x2b, +0x30, 0x36, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x36, 0x3a, 0x33, 0x30, 0x0, +0x55, 0x54, 0x43, 0x2b, 0x30, 0x37, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x38, +0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, +0x43, 0x2b, 0x30, 0x38, 0x3a, 0x34, 0x35, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x39, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x39, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, +0x31, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x30, 0x3a, 0x33, 0x30, 0x0, +0x55, 0x54, 0x43, 0x2b, 0x31, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x32, +0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x32, 0x3a, 0x34, 0x35, 0x0, 0x55, 0x54, +0x43, 0x2b, 0x31, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x34, 0x3a, 0x30, +0x30, 0x0 }; -static constexpr char aliasIdData[] = { +static constexpr char ianaIdData[] = { 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x6d, 0x65, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x6d, 0x61, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x69, 0x6d, 0x62, 0x75, 0x6b, 0x74, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, @@ -1737,18 +1708,98 @@ static constexpr char aliasIdData[] = { 0x69, 0x63, 0x2d, 0x4e, 0x65, 0x77, 0x0, 0x55, 0x53, 0x2f, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x0, 0x55, 0x54, 0x43, 0x0, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x0, 0x57, 0x2d, 0x53, 0x55, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, -0x0, 0x5a, 0x75, 0x6c, 0x75, 0x0 +0x0, 0x5a, 0x75, 0x6c, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x62, 0x75, 0x6c, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x72, 0x6e, 0x61, 0x75, 0x6c, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x52, 0x69, 0x79, 0x61, 0x64, 0x68, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, +0x75, 0x62, 0x61, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x67, 0x68, 0x64, 0x61, +0x64, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x73, 0x74, 0x72, 0x61, 0x6b, 0x68, +0x61, 0x6e, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x45, 0x75, 0x63, +0x6c, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x6b, 0x75, 0x0, 0x41, 0x74, 0x6c, +0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x41, 0x7a, 0x6f, 0x72, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x68, 0x69, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, +0x65, 0x2f, 0x4d, 0x69, 0x6e, 0x73, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, +0x42, 0x6f, 0x75, 0x67, 0x61, 0x69, 0x6e, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x74, 0x6c, +0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x61, 0x70, 0x65, 0x5f, 0x56, 0x65, 0x72, 0x64, 0x65, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x65, 0x72, 0x65, 0x76, 0x61, 0x6e, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x68, 0x6b, 0x65, 0x6b, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x75, 0x69, 0x61, 0x62, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, +0x70, 0x65, 0x2f, 0x42, 0x75, 0x64, 0x61, 0x70, 0x65, 0x73, 0x74, 0x0, 0x50, 0x61, 0x63, 0x69, +0x66, 0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x61, 0x6c, 0x63, 0x61, 0x6e, 0x61, 0x6c, 0x0, +0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x32, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x4e, 0x61, 0x69, 0x72, 0x6f, 0x62, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x43, 0x61, 0x6e, 0x63, 0x75, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x65, +0x6b, 0x61, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x0, 0x50, 0x61, 0x63, 0x69, +0x66, 0x69, 0x63, 0x2f, 0x46, 0x69, 0x6a, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x62, +0x69, 0x6c, 0x69, 0x73, 0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x63, +0x68, 0x61, 0x72, 0x65, 0x73, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, +0x6f, 0x72, 0x74, 0x2d, 0x61, 0x75, 0x2d, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x41, 0x6d, 0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, +0x4b, 0x61, 0x6c, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x0, 0x50, 0x61, 0x63, 0x69, +0x66, 0x69, 0x63, 0x2f, 0x4b, 0x69, 0x72, 0x69, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x0, 0x41, +0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x67, 0x61, 0x64, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x6e, 0x74, 0x61, 0x5f, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, +0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x72, 0x71, 0x75, 0x65, 0x73, +0x61, 0x73, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, +0x69, 0x75, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x65, 0x69, 0x72, 0x75, 0x74, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, +0x65, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x73, 0x61, 0x62, 0x6c, +0x61, 0x6e, 0x63, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x73, 0x69, +0x62, 0x69, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69, 0x6e, +0x64, 0x68, 0x6f, 0x65, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x6f, +0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x49, 0x72, 0x6b, 0x75, 0x74, +0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x73, 0x6e, 0x6f, 0x79, 0x61, +0x72, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x79, 0x6f, 0x6e, 0x67, 0x79, 0x61, +0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, +0x61, 0x2f, 0x4b, 0x61, 0x72, 0x61, 0x63, 0x68, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x41, 0x73, 0x75, 0x6e, 0x63, 0x69, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, +0x51, 0x79, 0x7a, 0x79, 0x6c, 0x6f, 0x72, 0x64, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, +0x2f, 0x50, 0x61, 0x72, 0x69, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x72, 0x65, 0x64, +0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x79, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, +0x61, 0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, +0x53, 0x61, 0x6d, 0x61, 0x72, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, +0x61, 0x79, 0x65, 0x6e, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, +0x6f, 0x67, 0x6f, 0x74, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, +0x5f, 0x50, 0x61, 0x7a, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x69, 0x71, +0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x6b, 0x68, 0x61, +0x6c, 0x69, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x70, 0x69, 0x61, +0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x54, 0x6f, 0x6d, 0x65, +0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x76, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, 0x0, 0x41, 0x66, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4a, 0x6f, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x73, 0x62, 0x75, 0x72, 0x67, +0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x62, 0x61, 0x0, 0x41, 0x73, 0x69, +0x61, 0x2f, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x4b, 0x68, 0x61, 0x72, 0x74, 0x6f, 0x75, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, +0x61, 0x6d, 0x61, 0x73, 0x63, 0x75, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x41, 0x72, 0x61, 0x67, 0x75, 0x61, 0x69, 0x6e, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, +0x6f, 0x6d, 0x73, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x6f, 0x6e, +0x67, 0x61, 0x74, 0x61, 0x70, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x74, +0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x61, 0x6e, 0x64, 0x5f, +0x54, 0x75, 0x72, 0x6b, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x32, 0x0, +0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x33, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, +0x4d, 0x54, 0x2b, 0x32, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x38, 0x0, 0x45, +0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x39, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, +0x2b, 0x31, 0x31, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x72, 0x61, +0x63, 0x61, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x6c, 0x61, 0x64, 0x69, 0x76, 0x6f, +0x73, 0x74, 0x6f, 0x6b, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x6f, 0x6c, 0x67, +0x6f, 0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x67, +0x6f, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x6f, 0x76, 0x64, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, +0x54, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x6e, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x65, +0x62, 0x72, 0x6f, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x6f, 0x72, +0x74, 0x5f, 0x4d, 0x6f, 0x72, 0x65, 0x73, 0x62, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, +0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x0 }; // GENERATED PART ENDS HERE -constexpr QByteArrayView AliasData::aliasId() const { return aliasIdData + aliasIdIndex; } -constexpr QByteArrayView AliasData::ianaId() const { return aliasIdData + ianaIdIndex; } +constexpr QByteArrayView AliasData::aliasId() const { return ianaIdData + aliasIdIndex; } +constexpr QByteArrayView AliasData::ianaId() const { return ianaIdData + ianaIdIndex; } constexpr QByteArrayView WindowsData::windowsId() const { return windowsIdData + windowsIdIndex; } -// Each of the following returns a space-joined sequence of IANA IDs: constexpr QByteArrayView WindowsData::ianaId() const { return ianaIdData + ianaIdIndex; } -constexpr QByteArrayView UtcData::id() const { return ianaIdData + ianaIdIndex; } +// Each of the following returns a space-joined sequence of IANA IDs: +constexpr QByteArrayView UtcData::id() const { return ianaListData + ianaIdIndex; } constexpr QLatin1StringView ZoneData::id() const -{ return QLatin1StringView(ianaIdData + ianaIdIndex); } +{ return QLatin1StringView(ianaListData + ianaIdIndex); } } // namespace QtTimeZoneCldr diff --git a/util/locale_database/qlocalexml2cpp.py b/util/locale_database/qlocalexml2cpp.py index 8d03e6d72ad..4001ea37998 100755 --- a/util/locale_database/qlocalexml2cpp.py +++ b/util/locale_database/qlocalexml2cpp.py @@ -198,7 +198,7 @@ class TimeZoneDataWriter (LocaleSourceEditor): offsetMap[offset] = offsetMap.get(offset, ()) + (name,) # Write UTC ID key table - out('// IANA ID Index, UTC Offset\n') + out('// IANA List Index, UTC Offset\n') out('static constexpr UtcData utcDataTable[] = {\n') for offset in sorted(offsetMap.keys()): # Sort so C++ can binary-chop. names = offsetMap[offset]; @@ -209,7 +209,7 @@ class TimeZoneDataWriter (LocaleSourceEditor): def aliasToIana(self, pairs): out, store = self.writer.write, self.__ianaTable.append - out('// Alias ID Index, Alias ID Index\n') + out('// IANA ID indices of alias and IANA ID\n') out('static constexpr AliasData aliasMappingTable[] = {\n') for name, iana in pairs: # They're ready-sorted assert name != iana, (alias, iana) # Filtered out in QLocaleXmlWriter @@ -219,8 +219,9 @@ class TimeZoneDataWriter (LocaleSourceEditor): def msToIana(self, pairs): out, winStore = self.writer.write, self.__windowsTable.append - ianaStore = self.__ianaListTable.append # TODO: Should be __ianaTable + ianaStore = self.__ianaTable.append alias = dict(pairs) # {MS name: IANA ID} + assert all(not any(x.isspace() for x in iana) for iana in alias.values()) out('// Windows ID Key, Windows ID Index, IANA ID Index, UTC Offset\n') out('static constexpr WindowsData windowsDataTable[] = {\n') @@ -238,7 +239,7 @@ class TimeZoneDataWriter (LocaleSourceEditor): seq = sorted((self.windowsKey[name][0], landKey[land][0], name, landKey[land][1], ianas) for name, land, ianas in triples) - out('// Windows ID Key, Territory Enum, IANA ID Index\n') + out('// Windows ID Key, Territory Enum, IANA List Index\n') out('static constexpr ZoneData zoneDataTable[] = {\n') # Sorted by (Windows ID Key, territory enum) for winId, landId, name, land, ianas in seq: @@ -248,10 +249,8 @@ class TimeZoneDataWriter (LocaleSourceEditor): def writeTables(self): self.__windowsTable.write(self.writer.write, 'windowsIdData') - # TODO: these are misnamed, entries in the first are lists, - # those in the next are single IANA IDs - self.__ianaListTable.write(self.writer.write, 'ianaIdData') - self.__ianaTable.write(self.writer.write, 'aliasIdData') + self.__ianaListTable.write(self.writer.write, 'ianaListData') + self.__ianaTable.write(self.writer.write, 'ianaIdData') # Implementation details: @staticmethod