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_ */