Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / wchar.h @ 13

History | View | Annotate | Download (11.6 KB)

1
/*        $NetBSD: wchar.h,v 1.41 2014/10/13 00:47:03 christos Exp $        */
2

    
3
/*-
4
 * Copyright (c)1999 Citrus Project,
5
 * All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms, with or without
8
 * modification, are permitted provided that the following conditions
9
 * are met:
10
 * 1. Redistributions of source code must retain the above copyright
11
 *    notice, this list of conditions and the following disclaimer.
12
 * 2. Redistributions in binary form must reproduce the above copyright
13
 *    notice, this list of conditions and the following disclaimer in the
14
 *    documentation and/or other materials provided with the distribution.
15
 *
16
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
 * SUCH DAMAGE.
27
 */
28

    
29
/*-
30
 * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
31
 * All rights reserved.
32
 *
33
 * This code is derived from software contributed to The NetBSD Foundation
34
 * by Julian Coleman.
35
 *
36
 * Redistribution and use in source and binary forms, with or without
37
 * modification, are permitted provided that the following conditions
38
 * are met:
39
 * 1. Redistributions of source code must retain the above copyright
40
 *    notice, this list of conditions and the following disclaimer.
41
 * 2. Redistributions in binary form must reproduce the above copyright
42
 *    notice, this list of conditions and the following disclaimer in the
43
 *    documentation and/or other materials provided with the distribution.
44
 *
45
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
46
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
47
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
48
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
49
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
50
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
51
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
52
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
53
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
54
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
55
 * POSSIBILITY OF SUCH DAMAGE.
56
 */
57

    
58
#ifndef _WCHAR_H_
59
#define _WCHAR_H_
60

    
61
#include <sys/cdefs.h>
62
#include <sys/featuretest.h>
63
#include <machine/wchar_limits.h>
64
#include <sys/ansi.h>
65
#include <sys/null.h>
66

    
67
#include <stdio.h> /* for FILE* */
68

    
69
#if defined(_BSD_WCHAR_T_) && !defined(__cplusplus)
70
typedef        _BSD_WCHAR_T_        wchar_t;
71
#undef        _BSD_WCHAR_T_
72
#endif
73

    
74
#ifdef        _BSD_MBSTATE_T_
75
typedef        _BSD_MBSTATE_T_        mbstate_t;
76
#undef        _BSD_MBSTATE_T_
77
#endif
78

    
79
#ifdef        _BSD_WINT_T_
80
typedef        _BSD_WINT_T_        wint_t;
81
#undef        _BSD_WINT_T_
82
#endif
83

    
84
#ifdef        _BSD_SIZE_T_
85
typedef        _BSD_SIZE_T_        size_t;
86
#undef        _BSD_SIZE_T_
87
#endif
88

    
89
#if defined(_POSIX_C_SOURCE)
90
#ifndef __VA_LIST_DECLARED
91
typedef __va_list va_list;
92
#define __VA_LIST_DECLARED
93
#endif
94
#endif
95

    
96
struct tm;
97

    
98
__BEGIN_DECLS
99
wint_t        btowc(int);
100
size_t        mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
101
size_t        mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
102
            mbstate_t * __restrict);
103
int        mbsinit(const mbstate_t *);
104
size_t        mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
105
            mbstate_t * __restrict);
106
size_t        wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
107
wchar_t        *wcscat(wchar_t * __restrict, const wchar_t * __restrict);
108
wchar_t        *wcschr(const wchar_t *, wchar_t);
109
int        wcscmp(const wchar_t *, const wchar_t *);
110
int        wcscoll(const wchar_t *, const wchar_t *);
111
wchar_t        *wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
112
size_t        wcscspn(const wchar_t *, const wchar_t *);
113
size_t        wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
114
            const struct tm * __restrict);
115
size_t        wcslen(const wchar_t *);
116
wchar_t        *wcsncat(wchar_t * __restrict, const wchar_t * __restrict, size_t);
117
int        wcsncmp(const wchar_t *, const wchar_t *, size_t);
118
wchar_t        *wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t);
119
wchar_t        *wcspbrk(const wchar_t *, const wchar_t *);
120
wchar_t        *wcsrchr(const wchar_t *, wchar_t);
121
size_t        wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
122
            mbstate_t * __restrict);
