summaryrefslogtreecommitdiffstats
path: root/include/xlocale.h
blob: 1f27894f9c9723d53abd3994e49e97315105d56c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
/*-
 * Copyright (c) 2011 The FreeBSD Foundation
 * All rights reserved.
 *
 * This software was developed by David Chisnall under sponsorship from
 * the FreeBSD Foundation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1.  Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _XLOCALE_H_
#define _XLOCALE_H_

#include <locale.h>

__BEGIN_DECLS

/*
 * Extended locale versions of the locale-aware functions from string.h.
 *
 * Include <string.h> before <xlocale.h> to expose these.
 */
#ifdef _STRING_H_
int	 strcoll_l(const char *, const char *, locale_t);
size_t	 strxfrm_l(char *, const char *, size_t, locale_t);
int	 strcasecmp_l(const char *, const char *, locale_t);
char	*strcasestr_l(const char *, const char *, locale_t);
int	 strncasecmp_l(const char *, const char *, size_t, locale_t);
#endif
/*
 * Extended locale versions of the locale-aware functions from inttypes.h.
 *
 * Include <inttypes.h> before <xlocale.h> to expose these.
 */
#ifdef _INTTYPES_H_
intmax_t 
strtoimax_l(const char * __restrict, char ** __restrict, int, locale_t);
uintmax_t
strtoumax_l(const char * __restrict, char ** __restrict, int, locale_t);
intmax_t 
wcstoimax_l(const wchar_t * __restrict, wchar_t ** __restrict, int , locale_t);
uintmax_t
wcstoumax_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t);
#endif
/*
 * Extended locale versions of the locale-aware functions from monetary.h.
 *
 * Include <monetary.h> before <xlocale.h> to expose these.
 */
#ifdef _MONETARY_H_
ssize_t strfmon_l(char *, size_t, locale_t, const char *, ...)
#	if __GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7
	__attribute__((__format__ (__strfmon__, 4, 5)))
#	endif
	;
#endif

/*
 * Extended locale versions of the locale-aware functions from stdlib.h.
 *
 * Include <stdlib.h> before <xlocale.h> to expose these.
 */
#ifdef _STDLIB_H_
double	 atof_l(const char *, locale_t);
int	 atoi_l(const char *, locale_t);
long	 atol_l(const char *, locale_t);
long long	 atoll_l(const char *, locale_t);
int	 mblen_l(const char *, size_t, locale_t);
size_t
mbstowcs_l(wchar_t * __restrict, const char * __restrict, size_t, locale_t);
int
mbtowc_l(wchar_t * __restrict, const char * __restrict, size_t, locale_t);
double	 strtod_l(const char *, char **, locale_t);
float	 strtof_l(const char *, char **, locale_t);
long	 strtol_l(const char *, char **, int, locale_t);
long	 double strtold_l(const char *, char **, locale_t);
long long	 strtoll_l(const char *, char **, int, locale_t);
unsigned long	 strtoul_l(const char *, char **, int, locale_t);
unsigned long long	 strtoull_l(const char *, char **, int, locale_t);
size_t
wcstombs_l(char * __restrict, const wchar_t * __restrict, size_t, locale_t);
int	 wctomb_l(char *, wchar_t, locale_t);

int	 ___mb_cur_max_l(locale_t);
#define MB_CUR_MAX_L(x) (___mb_cur_max_l(x))

#endif
/*
 * Extended locale versions of the locale-aware functions from time.h.
 *
 * Include <time.h> before <xlocale.h> to expose these.
 */
#ifdef _TIME_H_
size_t
strftime_l(char * __restrict, size_t, const char * __restrict, const
           struct tm * __restrict, locale_t)
#	if __GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7
	__attribute__((__format__ (__strftime__, 3, 0)))
#	endif
	;
char *
strptime_l(const char * __restrict, const char * __restrict,
           struct tm * __restrict, locale_t);
#endif
#ifdef _LANGINFO_H_
char	*nl_langinfo_l(nl_item, locale_t);
#endif
#ifdef _CTYPE_H_
#include <_xlocale_ctype.h>
#endif
#ifdef _WCTYPE_H_
#define XLOCALE_WCTYPES 1
#include <_xlocale_ctype.h>
#endif

#ifdef _STDIO_H_
int	 fprintf_l(FILE * __restrict, locale_t, const char * __restrict, ...)
		__printflike(3, 4);
int	 fscanf_l(FILE * __restrict, locale_t, const char * __restrict, ...)
		__scanflike(3, 4);
int	 printf_l(locale_t, const char * __restrict, ...) __printflike(2, 3);
int	 scanf_l(locale_t, const char * __restrict, ...) __scanflike(2, 3);
int	 sprintf_l(char * __restrict, locale_t, const char * __restrict, ...)
		__printflike(3, 4);
int	 sscanf_l(const char * __restrict, locale_t, const char * __restrict, ...)
		__scanflike(3, 4);
