Fix naming of timezone data tables

Two FIXME comments related to the misnaming of string data tables: a
table of space-joined lists of IANA IDs was named ianaIdData, as a
result of which a table of single IANA IDs (and some aliases) was
named aliasIdData. A field in one struct was an index into the former
even though its values were actually single IANA IDs.

So rename the list data table to ianaListData, reusing its old name
for the former ianaIdData, and transfer the single-ID data from the
ID-list table to the single-ID table. Moving that data changed
indexing into both string tables and thus all of the data-tables
referencing these tables.

Task-number: QTBUG-115158
Change-Id: I84165736e91d0bf127f3f9f3b95e9c3060a30c12
Reviewed-by: Mate Barany <mate.barany@qt.io>
This commit is contained in:
Edward Welbourne 2024-06-11 15:15:29 +02:00
parent 678f6d4727
commit 0d44ee89f8
2 changed files with 313 additions and 263 deletions

View File

@ -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

View File

@ -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