/ include / wchar.h
wchar.h
  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  
 70  #include <_types.h>
 71  #include <sys/cdefs.h>
 72  #include <Availability.h>
 73  
 74  #include <sys/_types/_null.h>
 75  #include <sys/_types/_size_t.h>
 76  #include <sys/_types/_mbstate_t.h>
 77  #include <sys/_types/_ct_rune_t.h>
 78  #include <sys/_types/_rune_t.h>
 79  #include <sys/_types/_wchar_t.h>
 80  
 81  #ifndef WCHAR_MIN
 82  #define WCHAR_MIN	__DARWIN_WCHAR_MIN
 83  #endif
 84  
 85  #ifndef WCHAR_MAX
 86  #define WCHAR_MAX	__DARWIN_WCHAR_MAX
 87  #endif
 88  
 89  #include <stdarg.h>
 90  #include <stdio.h>
 91  #ifndef UNIFDEF_DRIVERKIT
 92  #include <time.h>
 93  #endif /* UNIFDEF_DRIVERKIT */
 94  #include <_wctype.h>
 95  
 96  
 97  /* Initially added in Issue 4 */
 98  __BEGIN_DECLS
 99  wint_t	btowc(int);
100  #ifndef UNIFDEF_DRIVERKIT
101  wint_t	fgetwc(FILE *);
102  wchar_t	*fgetws(wchar_t * __restrict, int, FILE * __restrict);
103  wint_t	fputwc(wchar_t, FILE *);
104  int	fputws(const wchar_t * __restrict, FILE * __restrict);
105  int	fwide(FILE *, int);
106  int	fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
107  int	fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
108  wint_t	getwc(FILE *);
109  wint_t	getwchar(void);
110  #endif /* UNIFDEF_DRIVERKIT */
111  size_t	mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
112  size_t	mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
113  	    mbstate_t * __restrict);
114  int	mbsinit(const mbstate_t *);
115  size_t	mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
116  	    mbstate_t * __restrict);
117  #ifndef UNIFDEF_DRIVERKIT
118  wint_t	putwc(wchar_t, FILE *);
119  wint_t	putwchar(wchar_t);
120  #endif /* UNIFDEF_DRIVERKIT */
121  int	swprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict, ...);
122  int	swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
123  #ifndef UNIFDEF_DRIVERKIT
124  wint_t	ungetwc(wint_t, FILE *);
125  int	vfwprintf(FILE * __restrict, const wchar_t * __restrict,
126  	    __darwin_va_list);
127  #endif /* UNIFDEF_DRIVERKIT */
128  int	vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
129  	    __darwin_va_list);
130  #ifndef UNIFDEF_DRIVERKIT
131  int	vwprintf(const wchar_t * __restrict, __darwin_va_list);
132  #endif /* UNIFDEF_DRIVERKIT */
133  size_t	wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
134  wchar_t	*wcscat(wchar_t * __restrict, const wchar_t * __restrict);
135  wchar_t	*wcschr(const wchar_t *, wchar_t);
136  int	wcscmp(const wchar_t *, const wchar_t *);
137  int	wcscoll(const wchar_t *, const wchar_t *);
138  wchar_t	*wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
139  size_t	wcscspn(const wchar_t *, const wchar_t *);
140  #ifndef UNIFDEF_DRIVERKIT
141  size_t	wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
142  	    const struct tm * __restrict) __DARWIN_ALIAS(wcsftime);
143  #endif /* UNIFDEF_DRIVERKIT */
144  size_t	wcslen(const wchar_t *);
145  wchar_t	*wcsncat(wchar_t * __restrict, const wchar_t * __restrict, size_t);
146  int	wcsncmp(const wchar_t *, const wchar_t *, size_t);
147  wchar_t	*wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t);
148  wchar_t	*wcspbrk(const wchar_t *, const wchar_t *);
149  wchar_t	*wcsrchr(const wchar_t *, wchar_t);
150  size_t	wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
151  	    mbstate_t * __restrict);
152  size_t	wcsspn(const wchar_t *, const wchar_t *);
153  wchar_t	*wcsstr(const wchar_t * __restrict, const wchar_t * __restrict);
154  size_t	wcsxfrm(wchar_t * __restrict, const wchar_t * __restrict, size_t);
155  int	wctob(wint_t);
156  double	wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
157  wchar_t	*wcstok(wchar_t * __restrict, const wchar_t * __restrict,
158  	    wchar_t ** __restrict);
159  long	 wcstol(const wchar_t * __restrict, wchar_t ** __restrict, int);
160  unsigned long
161  	 wcstoul(const wchar_t * __restrict, wchar_t ** __restrict, int);
162  wchar_t	*wmemchr(const wchar_t *, wchar_t, size_t);
163  int	wmemcmp(const wchar_t *, const wchar_t *, size_t);
164  wchar_t	*wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
165  wchar_t	*wmemmove(wchar_t *, const wchar_t *, size_t);
166  wchar_t	*wmemset(wchar_t *, wchar_t, size_t);
167  #ifndef UNIFDEF_DRIVERKIT
168  int	wprintf(const wchar_t * __restrict, ...);
169  int	wscanf(const wchar_t * __restrict, ...);
170  #endif /* UNIFDEF_DRIVERKIT */
171  int	wcswidth(const wchar_t *, size_t);
172  int	wcwidth(wchar_t);
173  __END_DECLS
174  
175  
176  
177  /* Additional functionality provided by:
178   * POSIX.1-2001
179   * ISO C99
180   */
181  
182  #if __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus)
183  __BEGIN_DECLS
184  #ifndef UNIFDEF_DRIVERKIT
185  int	vfwscanf(FILE * __restrict, const wchar_t * __restrict,
186  	    __darwin_va_list);
187  #endif /* UNIFDEF_DRIVERKIT */
188  int	vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
189  	    __darwin_va_list);
190  #ifndef UNIFDEF_DRIVERKIT
191  int	vwscanf(const wchar_t * __restrict, __darwin_va_list);
192  #endif /* UNIFDEF_DRIVERKIT */
193  float	wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
194  long double
195  	wcstold(const wchar_t * __restrict, wchar_t ** __restrict);
196  #if !__DARWIN_NO_LONG_LONG
197  long long
198  	wcstoll(const wchar_t * __restrict, wchar_t ** __restrict, int);
199  unsigned long long
200  	wcstoull(const wchar_t * __restrict, wchar_t ** __restrict, int);
201  #endif /* !__DARWIN_NO_LONG_LONG */
202  __END_DECLS
203  #endif
204  
205  
206  
207  /* Additional functionality provided by:
208   * POSIX.1-2008
209   */
210  
211  #if __DARWIN_C_LEVEL >= 200809L
212  __BEGIN_DECLS
213  size_t  mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
214              size_t, mbstate_t * __restrict);
215  wchar_t *wcpcpy(wchar_t * __restrict, const wchar_t * __restrict) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
216  wchar_t *wcpncpy(wchar_t * __restrict, const wchar_t * __restrict, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
217  wchar_t *wcsdup(const wchar_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
218  int     wcscasecmp(const wchar_t *, const wchar_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
219  int     wcsncasecmp(const wchar_t *, const wchar_t *, size_t n) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
220  size_t  wcsnlen(const wchar_t *, size_t) __pure __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
221  size_t  wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
222              size_t, mbstate_t * __restrict);
223  #ifndef UNIFDEF_DRIVERKIT
224  FILE *open_wmemstream(wchar_t ** __bufp, size_t * __sizep) __API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
225  #endif /* UNIFDEF_DRIVERKIT */
226  __END_DECLS
227  #endif /* __DARWIN_C_LEVEL >= 200809L */
228  
229  
230  
231  /* Darwin extensions */
232  
233  #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
234  __BEGIN_DECLS
235  #ifndef UNIFDEF_DRIVERKIT
236  wchar_t *fgetwln(FILE * __restrict, size_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
237  #endif /* UNIFDEF_DRIVERKIT */
238  size_t	wcslcat(wchar_t *, const wchar_t *, size_t);
239  size_t	wcslcpy(wchar_t *, const wchar_t *, size_t);
240  __END_DECLS
241  #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
242  
243  
244  /* Poison the following routines if -fshort-wchar is set */
245  #if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU
246  #pragma GCC poison fgetwln 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
247  #endif
248  
249  #ifdef _USE_EXTENDED_LOCALES_
250  #include <xlocale/_wchar.h>
251  #endif /* _USE_EXTENDED_LOCALES_ */
252  
253  #endif /* !_WCHAR_H_ */