authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-06 12:37:51-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2019-06-06 12:37:51-04:00
logfb5e03b983f7a7a776b4f67f2426da6b7ecfdb0c
treec54282c7897e95dd89a5374c599372ef750f212e
parenta682b0acb6e74348117eddffe6b966e7720efa61
parent26613bfa011ec63b1f3a141e0201223853cc04e6
signature Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #2628 from emekoi/error-unexpected

windows.unexpectedError prints a human friendly string

6 files changed, 415 insertions(+), 1 deletions(-)

CMakeLists.txt+2
......@@ -630,9 +630,11 @@ set(ZIG_STD_FILES
630630 "os/windows/bits.zig"
631631 "os/windows/error.zig"
632632 "os/windows/kernel32.zig"
633 "os/windows/lang.zig"
633634 "os/windows/ntdll.zig"
634635 "os/windows/ole32.zig"
635636 "os/windows/shell32.zig"
637 "os/windows/sublang.zig"
636638 "os/zen.zig"
637639 "packed_int_array.zig"
638640 "pdb.zig"
std/os/windows.zig+13-1
......@@ -756,11 +756,23 @@ pub fn sliceToPrefixedSuffixedFileW(s: []const u8, comptime suffix: []const u16)
756756 return result;
757757}
758758
759inline fn MAKELANGID(p: c_ushort, s: c_ushort) LANGID {
760 return (s << 10) | p;
761}
762
759763/// Call this when you made a windows DLL call or something that does SetLastError
760764/// and you get an unexpected error.
761765pub fn unexpectedError(err: DWORD) std.os.UnexpectedError {
762766 if (std.os.unexpected_error_tracing) {
763 std.debug.warn("unexpected GetLastError(): {}\n", err);
767 // 614 is the length of the longest windows error desciption
768 var buf_u16: [614]u16 = undefined;
769 var buf_u8: [614]u8 = undefined;
770 var len = kernel32.FormatMessageW(
771 FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
772 null, err, MAKELANGID(LANG.NEUTRAL, SUBLANG.DEFAULT),
773 buf_u16[0..].ptr, buf_u16.len / @sizeOf(TCHAR), null);
774 _ = std.unicode.utf16leToUtf8(&buf_u8, buf_u16[0..len]) catch unreachable;
775 std.debug.warn("error.Unexpected: GetLastError({}): {}\n", err, buf_u8[0..len]);
764776 std.debug.dumpCurrentStackTrace(null);
765777 }
766778 return error.Unexpected;
std/os/windows/bits.zig+14
......@@ -6,6 +6,8 @@ const assert = std.debug.assert;
66const maxInt = std.math.maxInt;
77
88pub const ERROR = @import("error.zig");
9pub const LANG = @import("lang.zig");
10pub const SUBLANG = @import("sublang.zig");
911
1012/// The standard input device. Initially, this is the console input buffer, CONIN$.
1113pub const STD_INPUT_HANDLE = maxInt(DWORD) - 10 + 1;
......@@ -55,6 +57,10 @@ pub const ULONG = u32;
5557pub const LONG = i32;
5658pub const ULONGLONG = u64;
5759pub const LONGLONG = i64;
60pub const HLOCAL = HANDLE;
61pub const LANGID = c_ushort;
62
63pub const va_list = *@OpaqueType();
5864
5965pub const TRUE = 1;
6066pub const FALSE = 0;
......@@ -525,3 +531,11 @@ pub const COINIT = extern enum {
525531/// > this expansion applies to the total length.
526532/// from https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#maximum-path-length-limitation
527533pub const PATH_MAX_WIDE = 32767;
534
535pub const FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100;
536pub const FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000;
537pub const FORMAT_MESSAGE_FROM_HMODULE = 0x00000800;
538pub const FORMAT_MESSAGE_FROM_STRING = 0x00000400;
539pub const FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000;
540pub const FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200;
541pub const FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF;
std/os/windows/kernel32.zig+2
......@@ -50,6 +50,8 @@ pub extern "kernel32" stdcallcc fn FindFirstFileW(lpFileName: [*]const u16, lpFi
5050pub extern "kernel32" stdcallcc fn FindClose(hFindFile: HANDLE) BOOL;
5151pub extern "kernel32" stdcallcc fn FindNextFileW(hFindFile: HANDLE, lpFindFileData: *WIN32_FIND_DATAW) BOOL;
5252
53pub extern "kernel32" stdcallcc fn FormatMessageW(dwFlags: DWORD, lpSource: ?LPVOID, dwMessageId: DWORD, dwLanguageId: DWORD, lpBuffer: LPWSTR, nSize: DWORD, Arguments: ?*va_list) DWORD;
54
5355pub extern "kernel32" stdcallcc fn FreeEnvironmentStringsW(penv: [*]u16) BOOL;
5456
5557pub extern "kernel32" stdcallcc fn GetCommandLineA() LPSTR;
std/os/windows/lang.zig created+140
......@@ -0,0 +1,140 @@
1pub const NEUTRAL = 0x00;
2pub const INVARIANT = 0x7f;
3pub const AFRIKAANS = 0x36;
4pub const ALBANIAN = 0x1c;
5pub const ALSATIAN = 0x84;
6pub const AMHARIC = 0x5e;
7pub const ARABIC = 0x01;
8pub const ARMENIAN = 0x2b;
9pub const ASSAMESE = 0x4d;
10pub const AZERI = 0x2c;
11pub const AZERBAIJANI = 0x2c;
12pub const BANGLA = 0x45;
13pub const BASHKIR = 0x6d;
14pub const BASQUE = 0x2d;
15pub const BELARUSIAN = 0x23;
16pub const BENGALI = 0x45;
17pub const BRETON = 0x7e;
18pub const BOSNIAN = 0x1a;
19pub const BOSNIAN_NEUTRAL = 0x781a;
20pub const BULGARIAN = 0x02;
21pub const CATALAN = 0x03;
22pub const CENTRAL_KURDISH = 0x92;
23pub const CHEROKEE = 0x5c;
24pub const CHINESE = 0x04;
25pub const CHINESE_SIMPLIFIED = 0x04;
26pub const CHINESE_TRADITIONAL = 0x7c04;
27pub const CORSICAN = 0x83;
28pub const CROATIAN = 0x1a;
29pub const CZECH = 0x05;
30pub const DANISH = 0x06;
31pub const DARI = 0x8c;
32pub const DIVEHI = 0x65;
33pub const DUTCH = 0x13;
34pub const ENGLISH = 0x09;
35pub const ESTONIAN = 0x25;
36pub const FAEROESE = 0x38;
37pub const FARSI = 0x29;
38pub const FILIPINO = 0x64;
39pub const FINNISH = 0x0b;
40pub const FRENCH = 0x0c;
41pub const FRISIAN = 0x62;
42pub const FULAH = 0x67;
43pub const GALICIAN = 0x56;
44pub const GEORGIAN = 0x37;
45pub const GERMAN = 0x07;
46pub const GREEK = 0x08;
47pub const GREENLANDIC = 0x6f;
48pub const GUJARATI = 0x47;
49pub const HAUSA = 0x68;
50pub const HAWAIIAN = 0x75;
51pub const HEBREW = 0x0d;
52pub const HINDI = 0x39;
53pub const HUNGARIAN = 0x0e;
54pub const ICELANDIC = 0x0f;
55pub const IGBO = 0x70;
56pub const INDONESIAN = 0x21;
57pub const INUKTITUT = 0x5d;
58pub const IRISH = 0x3c;
59pub const ITALIAN = 0x10;
60pub const JAPANESE = 0x11;
61pub const KANNADA = 0x4b;
62pub const KASHMIRI = 0x60;
63pub const KAZAK = 0x3f;
64pub const KHMER = 0x53;
65pub const KICHE = 0x86;
66pub const KINYARWANDA = 0x87;
67pub const KONKANI = 0x57;
68pub const KOREAN = 0x12;
69pub const KYRGYZ = 0x40;
70pub const LAO = 0x54;
71pub const LATVIAN = 0x26;
72pub const LITHUANIAN = 0x27;
73pub const LOWER_SORBIAN = 0x2e;
74pub const LUXEMBOURGISH = 0x6e;
75pub const MACEDONIAN = 0x2f;
76pub const MALAY = 0x3e;
77pub const MALAYALAM = 0x4c;
78pub const MALTESE = 0x3a;
79pub const MANIPURI = 0x58;
80pub const MAORI = 0x81;
81pub const MAPUDUNGUN = 0x7a;
82pub const MARATHI = 0x4e;
83pub const MOHAWK = 0x7c;
84pub const MONGOLIAN = 0x50;
85pub const NEPALI = 0x61;
86pub const NORWEGIAN = 0x14;
87pub const OCCITAN = 0x82;
88pub const ODIA = 0x48;
89pub const ORIYA = 0x48;
90pub const PASHTO = 0x63;
91pub const PERSIAN = 0x29;
92pub const POLISH = 0x15;
93pub const PORTUGUESE = 0x16;
94pub const PULAR = 0x67;
95pub const PUNJABI = 0x46;
96pub const QUECHUA = 0x6b;
97pub const ROMANIAN = 0x18;
98pub const ROMANSH = 0x17;
99pub const RUSSIAN = 0x19;
100pub const SAKHA = 0x85;
101pub const SAMI = 0x3b;
102pub const SANSKRIT = 0x4f;
103pub const SCOTTISH_GAELIC = 0x91;
104pub const SERBIAN = 0x1a;
105pub const SERBIAN_NEUTRAL = 0x7c1a;
106pub const SINDHI = 0x59;
107pub const SINHALESE = 0x5b;
108pub const SLOVAK = 0x1b;
109pub const SLOVENIAN = 0x24;
110pub const SOTHO = 0x6c;
111pub const SPANISH = 0x0a;
112pub const SWAHILI = 0x41;
113pub const SWEDISH = 0x1d;
114pub const SYRIAC = 0x5a;
115pub const TAJIK = 0x28;
116pub const TAMAZIGHT = 0x5f;
117pub const TAMIL = 0x49;
118pub const TATAR = 0x44;
119pub const TELUGU = 0x4a;
120pub const THAI = 0x1e;
121pub const TIBETAN = 0x51;
122pub const TIGRIGNA = 0x73;
123pub const TIGRINYA = 0x73;
124pub const TSWANA = 0x32;
125pub const TURKISH = 0x1f;
126pub const TURKMEN = 0x42;
127pub const UIGHUR = 0x80;
128pub const UKRAINIAN = 0x22;
129pub const UPPER_SORBIAN = 0x2e;
130pub const URDU = 0x20;
131pub const UZBEK = 0x43;
132pub const VALENCIAN = 0x03;
133pub const VIETNAMESE = 0x2a;
134pub const WELSH = 0x52;
135pub const WOLOF = 0x88;
136pub const XHOSA = 0x34;
137pub const YAKUT = 0x85;
138pub const YI = 0x78;
139pub const YORUBA = 0x6a;
140pub const ZULU = 0x35;
std/os/windows/sublang.zig created+244
......@@ -0,0 +1,244 @@
1pub const NEUTRAL = 0x00;
2pub const DEFAULT = 0x01;
3pub const SYS_DEFAULT = 0x02;
4pub const CUSTOM_DEFAULT = 0x03;
5pub const CUSTOM_UNSPECIFIED = 0x04;
6pub const UI_CUSTOM_DEFAULT = 0x05;
7pub const AFRIKAANS_SOUTH_AFRICA = 0x01;
8pub const ALBANIAN_ALBANIA = 0x01;
9pub const ALSATIAN_FRANCE = 0x01;
10pub const AMHARIC_ETHIOPIA = 0x01;
11pub const ARABIC_SAUDI_ARABIA = 0x01;
12pub const ARABIC_IRAQ = 0x02;
13pub const ARABIC_EGYPT = 0x03;
14pub const ARABIC_LIBYA = 0x04;
15pub const ARABIC_ALGERIA = 0x05;
16pub const ARABIC_MOROCCO = 0x06;
17pub const ARABIC_TUNISIA = 0x07;
18pub const ARABIC_OMAN = 0x08;
19pub const ARABIC_YEMEN = 0x09;
20pub const ARABIC_SYRIA = 0x0a;
21pub const ARABIC_JORDAN = 0x0b;
22pub const ARABIC_LEBANON = 0x0c;
23pub const ARABIC_KUWAIT = 0x0d;
24pub const ARABIC_UAE = 0x0e;
25pub const ARABIC_BAHRAIN = 0x0f;
26pub const ARABIC_QATAR = 0x10;
27pub const ARMENIAN_ARMENIA = 0x01;
28pub const ASSAMESE_INDIA = 0x01;
29pub const AZERI_LATIN = 0x01;
30pub const AZERI_CYRILLIC = 0x02;
31pub const AZERBAIJANI_AZERBAIJAN_LATIN = 0x01;
32pub const AZERBAIJANI_AZERBAIJAN_CYRILLIC = 0x02;
33pub const BANGLA_INDIA = 0x01;
34pub const BANGLA_BANGLADESH = 0x02;
35pub const BASHKIR_RUSSIA = 0x01;
36pub const BASQUE_BASQUE = 0x01;
37pub const BELARUSIAN_BELARUS = 0x01;
38pub const BENGALI_INDIA = 0x01;
39pub const BENGALI_BANGLADESH = 0x02;
40pub const BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 0x05;
41pub const BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 0x08;
42pub const BRETON_FRANCE = 0x01;
43pub const BULGARIAN_BULGARIA = 0x01;
44pub const CATALAN_CATALAN = 0x01;
45pub const CENTRAL_KURDISH_IRAQ = 0x01;
46pub const CHEROKEE_CHEROKEE = 0x01;
47pub const CHINESE_TRADITIONAL = 0x01;
48pub const CHINESE_SIMPLIFIED = 0x02;
49pub const CHINESE_HONGKONG = 0x03;
50pub const CHINESE_SINGAPORE = 0x04;
51pub const CHINESE_MACAU = 0x05;
52pub const CORSICAN_FRANCE = 0x01;
53pub const CZECH_CZECH_REPUBLIC = 0x01;
54pub const CROATIAN_CROATIA = 0x01;
55pub const CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 0x04;
56pub const DANISH_DENMARK = 0x01;
57pub const DARI_AFGHANISTAN = 0x01;
58pub const DIVEHI_MALDIVES = 0x01;
59pub const DUTCH = 0x01;
60pub const DUTCH_BELGIAN = 0x02;
61pub const ENGLISH_US = 0x01;
62pub const ENGLISH_UK = 0x02;
63pub const ENGLISH_AUS = 0x03;
64pub const ENGLISH_CAN = 0x04;
65pub const ENGLISH_NZ = 0x05;
66pub const ENGLISH_EIRE = 0x06;
67pub const ENGLISH_SOUTH_AFRICA = 0x07;
68pub const ENGLISH_JAMAICA = 0x08;
69pub const ENGLISH_CARIBBEAN = 0x09;
70pub const ENGLISH_BELIZE = 0x0a;
71pub const ENGLISH_TRINIDAD = 0x0b;
72pub const ENGLISH_ZIMBABWE = 0x0c;
73pub const ENGLISH_PHILIPPINES = 0x0d;
74pub const ENGLISH_INDIA = 0x10;
75pub const ENGLISH_MALAYSIA = 0x11;
76pub const ENGLISH_SINGAPORE = 0x12;
77pub const ESTONIAN_ESTONIA = 0x01;
78pub const FAEROESE_FAROE_ISLANDS = 0x01;
79pub const FILIPINO_PHILIPPINES = 0x01;
80pub const FINNISH_FINLAND = 0x01;
81pub const FRENCH = 0x01;
82pub const FRENCH_BELGIAN = 0x02;
83pub const FRENCH_CANADIAN = 0x03;
84pub const FRENCH_SWISS = 0x04;
85pub const FRENCH_LUXEMBOURG = 0x05;
86pub const FRENCH_MONACO = 0x06;
87pub const FRISIAN_NETHERLANDS = 0x01;
88pub const FULAH_SENEGAL = 0x02;
89pub const GALICIAN_GALICIAN = 0x01;
90pub const GEORGIAN_GEORGIA = 0x01;
91pub const GERMAN = 0x01;
92pub const GERMAN_SWISS = 0x02;
93pub const GERMAN_AUSTRIAN = 0x03;
94pub const GERMAN_LUXEMBOURG = 0x04;
95pub const GERMAN_LIECHTENSTEIN = 0x05;
96pub const GREEK_GREECE = 0x01;
97pub const GREENLANDIC_GREENLAND = 0x01;
98pub const GUJARATI_INDIA = 0x01;
99pub const HAUSA_NIGERIA_LATIN = 0x01;
100pub const HAWAIIAN_US = 0x01;
101pub const HEBREW_ISRAEL = 0x01;
102pub const HINDI_INDIA = 0x01;
103pub const HUNGARIAN_HUNGARY = 0x01;
104pub const ICELANDIC_ICELAND = 0x01;
105pub const IGBO_NIGERIA = 0x01;
106pub const INDONESIAN_INDONESIA = 0x01;
107pub const INUKTITUT_CANADA = 0x01;
108pub const INUKTITUT_CANADA_LATIN = 0x02;
109pub const IRISH_IRELAND = 0x02;
110pub const ITALIAN = 0x01;
111pub const ITALIAN_SWISS = 0x02;
112pub const JAPANESE_JAPAN = 0x01;
113pub const KANNADA_INDIA = 0x01;
114pub const KASHMIRI_SASIA = 0x02;
115pub const KASHMIRI_INDIA = 0x02;
116pub const KAZAK_KAZAKHSTAN = 0x01;
117pub const KHMER_CAMBODIA = 0x01;
118pub const KICHE_GUATEMALA = 0x01;
119pub const KINYARWANDA_RWANDA = 0x01;
120pub const KONKANI_INDIA = 0x01;
121pub const KOREAN = 0x01;
122pub const KYRGYZ_KYRGYZSTAN = 0x01;
123pub const LAO_LAO = 0x01;
124pub const LATVIAN_LATVIA = 0x01;
125pub const LITHUANIAN = 0x01;
126pub const LOWER_SORBIAN_GERMANY = 0x02;
127pub const LUXEMBOURGISH_LUXEMBOURG = 0x01;
128pub const MACEDONIAN_MACEDONIA = 0x01;
129pub const MALAY_MALAYSIA = 0x01;
130pub const MALAY_BRUNEI_DARUSSALAM = 0x02;
131pub const MALAYALAM_INDIA = 0x01;
132pub const MALTESE_MALTA = 0x01;
133pub const MAORI_NEW_ZEALAND = 0x01;
134pub const MAPUDUNGUN_CHILE = 0x01;
135pub const MARATHI_INDIA = 0x01;
136pub const MOHAWK_MOHAWK = 0x01;
137pub const MONGOLIAN_CYRILLIC_MONGOLIA = 0x01;
138pub const MONGOLIAN_PRC = 0x02;
139pub const NEPALI_INDIA = 0x02;
140pub const NEPALI_NEPAL = 0x01;
141pub const NORWEGIAN_BOKMAL = 0x01;
142pub const NORWEGIAN_NYNORSK = 0x02;
143pub const OCCITAN_FRANCE = 0x01;
144pub const ODIA_INDIA = 0x01;
145pub const ORIYA_INDIA = 0x01;
146pub const PASHTO_AFGHANISTAN = 0x01;
147pub const PERSIAN_IRAN = 0x01;
148pub const POLISH_POLAND = 0x01;
149pub const PORTUGUESE = 0x02;
150pub const PORTUGUESE_BRAZILIAN = 0x01;
151pub const PULAR_SENEGAL = 0x02;
152pub const PUNJABI_INDIA = 0x01;
153pub const PUNJABI_PAKISTAN = 0x02;
154pub const QUECHUA_BOLIVIA = 0x01;
155pub const QUECHUA_ECUADOR = 0x02;
156pub const QUECHUA_PERU = 0x03;
157pub const ROMANIAN_ROMANIA = 0x01;
158pub const ROMANSH_SWITZERLAND = 0x01;
159pub const RUSSIAN_RUSSIA = 0x01;
160pub const SAKHA_RUSSIA = 0x01;
161pub const SAMI_NORTHERN_NORWAY = 0x01;
162pub const SAMI_NORTHERN_SWEDEN = 0x02;
163pub const SAMI_NORTHERN_FINLAND = 0x03;
164pub const SAMI_LULE_NORWAY = 0x04;
165pub const SAMI_LULE_SWEDEN = 0x05;
166pub const SAMI_SOUTHERN_NORWAY = 0x06;
167pub const SAMI_SOUTHERN_SWEDEN = 0x07;
168pub const SAMI_SKOLT_FINLAND = 0x08;
169pub const SAMI_INARI_FINLAND = 0x09;
170pub const SANSKRIT_INDIA = 0x01;
171pub const SCOTTISH_GAELIC = 0x01;
172pub const SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 0x06;
173pub const SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 0x07;
174pub const SERBIAN_MONTENEGRO_LATIN = 0x0b;
175pub const SERBIAN_MONTENEGRO_CYRILLIC = 0x0c;
176pub const SERBIAN_SERBIA_LATIN = 0x09;
177pub const SERBIAN_SERBIA_CYRILLIC = 0x0a;
178pub const SERBIAN_CROATIA = 0x01;
179pub const SERBIAN_LATIN = 0x02;
180pub const SERBIAN_CYRILLIC = 0x03;
181pub const SINDHI_INDIA = 0x01;
182pub const SINDHI_PAKISTAN = 0x02;
183pub const SINDHI_AFGHANISTAN = 0x02;
184pub const SINHALESE_SRI_LANKA = 0x01;
185pub const SOTHO_NORTHERN_SOUTH_AFRICA = 0x01;
186pub const SLOVAK_SLOVAKIA = 0x01;
187pub const SLOVENIAN_SLOVENIA = 0x01;
188pub const SPANISH = 0x01;
189pub const SPANISH_MEXICAN = 0x02;
190pub const SPANISH_MODERN = 0x03;
191pub const SPANISH_GUATEMALA = 0x04;
192pub const SPANISH_COSTA_RICA = 0x05;
193pub const SPANISH_PANAMA = 0x06;
194pub const SPANISH_DOMINICAN_REPUBLIC = 0x07;
195pub const SPANISH_VENEZUELA = 0x08;
196pub const SPANISH_COLOMBIA = 0x09;
197pub const SPANISH_PERU = 0x0a;
198pub const SPANISH_ARGENTINA = 0x0b;
199pub const SPANISH_ECUADOR = 0x0c;
200pub const SPANISH_CHILE = 0x0d;
201pub const SPANISH_URUGUAY = 0x0e;
202pub const SPANISH_PARAGUAY = 0x0f;
203pub const SPANISH_BOLIVIA = 0x10;
204pub const SPANISH_EL_SALVADOR = 0x11;
205pub const SPANISH_HONDURAS = 0x12;
206pub const SPANISH_NICARAGUA = 0x13;
207pub const SPANISH_PUERTO_RICO = 0x14;
208pub const SPANISH_US = 0x15;
209pub const SWAHILI_KENYA = 0x01;
210pub const SWEDISH = 0x01;
211pub const SWEDISH_FINLAND = 0x02;
212pub const SYRIAC_SYRIA = 0x01;
213pub const TAJIK_TAJIKISTAN = 0x01;
214pub const TAMAZIGHT_ALGERIA_LATIN = 0x02;
215pub const TAMAZIGHT_MOROCCO_TIFINAGH = 0x04;
216pub const TAMIL_INDIA = 0x01;
217pub const TAMIL_SRI_LANKA = 0x02;
218pub const TATAR_RUSSIA = 0x01;
219pub const TELUGU_INDIA = 0x01;
220pub const THAI_THAILAND = 0x01;
221pub const TIBETAN_PRC = 0x01;
222pub const TIGRIGNA_ERITREA = 0x02;
223pub const TIGRINYA_ERITREA = 0x02;
224pub const TIGRINYA_ETHIOPIA = 0x01;
225pub const TSWANA_BOTSWANA = 0x02;
226pub const TSWANA_SOUTH_AFRICA = 0x01;
227pub const TURKISH_TURKEY = 0x01;
228pub const TURKMEN_TURKMENISTAN = 0x01;
229pub const UIGHUR_PRC = 0x01;
230pub const UKRAINIAN_UKRAINE = 0x01;
231pub const UPPER_SORBIAN_GERMANY = 0x01;
232pub const URDU_PAKISTAN = 0x01;
233pub const URDU_INDIA = 0x02;
234pub const UZBEK_LATIN = 0x01;
235pub const UZBEK_CYRILLIC = 0x02;
236pub const VALENCIAN_VALENCIA = 0x02;
237pub const VIETNAMESE_VIETNAM = 0x01;
238pub const WELSH_UNITED_KINGDOM = 0x01;
239pub const WOLOF_SENEGAL = 0x01;
240pub const XHOSA_SOUTH_AFRICA = 0x01;
241pub const YAKUT_RUSSIA = 0x01;
242pub const YI_PRC = 0x01;
243pub const YORUBA_NIGERIA = 0x01;
244pub const ZULU_SOUTH_AFRICA = 0x01;