]> git.saurik.com Git - apple/libc.git/blame - include/wchar.h
Libc-498.tar.gz
[apple/libc.git] / include / wchar.h
CommitLineData
9385eb3d
A
1/*-
2 * Copyright (c)1999 Citrus Project,
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: /repoman/r/ncvs/src/include/wchar.h,v 1.34 2003/03/13 06:29:53 tjr Exp $
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 * 3. All advertising materials mentioning features or use of this software
45 * must display the following acknowledgement:
46 * This product includes software developed by the NetBSD
47 * Foundation, Inc. and its contributors.
48 * 4. Neither the name of The NetBSD Foundation nor the names of its
49 * contributors may be used to endorse or promote products derived
50 * from this software without specific prior written permission.
51 *
52 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
53 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
54 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
55 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
56 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
57 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
58 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
59 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
60 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
61 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
62 * POSSIBILITY OF SUCH DAMAGE.
63 *
64 * $NetBSD: wchar.h,v 1.8 2000/12/22 05:31:42 itojun Exp $
65 */
66
67#ifndef _WCHAR_H_
68#define _WCHAR_H_
69
59e0d9fe 70#include <_types.h>
9385eb3d
A
71
72#ifndef NULL
3d9156a7 73#define NULL __DARWIN_NULL
59e0d9fe 74#endif /* ! NULL */
9385eb3d 75
3d9156a7
A
76#ifndef _SIZE_T
77#define _SIZE_T
78typedef __darwin_size_t size_t;
9385eb3d
A
79#endif
80
3d9156a7
A
81#ifndef _MBSTATE_T
82#define _MBSTATE_T
83typedef __darwin_mbstate_t mbstate_t;
9385eb3d
A
84#endif
85
3d9156a7
A
86#ifndef _CT_RUNE_T
87#define _CT_RUNE_T
88typedef __darwin_ct_rune_t ct_rune_t;
9385eb3d
A
89#endif
90
3d9156a7
A
91#ifndef _RUNE_T
92#define _RUNE_T
93typedef __darwin_rune_t rune_t;
9385eb3d
A
94#endif
95
96#ifndef __cplusplus
3d9156a7
A
97#ifndef _WCHAR_T
98#define _WCHAR_T
99typedef __darwin_wchar_t wchar_t;
100#endif /* _WCHAR_T */
9385eb3d
A
101#endif /* __cplusplus */
102
9385eb3d 103#ifndef WCHAR_MIN
3d9156a7 104#define WCHAR_MIN __DARWIN_WCHAR_MIN
9385eb3d
A
105#endif
106
107#ifndef WCHAR_MAX
3d9156a7 108#define WCHAR_MAX __DARWIN_WCHAR_MAX
9385eb3d
A
109#endif
110
3d9156a7
A
111#include <stdarg.h>
112#include <stdio.h>
113#include <time.h>
114#include <_wctype.h>
115
9385eb3d
A
116__BEGIN_DECLS
117wint_t btowc(int);
59e0d9fe
A
118wint_t fgetwc(FILE *);
119wchar_t *fgetws(wchar_t * __restrict, int, FILE * __restrict);
120wint_t fputwc(wchar_t, FILE *);
121int fputws(const wchar_t * __restrict, FILE * __restrict);
122int fwide(FILE *, int);
3d9156a7
A
123int fwprintf(FILE * __restrict, const wchar_t * __restrict, ...) __DARWIN_LDBL_COMPAT(fwprintf);
124int fwscanf(FILE * __restrict, const wchar_t * __restrict, ...) __DARWIN_LDBL_COMPAT(fwscanf);
59e0d9fe 125wint_t getwc(FILE *);
9385eb3d
A
126wint_t getwchar(void);
127size_t mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
128size_t mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
129 mbstate_t * __restrict);
130int mbsinit(const mbstate_t *);
131size_t mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
132 mbstate_t * __restrict);
59e0d9fe 133wint_t putwc(wchar_t, FILE *);
9385eb3d 134wint_t putwchar(wchar_t);
224c7076 135int swprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
3d9156a7
A
136 ...) __DARWIN_LDBL_COMPAT(swprintf);
137int swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...) __DARWIN_LDBL_COMPAT(swscanf);
59e0d9fe
A
138wint_t ungetwc(wint_t, FILE *);
139int vfwprintf(FILE * __restrict, const wchar_t * __restrict,
3d9156a7 140 __darwin_va_list) __DARWIN_LDBL_COMPAT(vfwprintf);
224c7076 141int vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
3d9156a7
A
142 __darwin_va_list) __DARWIN_LDBL_COMPAT(vswprintf);
143int vwprintf(const wchar_t * __restrict, __darwin_va_list) __DARWIN_LDBL_COMPAT(vwprintf);
9385eb3d
A
144size_t wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
145wchar_t *wcscat(wchar_t * __restrict, const wchar_t * __restrict);
146wchar_t *wcschr(const wchar_t *, wchar_t);
147int wcscmp(const wchar_t *, const wchar_t *);
148int wcscoll(const wchar_t *, const wchar_t *);
149wchar_t *wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
150size_t wcscspn(const wchar_t *, const wchar_t *);
224c7076
A
151//Begin-Libc
152#ifndef LIBC_ALIAS_WCSFTIME
153//End-Libc
9385eb3d 154size_t wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
224c7076
A
155 const struct tm * __restrict) __DARWIN_ALIAS(wcsftime);
156//Begin-Libc
157#else /* LIBC_ALIAS_WCSFTIME */
158size_t wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
159 const struct tm * __restrict) LIBC_ALIAS(wcsftime);
160#endif /* !LIBC_ALIAS_WCSFTIME */
161//End-Libc
9385eb3d
A
162size_t wcslen(const wchar_t *);
163wchar_t *wcsncat(wchar_t * __restrict, const wchar_t * __restrict, size_t);
164int wcsncmp(const wchar_t *, const wchar_t *, size_t);
165wchar_t *wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t);
166wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
167wchar_t *wcsrchr(const wchar_t *, wchar_t);
168size_t wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
169 mbstate_t * __restrict);
170size_t wcsspn(const wchar_t *, const wchar_t *);
171wchar_t *wcsstr(const wchar_t * __restrict, const wchar_t * __restrict);
172size_t wcsxfrm(wchar_t * __restrict, const wchar_t * __restrict, size_t);
173int wctob(wint_t);
174double wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
175wchar_t *wcstok(wchar_t * __restrict, const wchar_t * __restrict,
176 wchar_t ** __restrict);
177long wcstol(const wchar_t * __restrict, wchar_t ** __restrict, int);
178unsigned long
179 wcstoul(const wchar_t * __restrict, wchar_t ** __restrict, int);
180wchar_t *wmemchr(const wchar_t *, wchar_t, size_t);
181int wmemcmp(const wchar_t *, const wchar_t *, size_t);
182wchar_t *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
183wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t);
184wchar_t *wmemset(wchar_t *, wchar_t, size_t);
3d9156a7
A
185int wprintf(const wchar_t * __restrict, ...) __DARWIN_LDBL_COMPAT(wprintf);
186int wscanf(const wchar_t * __restrict, ...) __DARWIN_LDBL_COMPAT(wscanf);
9385eb3d
A
187
188#if !defined(_ANSI_SOURCE)
59e0d9fe 189int vfwscanf(FILE * __restrict, const wchar_t * __restrict,
3d9156a7 190 __darwin_va_list) __DARWIN_LDBL_COMPAT(vfwscanf);
9385eb3d 191int vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
3d9156a7
A
192 __darwin_va_list) __DARWIN_LDBL_COMPAT(vswscanf);
193int vwscanf(const wchar_t * __restrict, __darwin_va_list) __DARWIN_LDBL_COMPAT(vwscanf);
9385eb3d
A
194float wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
195long double
3d9156a7
A
196 wcstold(const wchar_t * __restrict, wchar_t ** __restrict) __DARWIN_LDBL_COMPAT(wcstold);
197#if !__DARWIN_NO_LONG_LONG
9385eb3d
A
198long long
199 wcstoll(const wchar_t * __restrict, wchar_t ** __restrict, int);
200unsigned long long
201 wcstoull(const wchar_t * __restrict, wchar_t ** __restrict, int);
3d9156a7 202#endif /* !__DARWIN_NO_LONG_LONG */
9385eb3d
A
203int wcswidth(const wchar_t *, size_t);
204int wcwidth(wchar_t);
3d9156a7
A
205#endif /* !defined(_ANSI_SOURCE) */
206
224c7076 207#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
3d9156a7
A
208size_t mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
209 size_t, mbstate_t * __restrict);
9385eb3d
A
210size_t wcslcat(wchar_t *, const wchar_t *, size_t);
211size_t wcslcpy(wchar_t *, const wchar_t *, size_t);
3d9156a7
A
212size_t wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
213 size_t, mbstate_t * __restrict);
224c7076
A
214#endif /* !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) */
215
216/* Poison the following routines if -fshort-wchar is set */
217#if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU
218#pragma GCC poison fgetws fputwc fputws fwprintf fwscanf mbrtowc mbsnrtowcs mbsrtowcs putwc putwchar swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf vwprintf vwscanf wcrtomb wcscat wcschr wcscmp wcscoll wcscpy wcscspn wcsftime wcsftime wcslcat wcslcpy wcslen wcsncat wcsncmp wcsncpy wcsnrtombs wcspbrk wcsrchr wcsrtombs wcsspn wcsstr wcstod wcstof wcstok wcstol wcstold wcstoll wcstoul wcstoull wcswidth wcsxfrm wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset wprintf wscanf
219#endif
9385eb3d
A
220__END_DECLS
221
3d9156a7
A
222#ifdef _USE_EXTENDED_LOCALES_
223#include <xlocale/_wchar.h>
224#endif /* _USE_EXTENDED_LOCALES_ */
225
9385eb3d 226#endif /* !_WCHAR_H_ */