123
size_t        wcsspn(const wchar_t *, const wchar_t *);
124
wchar_t        *wcsstr(const wchar_t *, const wchar_t *);
125
wchar_t *wcstok(wchar_t * __restrict, const wchar_t * __restrict,
126
                     wchar_t ** __restrict);
127
size_t        wcsxfrm(wchar_t *, const wchar_t *, size_t);
128
wchar_t        *wcswcs(const wchar_t *, const wchar_t *);
129
wchar_t        *wmemchr(const wchar_t *, wchar_t, size_t);
130
int        wmemcmp(const wchar_t *, const wchar_t *, size_t);
131
wchar_t        *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
132
wchar_t        *wmemmove(wchar_t *, const wchar_t *, size_t);
133
wchar_t        *wmemset(wchar_t *, wchar_t, size_t);
134

    
135
size_t        wcslcat(wchar_t *, const wchar_t *, size_t);
136
size_t        wcslcpy(wchar_t *, const wchar_t *, size_t);
137
int        wcswidth(const wchar_t *, size_t);
138
int        wctob(wint_t);
139
int        wcwidth(wchar_t);
140

    
141
unsigned long int wcstoul(const wchar_t * __restrict,
142
        wchar_t ** __restrict, int);
143
long int wcstol(const wchar_t * __restrict,
144
        wchar_t ** __restrict, int);
145
double wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
146

    
147
#if defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) > 199901L || \
148
    defined(_NETBSD_SOURCE) || \
149
        (_POSIX_C_SOURCE - 0) >= 200112L || (_XOPEN_SOURCE - 0) >= 600
150
float wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
151
long double wcstold(const wchar_t * __restrict, wchar_t ** __restrict);
152

    
153
/* LONGLONG */
154
long long int wcstoll(const wchar_t * __restrict,
155
        wchar_t ** __restrict, int);
156
/* LONGLONG */
157
unsigned long long int wcstoull(const wchar_t * __restrict,
158
        wchar_t ** __restrict, int);
159
#endif
160

    
161
#if (_POSIX_C_SOURCE - 0) >= 200809L || (_XOPEN_SOURCE - 0) >= 700 || \
162
    defined(_NETBSD_SOURCE)
163
FILE        *open_wmemstream(wchar_t **, size_t *);
164
#endif
165

    
166
wint_t ungetwc(wint_t, FILE *);
167
wint_t fgetwc(FILE *);
168
wchar_t *fgetws(wchar_t * __restrict, int, FILE * __restrict);
169
wint_t getwc(FILE *);
170
wint_t getwchar(void);
171
wint_t fputwc(wchar_t, FILE *);
172
int fputws(const wchar_t * __restrict, FILE * __restrict);
173
wint_t putwc(wchar_t, FILE *);
174
wint_t putwchar(wchar_t);
175

    
176
int fwide(FILE *, int);
177

    
178
wchar_t        *fgetwln(FILE * __restrict, size_t * __restrict);
179
int fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
180
int fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
181
int swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict, ...);
182
int swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
183
int vfwprintf(FILE * __restrict, const wchar_t * __restrict, __va_list);
184
int vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
185
    __va_list);
186
int vwprintf(const wchar_t * __restrict, __va_list);
187
int wprintf(const wchar_t * __restrict, ...);
188
int wscanf(const wchar_t * __restrict, ...);
189
#if defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) > 199901L || \
190
    defined(_NETBSD_SOURCE) || \
191
        (_POSIX_C_SOURCE - 0) >= 200112L || (_XOPEN_SOURCE - 0) >= 600
192
int vfwscanf(FILE * __restrict, const wchar_t * __restrict, __va_list);
193
int vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
194
    __va_list);
195
int vwscanf(const wchar_t * __restrict, __va_list);
196
#endif
197
#if defined(_NETBSD_SOURCE)
198
struct tinfo;
199
int t_putws(struct tinfo *, const wchar_t *, int, void (*)(wchar_t, void *),
200
    void *);
