1 /**
2 * D header file for C99.
3 *
4 * $(C_HEADER_DESCRIPTION pubs.opengroup.org/onlinepubs/009695399/basedefs/_locale.h.html, _locale.h)
5 *
6 * Copyright: Copyright Sean Kelly 2005 - 2009.
7 * License: Distributed under the
8 * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0).
9 * (See accompanying file LICENSE)
10 * Authors: Sean Kelly
11 * Source: $(DRUNTIMESRC core/stdc/_locale.d)
12 * Standards: ISO/IEC 9899:1999 (E)
13 */
14
15 module core.stdc.locale;
16
17 version (OSX)
18 version = Darwin;
19 else version (iOS)
20 version = Darwin;
21 else version (TVOS)
22 version = Darwin;
23 else version (WatchOS)
24 version = Darwin;
25
26 extern (C):
27 @trusted: // Only setlocale operates on C strings.
28 nothrow:
29 @nogc:
30
31 ///
32 struct lconv
33 {
34 char* decimal_point;
35 char* thousands_sep;
36 char* grouping;
37 char* int_curr_symbol;
38 char* currency_symbol;
39 char* mon_decimal_point;
40 char* mon_thousands_sep;
41 char* mon_grouping;
42 char* positive_sign;
43 char* negative_sign;
44 byte int_frac_digits;
45 byte frac_digits;
46 byte p_cs_precedes;
47 byte p_sep_by_space;
48 byte n_cs_precedes;
49 byte n_sep_by_space;
50 byte p_sign_posn;
51 byte n_sign_posn;
52 byte int_p_cs_precedes;
53 byte int_p_sep_by_space;
54 byte int_n_cs_precedes;
55 byte int_n_sep_by_space;
56 byte int_p_sign_posn;
57 byte int_n_sign_posn;
58 }
59
version(CRuntime_Glibc)60 version (CRuntime_Glibc)
61 {
62 ///
63 enum LC_CTYPE = 0;
64 ///
65 enum LC_NUMERIC = 1;
66 ///
67 enum LC_TIME = 2;
68 ///
69 enum LC_COLLATE = 3;
70 ///
71 enum LC_MONETARY = 4;
72 ///
73 enum LC_MESSAGES = 5;
74 ///
75 enum LC_ALL = 6;
76 ///
77 enum LC_PAPER = 7; // non-standard
78 ///
79 enum LC_NAME = 8; // non-standard
80 ///
81 enum LC_ADDRESS = 9; // non-standard
82 ///
83 enum LC_TELEPHONE = 10; // non-standard
84 ///
85 enum LC_MEASUREMENT = 11; // non-standard
86 ///
87 enum LC_IDENTIFICATION = 12; // non-standard
88 }
version(Windows)89 else version (Windows)
90 {
91 ///
92 enum LC_ALL = 0;
93 ///
94 enum LC_COLLATE = 1;
95 ///
96 enum LC_CTYPE = 2;
97 ///
98 enum LC_MONETARY = 3;
99 ///
100 enum LC_NUMERIC = 4;
101 ///
102 enum LC_TIME = 5;
103 }
version(Darwin)104 else version (Darwin)
105 {
106 ///
107 enum LC_ALL = 0;
108 ///
109 enum LC_COLLATE = 1;
110 ///
111 enum LC_CTYPE = 2;
112 ///
113 enum LC_MONETARY = 3;
114 ///
115 enum LC_NUMERIC = 4;
116 ///
117 enum LC_TIME = 5;
118 ///
119 enum LC_MESSAGES = 6;
120 }
version(FreeBSD)121 else version (FreeBSD)
122 {
123 ///
124 enum LC_ALL = 0;
125 ///
126 enum LC_COLLATE = 1;
127 ///
128 enum LC_CTYPE = 2;
129 ///
130 enum LC_MONETARY = 3;
131 ///
132 enum LC_NUMERIC = 4;
133 ///
134 enum LC_TIME = 5;
135 ///
136 enum LC_MESSAGES = 6;
137 }
version(NetBSD)138 else version (NetBSD)
139 {
140 ///
141 enum LC_ALL = 0;
142 ///
143 enum LC_COLLATE = 1;
144 ///
145 enum LC_CTYPE = 2;
146 ///
147 enum LC_MONETARY = 3;
148 ///
149 enum LC_NUMERIC = 4;
150 ///
151 enum LC_TIME = 5;
152 ///
153 enum LC_MESSAGES = 6;
154 }
version(OpenBSD)155 else version (OpenBSD)
156 {
157 ///
158 enum LC_ALL = 0;
159 ///
160 enum LC_COLLATE = 1;
161 ///
162 enum LC_CTYPE = 2;
163 ///
164 enum LC_MONETARY = 3;
165 ///
166 enum LC_NUMERIC = 4;
167 ///
168 enum LC_TIME = 5;
169 ///
170 enum LC_MESSAGES = 6;
171 }
version(DragonFlyBSD)172 else version (DragonFlyBSD)
173 {
174 ///
175 enum LC_ALL = 0;
176 ///
177 enum LC_COLLATE = 1;
178 ///
179 enum LC_CTYPE = 2;
180 ///
181 enum LC_MONETARY = 3;
182 ///
183 enum LC_NUMERIC = 4;
184 ///
185 enum LC_TIME = 5;
186 ///
187 enum LC_MESSAGES = 6;
188 }
version(CRuntime_Bionic)189 else version (CRuntime_Bionic)
190 {
191 enum
192 {
193 ///
194 LC_CTYPE = 0,
195 ///
196 LC_NUMERIC = 1,
197 ///
198 LC_TIME = 2,
199 ///
200 LC_COLLATE = 3,
201 ///
202 LC_MONETARY = 4,
203 ///
204 LC_MESSAGES = 5,
205 ///
206 LC_ALL = 6,
207 ///
208 LC_PAPER = 7,
209 ///
210 LC_NAME = 8,
211 ///
212 LC_ADDRESS = 9,
213 ///
214 LC_TELEPHONE = 10,
215 ///
216 LC_MEASUREMENT = 11,
217 ///
218 LC_IDENTIFICATION = 12,
219 }
220 }
221 else version (Solaris)
222 {
223 ///
224 enum LC_CTYPE = 0;
225 ///
226 enum LC_NUMERIC = 1;
227 ///
228 enum LC_TIME = 2;
229 ///
230 enum LC_COLLATE = 3;
231 ///
232 enum LC_MONETARY = 4;
233 ///
234 enum LC_MESSAGES = 5;
235 ///
236 enum LC_ALL = 6;
237 }
238 else version (CRuntime_Musl)
239 {
240 ///
241 enum LC_CTYPE = 0;
242 ///
243 enum LC_NUMERIC = 1;
244 ///
245 enum LC_TIME = 2;
246 ///
247 enum LC_COLLATE = 3;
248 ///
249 enum LC_MONETARY = 4;
250 ///
251 enum LC_MESSAGES = 5;
252 ///
253 enum LC_ALL = 6;
254 }
255 else version (CRuntime_UClibc)
256 {
257 ///
258 enum LC_CTYPE = 0;
259 ///
260 enum LC_NUMERIC = 1;
261 ///
262 enum LC_TIME = 2;
263 ///
264 enum LC_COLLATE = 3;
265 ///
266 enum LC_MONETARY = 4;
267 ///
268 enum LC_MESSAGES = 5;
269 ///
270 enum LC_ALL = 6;
271 ///
272 enum LC_PAPER = 7;
273 ///
274 enum LC_NAME = 8;
275 ///
276 enum LC_ADDRESS = 9;
277 ///
278 enum LC_TELEPHONE = 10;
279 ///
280 enum LC_MEASUREMENT = 11;
281 ///
282 enum LC_IDENTIFICATION = 12;
283 }
284 else
285 {
286 static assert(false, "Unsupported platform");
287 }
288
289 ///
290 @system char* setlocale(int category, in char* locale);
291 ///
292 lconv* localeconv();
293