]> git.saurik.com Git - apple/libc.git/blobdiff - include/wchar.h
Libc-1353.41.1.tar.gz
[apple/libc.git] / include / wchar.h
index 40d2112c5662f52dc5677610a13f6440af2aa744..f68ce8fb7fd45e63554209d9956a2d8bc0ffa8be 100644 (file)
 #ifndef _WCHAR_H_
 #define _WCHAR_H_
 
+#include <_types.h>
 #include <sys/cdefs.h>
-#include <sys/types.h>
-#include <stdarg.h>
-
-#ifndef NULL
-#define        NULL    0
-#endif
-
-#ifndef        _BSD_SIZE_T_DEFINED_
-#define        _BSD_SIZE_T_DEFINED_
-typedef        _BSD_SIZE_T_    size_t;
-#endif
-
-#ifndef        _BSD_MBSTATE_T_DEFINED_
-#define        _BSD_MBSTATE_T_DEFINED_
-typedef        _BSD_MBSTATE_T_ mbstate_t;
-#endif
-
-#ifndef        _BSD_CT_RUNE_T_DEFINED_
-#define _BSD_CT_RUNE_T_DEFINED_
-typedef        _BSD_CT_RUNE_T_ ct_rune_t;
-#endif
+#include <Availability.h>
 
-#ifndef        _BSD_RUNE_T_DEFINED_
-#define _BSD_RUNE_T_DEFINED_
-typedef        _BSD_RUNE_T_    rune_t;
-#endif
-
-#ifndef        __cplusplus
-#ifndef        _BSD_WCHAR_T_DEFINED_
-#define        _BSD_WCHAR_T_DEFINED_
-#ifdef __WCHAR_TYPE__
-typedef        __WCHAR_TYPE__  wchar_t;
-#else  /* ! __WCHAR_TYPE__ */
-typedef        _BSD_WCHAR_T_   wchar_t;
-#endif /* __WCHAR_TYPE__ */
-#endif /* _BSD_WCHAR_T_DEFINED_ */
-#endif /* __cplusplus */
-
-#ifndef        _BSD_WINT_T_DEFINED_
-#define _BSD_WINT_T_DEFINED_
-typedef        _BSD_WINT_T_    wint_t;
-#endif
-
-#ifndef WEOF
-#define        WEOF    ((wint_t)-1)
-#endif
+#include <sys/_types/_null.h>
+#include <sys/_types/_size_t.h>
+#include <sys/_types/_mbstate_t.h>
+#include <sys/_types/_ct_rune_t.h>
+#include <sys/_types/_rune_t.h>
+#include <sys/_types/_wchar_t.h>
 
 #ifndef WCHAR_MIN
-#define WCHAR_MIN      0
+#define WCHAR_MIN      __DARWIN_WCHAR_MIN
 #endif
 
 #ifndef WCHAR_MAX
-#ifdef __WCHAR_MAX__
-#define WCHAR_MAX      __WCHAR_MAX__
-#else /* ! __WCHAR_MAX__ */
-#define WCHAR_MAX      0x7fffffff
-#endif /* __WCHAR_MAX__ */
+#define WCHAR_MAX      __DARWIN_WCHAR_MAX
 #endif
 
-struct __sFILE;
-struct tm;
+#include <stdarg.h>
+#include <stdio.h>
+#ifndef UNIFDEF_DRIVERKIT
+#include <time.h>
+#endif /* UNIFDEF_DRIVERKIT */
+#include <_wctype.h>
+
 
+/* Initially added in Issue 4 */
 __BEGIN_DECLS
 wint_t btowc(int);
-wint_t fgetwc(struct __sFILE *);
-wchar_t        *fgetws(wchar_t * __restrict, int, struct __sFILE * __restrict);
-wint_t fputwc(wchar_t, struct __sFILE *);
-int    fputws(const wchar_t * __restrict, struct __sFILE * __restrict);
-int    fwide(struct __sFILE *, int);
-int    fwprintf(struct __sFILE * __restrict, const wchar_t * __restrict, ...);
-int    fwscanf(struct __sFILE * __restrict, const wchar_t * __restrict, ...);
-wint_t getwc(struct __sFILE *);
+#ifndef UNIFDEF_DRIVERKIT
+wint_t fgetwc(FILE *);
+wchar_t        *fgetws(wchar_t * __restrict, int, FILE * __restrict);
+wint_t fputwc(wchar_t, FILE *);
+int    fputws(const wchar_t * __restrict, FILE * __restrict);
+int    fwide(FILE *, int);
+int    fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
+int    fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
+wint_t getwc(FILE *);
 wint_t getwchar(void);
+#endif /* UNIFDEF_DRIVERKIT */
 size_t mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
 size_t mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
            mbstate_t * __restrict);
 int    mbsinit(const mbstate_t *);
 size_t mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
            mbstate_t * __restrict);
-wint_t putwc(wchar_t, struct __sFILE *);
+#ifndef UNIFDEF_DRIVERKIT
+wint_t putwc(wchar_t, FILE *);
 wint_t putwchar(wchar_t);
-int    swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
-           ...);
+#endif /* UNIFDEF_DRIVERKIT */
+int    swprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict, ...);
 int    swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