int	 vfprintf_l(FILE * __restrict, locale_t, const char * __restrict, __va_list)
		__printflike(3, 0);
int	 vprintf_l(locale_t, const char * __restrict, __va_list) __printflike(2, 0);
int	 vsprintf_l(char * __restrict, locale_t, const char * __restrict, __va_list)
		__printflike(3, 0);

int	 snprintf_l(char * __restrict, size_t, locale_t, const char * __restrict,
		...) __printflike(4, 5);
int	 vfscanf_l(FILE * __restrict, locale_t, const char * __restrict, __va_list)
		__scanflike(3, 0);
int	 vscanf_l(locale_t, const char * __restrict, __va_list) __scanflike(2, 0);
int	 vsnprintf_l(char * __restrict, size_t, locale_t, const char * __restrict,
		__va_list) __printflike(4, 0);
int	 vsscanf_l(const char * __restrict, locale_t, const char * __restrict,
		__va_list) __scanflike(3, 0);
int	 dprintf_l(int, locale_t, const char * __restrict, ...) __printflike(3, 4);
int	 vdprintf_l(int, locale_t, const char * __restrict, __va_list)
		__printflike(3, 0);
int	 asprintf_l(char **, locale_t, const char *, ...) __printflike(3, 4);
int	 vasprintf_l(char **, locale_t, const char *, __va_list) __printflike(3, 0);
#endif
#ifdef _WCHAR_H_
wint_t	 btowc_l(int, locale_t);
wint_t	 fgetwc_l(FILE *, locale_t);
wchar_t *
fgetws_l(wchar_t * __restrict, int, FILE * __restrict, locale_t);
wint_t	 fputwc_l(wchar_t, FILE *, locale_t);
int
fputws_l(const wchar_t * __restrict, FILE * __restrict, locale_t);
int
fwprintf_l(FILE * __restrict, locale_t, const wchar_t * __restrict,
		...);
int
fwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, ...);
wint_t	 getwc_l(FILE *, locale_t);
wint_t	 getwchar_l(locale_t);
size_t
mbrlen_l(const char * __restrict, size_t, mbstate_t * __restrict, locale_t);
size_t
mbrtowc_l(wchar_t * __restrict, const char * __restrict, size_t,
		mbstate_t * __restrict, locale_t);
int	 mbsinit_l(const mbstate_t *, locale_t);
size_t
mbsrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t,
		mbstate_t * __restrict, locale_t);
wint_t	 putwc_l(wchar_t, FILE *, locale_t);
wint_t	 putwchar_l(wchar_t, locale_t);
int
swprintf_l(wchar_t * __restrict, size_t n, locale_t,
		const wchar_t * __restrict, ...);
int
swscanf_l(const wchar_t * __restrict, locale_t, const wchar_t * __restrict,
		...);
wint_t	 ungetwc_l(wint_t, FILE *, locale_t);
int
vfwprintf_l(FILE * __restrict, locale_t, const wchar_t * __restrict,
		__va_list);
int
vswprintf_l(wchar_t * __restrict, size_t n, locale_t,
		const wchar_t * __restrict, __va_list);
int	 vwprintf_l(locale_t, const wchar_t * __restrict, __va_list);
size_t
wcrtomb_l(char * __restrict, wchar_t, mbstate_t * __restrict, locale_t);
int	 wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
size_t
wcsftime_l(wchar_t * __restrict, size_t, const wchar_t * __restrict,
		const struct tm * __restrict, locale_t);
size_t 
wcsrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t,
		mbstate_t * __restrict, locale_t);
double	 wcstod_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
long
wcstol_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t);
unsigned long
wcstoul_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t);
int	 wcswidth_l(const wchar_t *, size_t, locale_t);
size_t
wcsxfrm_l(wchar_t * __restrict, const wchar_t * __restrict, size_t, locale_t);
int	 wctob_l(wint_t, locale_t);
int	 wcwidth_l(wchar_t, locale_t);
int	 wprintf_l(locale_t, const wchar_t * __restrict, ...);
int	 wscanf_l(locale_t, const wchar_t * __restrict, ...);

int
vfwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict,
		__va_list);
int	 vswscanf_l(const wchar_t * __restrict, locale_t,
const wchar_t	*__restrict, __va_list);
int	 vwscanf_l(locale_t, const wchar_t * __restrict, __va_list);
float 	wcstof_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
long double
wcstold_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
long long
wcstoll_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t);
unsigned long long
wcstoull_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t);
size_t
mbsnrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t, size_t,
		mbstate_t * __restrict, locale_t);
int	 wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
int	 wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
size_t
wcsnrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t, size_t,
		mbstate_t * __restrict, locale_t);

#endif

struct lconv	*localeconv_l(locale_t);
__END_DECLS

#endif
OpenPOWER on IntegriCloud