201
wchar_t *wcsdup (const wchar_t *);
202
int wcsncasecmp (const wchar_t *, const wchar_t *, size_t);
203
int wcscasecmp(const wchar_t *, const wchar_t *);
204
#endif
205
__END_DECLS
206

    
207
#ifndef WEOF
208
#define        WEOF         ((wint_t)-1)
209
#endif
210

    
211
#define getwc(f) fgetwc(f)
212
#define getwchar() getwc(stdin)
213
#define putwc(wc, f) fputwc((wc), (f))
214
#define putwchar(wc) putwc((wc), stdout)
215

    
216
#if (_POSIX_C_SOURCE - 0) >= 200809L || defined(_NETBSD_SOURCE)
217
#  ifndef __LOCALE_T_DECLARED
218
typedef struct _locale                *locale_t;
219
#  define __LOCALE_T_DECLARED
220
#  endif
221
__BEGIN_DECLS
222
size_t        mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
223
            size_t, mbstate_t * __restrict);
224
size_t        wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
225
            size_t, mbstate_t * __restrict);
226

    
227
int        wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
228
size_t        wcsxfrm_l(wchar_t *, const wchar_t *, size_t, locale_t);
229
int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
230
int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
231

    
232
size_t        wcsftime_l(wchar_t * __restrict, size_t, const wchar_t * __restrict,
233
            const struct tm * __restrict, locale_t);
234

    
235
float wcstof_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
236
double wcstod_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
237
long double wcstold_l(const wchar_t * __restrict, wchar_t ** __restrict,
238
    locale_t);
239
long int wcstol_l(const wchar_t * __restrict, wchar_t ** __restrict, int,
240
                  locale_t);
241
unsigned long int wcstoul_l(const wchar_t * __restrict,
242
        wchar_t ** __restrict, int, locale_t);
243
/* LONGLONG */
244
long long int wcstoll_l(const wchar_t * __restrict, wchar_t ** __restrict, int,
245
                        locale_t);
246
/* LONGLONG */
247
unsigned long long int wcstoull_l(const wchar_t * __restrict,
248
                                  wchar_t ** __restrict, int, locale_t);
249
int        wcwidth_l(wchar_t, locale_t);
250
int        wcswidth_l(const wchar_t *, size_t, locale_t);
251
__END_DECLS
252
#endif /* _POSIX_C_SOURCE || _NETBSD_SOURCE */
253

    
254
#if defined(_NETBSD_SOURCE)
255
__BEGIN_DECLS
256
wint_t        btowc_l(int, locale_t);
257
size_t        mbrlen_l(const char * __restrict, size_t, mbstate_t * __restrict,
258
                locale_t);
259
size_t        mbrtowc_l(wchar_t * __restrict, const char * __restrict, size_t,
260
            mbstate_t * __restrict, locale_t);
261
int        mbsinit_l(const mbstate_t *, locale_t);
262
size_t        mbsrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t,
263
            mbstate_t * __restrict, locale_t);
264
size_t        mbsnrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t,
265
            size_t, mbstate_t * __restrict, locale_t);
266
size_t        wcrtomb_l(char * __restrict, wchar_t, mbstate_t * __restrict, locale_t);
267
size_t        wcsrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t,
268
            mbstate_t * __restrict, locale_t);
269
size_t        wcsnrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t,
270
            size_t, mbstate_t * __restrict, locale_t);
271
int        wctob_l(wint_t, locale_t);
272

    
273
int fwprintf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, ...);
274
int swprintf_l(wchar_t * __restrict, size_t n, locale_t,
275
    const wchar_t * __restrict, ...);
276
int vfwprintf_l(FILE * __restrict, locale_t,
277
    const wchar_t * __restrict, __va_list);
278
int vswprintf_l(wchar_t * __restrict, size_t, locale_t,
279
    const wchar_t * __restrict, __va_list);
280
int vwprintf_l(locale_t, const wchar_t * __restrict, __va_list);
281
int wprintf_l(locale_t, const wchar_t * __restrict, ...);
282

    
283
int fwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, ...);
284
int swscanf_l(const wchar_t * __restrict, locale_t, const wchar_t *
285
    __restrict, ...);
286
int wscanf_l(locale_t, const wchar_t * __restrict, ...);
287
int vfwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict,
288
    __va_list);
289
int vswscanf_l(const wchar_t * __restrict, locale_t, const wchar_t * __restrict,
290
    __va_list);
291
int vwscanf_l(locale_t, const wchar_t * __restrict, __va_list);
292
__END_DECLS
293
#endif /* _NETBSD_SOURCE */
294

    
295
#endif /* !_WCHAR_H_ */