-wint_t ungetwc(wint_t, struct __sFILE *);
-int    vfwprintf(struct __sFILE * __restrict, const wchar_t * __restrict,
-           _BSD_VA_LIST_);
-int    vswprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
-           _BSD_VA_LIST_);
-int    vwprintf(const wchar_t * __restrict, _BSD_VA_LIST_);
+#ifndef UNIFDEF_DRIVERKIT
+wint_t ungetwc(wint_t, FILE *);
+int    vfwprintf(FILE * __restrict, const wchar_t * __restrict,
+           __darwin_va_list);
+#endif /* UNIFDEF_DRIVERKIT */
+int    vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
+           __darwin_va_list);
+#ifndef UNIFDEF_DRIVERKIT
+int    vwprintf(const wchar_t * __restrict, __darwin_va_list);
+#endif /* UNIFDEF_DRIVERKIT */
 size_t wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
 wchar_t        *wcscat(wchar_t * __restrict, const wchar_t * __restrict);
 wchar_t        *wcschr(const wchar_t *, wchar_t);
@@ -165,8 +137,19 @@ int        wcscmp(const wchar_t *, const wchar_t *);
 int    wcscoll(const wchar_t *, const wchar_t *);
 wchar_t        *wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
 size_t wcscspn(const wchar_t *, const wchar_t *);
+#ifndef UNIFDEF_DRIVERKIT
+//Begin-Libc
+#ifndef LIBC_ALIAS_WCSFTIME
+//End-Libc
+size_t wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
+           const struct tm * __restrict) __DARWIN_ALIAS(wcsftime);
+//Begin-Libc
+#else /* LIBC_ALIAS_WCSFTIME */
 size_t wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
-           const struct tm * __restrict);
+           const struct tm * __restrict) LIBC_ALIAS(wcsftime);
+#endif /* !LIBC_ALIAS_WCSFTIME */
+//End-Libc
+#endif /* UNIFDEF_DRIVERKIT */
 size_t wcslen(const wchar_t *);
 wchar_t        *wcsncat(wchar_t * __restrict, const wchar_t * __restrict, size_t);
 int    wcsncmp(const wchar_t *, const wchar_t *, size_t);
@@ -190,27 +173,90 @@ int       wmemcmp(const wchar_t *, const wchar_t *, size_t);
 wchar_t        *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
 wchar_t        *wmemmove(wchar_t *, const wchar_t *, size_t);
 wchar_t        *wmemset(wchar_t *, wchar_t, size_t);
+#ifndef UNIFDEF_DRIVERKIT
 int    wprintf(const wchar_t * __restrict, ...);
 int    wscanf(const wchar_t * __restrict, ...);
+#endif /* UNIFDEF_DRIVERKIT */
+int    wcswidth(const wchar_t *, size_t);
+int    wcwidth(wchar_t);
+__END_DECLS
+
 
-#if !defined(_ANSI_SOURCE)
-int    vfwscanf(struct __sFILE * __restrict, const wchar_t * __restrict,
-           _BSD_VA_LIST_);
+
+/* Additional functionality provided by:
+ * POSIX.1-2001
+ * ISO C99
+ */
+
+#if __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus)
+__BEGIN_DECLS
+#ifndef UNIFDEF_DRIVERKIT
+int    vfwscanf(FILE * __restrict, const wchar_t * __restrict,
+           __darwin_va_list);
+#endif /* UNIFDEF_DRIVERKIT */
 int    vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
-           _BSD_VA_LIST_);
-int    vwscanf(const wchar_t * __restrict, _BSD_VA_LIST_);
+           __darwin_va_list);
+#ifndef UNIFDEF_DRIVERKIT
+int    vwscanf(const wchar_t * __restrict, __darwin_va_list);
+#endif /* UNIFDEF_DRIVERKIT */
 float  wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
 long double
        wcstold(const wchar_t * __restrict, wchar_t ** __restrict);
+#if !__DARWIN_NO_LONG_LONG
 long long
        wcstoll(const wchar_t * __restrict, wchar_t ** __restrict, int);
 unsigned long long
        wcstoull(const wchar_t * __restrict, wchar_t ** __restrict, int);
-int    wcswidth(const wchar_t *, size_t);
-int    wcwidth(wchar_t);
+#endif /* !__DARWIN_NO_LONG_LONG */
+__END_DECLS
+#endif
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1-2008
+ */
+
+#if __DARWIN_C_LEVEL >= 200809L
+__BEGIN_DECLS
+size_t  mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
+            size_t, mbstate_t * __restrict);
+wchar_t *wcpcpy(wchar_t * __restrict, const wchar_t * __restrict) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+wchar_t *wcpncpy(wchar_t * __restrict, const wchar_t * __restrict, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+wchar_t *wcsdup(const wchar_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+int     wcscasecmp(const wchar_t *, const wchar_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+int     wcsncasecmp(const wchar_t *, const wchar_t *, size_t n) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+size_t  wcsnlen(const wchar_t *, size_t) __pure __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+size_t  wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
+            size_t, mbstate_t * __restrict);
+#ifndef UNIFDEF_DRIVERKIT
+FILE *open_wmemstream(wchar_t ** __bufp, size_t * __sizep) __API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+#endif /* UNIFDEF_DRIVERKIT */
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200809L */
+
+
+
+/* Darwin extensions */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+__BEGIN_DECLS
+#ifndef UNIFDEF_DRIVERKIT
+wchar_t *fgetwln(FILE * __restrict, size_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+#endif /* UNIFDEF_DRIVERKIT */
 size_t wcslcat(wchar_t *, const wchar_t *, size_t);
 size_t wcslcpy(wchar_t *, const wchar_t *, size_t);
-#endif /* !defined(_ANSI_SOURCE) */
 __END_DECLS
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+
+/* Poison the following routines if -fshort-wchar is set */
+#if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU
+#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
+#endif
+
+#ifdef _USE_EXTENDED_LOCALES_
+#include <xlocale/_wchar.h>
+#endif /* _USE_EXTENDED_LOCALES_ */
 
 #endif /* !_WCHAR_H_ */