]> git.saurik.com Git - apple/libc.git/blobdiff - include/wchar.h
Libc-997.1.1.tar.gz
[apple/libc.git] / include / wchar.h
index 0c5fc1e948874302b00a66962de0e3168bb11426..bd16be11f00ae17c64e3598abd654ef3130f641d 100644 (file)
 #define _WCHAR_H_
 
 #include <_types.h>
 #define _WCHAR_H_
 
 #include <_types.h>
+#include <sys/cdefs.h>
+#include <Availability.h>
 
 
-#ifndef NULL
-#define        NULL    __DARWIN_NULL
-#endif /* ! NULL */
-
-#ifndef        _SIZE_T
-#define        _SIZE_T
-typedef        __darwin_size_t         size_t;
-#endif
-
-#ifndef        _MBSTATE_T
-#define        _MBSTATE_T
-typedef        __darwin_mbstate_t      mbstate_t;
-#endif
-
-#ifndef        _CT_RUNE_T
-#define _CT_RUNE_T
-typedef        __darwin_ct_rune_t      ct_rune_t;
-#endif
-
-#ifndef        _RUNE_T
-#define _RUNE_T
-typedef        __darwin_rune_t         rune_t;
-#endif
-
-#ifndef        __cplusplus
-#ifndef        _WCHAR_T
-#define        _WCHAR_T
-typedef        __darwin_wchar_t        wchar_t;
-#endif /* _WCHAR_T */
-#endif /* __cplusplus */
+#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      __DARWIN_WCHAR_MIN
 
 #ifndef WCHAR_MIN
 #define WCHAR_MIN      __DARWIN_WCHAR_MIN
@@ -113,6 +91,8 @@ typedef      __darwin_wchar_t        wchar_t;
 #include <time.h>
 #include <_wctype.h>
 
 #include <time.h>
 #include <_wctype.h>
 
+
+/* Initially added in Issue 4 */
 __BEGIN_DECLS
 wint_t btowc(int);
 wint_t fgetwc(FILE *);
 __BEGIN_DECLS
 wint_t btowc(int);
 wint_t fgetwc(FILE *);
@@ -120,8 +100,8 @@ 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);
 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, ...) __DARWIN_LDBL_COMPAT(fwprintf);
-int    fwscanf(FILE * __restrict, const wchar_t * __restrict, ...) __DARWIN_LDBL_COMPAT(fwscanf);
+int    fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
+int    fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
 wint_t getwc(FILE *);
 wint_t getwchar(void);
 size_t mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
 wint_t getwc(FILE *);
 wint_t getwchar(void);
 size_t mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
@@ -132,15 +112,14 @@ size_t    mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
            mbstate_t * __restrict);
 wint_t putwc(wchar_t, FILE *);
 wint_t putwchar(wchar_t);
            mbstate_t * __restrict);
 wint_t putwc(wchar_t, FILE *);
 wint_t putwchar(wchar_t);
-int    swprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
-           ...) __DARWIN_LDBL_COMPAT(swprintf);
-int    swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...) __DARWIN_LDBL_COMPAT(swscanf);
+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, FILE *);
 int    vfwprintf(FILE * __restrict, const wchar_t * __restrict,
 wint_t ungetwc(wint_t, FILE *);
 int    vfwprintf(FILE * __restrict, const wchar_t * __restrict,
-           __darwin_va_list) __DARWIN_LDBL_COMPAT(vfwprintf);
+           __darwin_va_list);
 int    vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
 int    vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
-           __darwin_va_list) __DARWIN_LDBL_COMPAT(vswprintf);
-int    vwprintf(const wchar_t * __restrict, __darwin_va_list) __DARWIN_LDBL_COMPAT(vwprintf);
+           __darwin_va_list);
+int    vwprintf(const wchar_t * __restrict, __darwin_va_list);
 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);
 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);
@@ -182,42 +161,76 @@ 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);
 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);
-int    wprintf(const wchar_t * __restrict, ...) __DARWIN_LDBL_COMPAT(wprintf);
-int    wscanf(const wchar_t * __restrict, ...) __DARWIN_LDBL_COMPAT(wscanf);
+int    wprintf(const wchar_t * __restrict, ...);
+int    wscanf(const wchar_t * __restrict, ...);
+int    wcswidth(const wchar_t *, size_t);
+int    wcwidth(wchar_t);
+__END_DECLS
+
 
 
-#if !defined(_ANSI_SOURCE)
+
+/* Additional functionality provided by:
+ * POSIX.1-2001
+ * ISO C99
+ */
+
+#if __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus)
+__BEGIN_DECLS
 int    vfwscanf(FILE * __restrict, const wchar_t * __restrict,
 int    vfwscanf(FILE * __restrict, const wchar_t * __restrict,
-           __darwin_va_list) __DARWIN_LDBL_COMPAT(vfwscanf);
+           __darwin_va_list);
 int    vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
 int    vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
-           __darwin_va_list) __DARWIN_LDBL_COMPAT(vswscanf);
-int    vwscanf(const wchar_t * __restrict, __darwin_va_list) __DARWIN_LDBL_COMPAT(vwscanf);
+           __darwin_va_list);
+int    vwscanf(const wchar_t * __restrict, __darwin_va_list);
 float  wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
 long double
 float  wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
 long double
-       wcstold(const wchar_t * __restrict, wchar_t ** __restrict) __DARWIN_LDBL_COMPAT(wcstold);
+       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);
 #endif /* !__DARWIN_NO_LONG_LONG */
 #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);
 #endif /* !__DARWIN_NO_LONG_LONG */
-int    wcswidth(const wchar_t *, size_t);
-int    wcwidth(wchar_t);
-#endif /* !defined(_ANSI_SOURCE) */
+__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);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200809L */
+
+
+
+/* Darwin extensions */
 
 
-#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
-size_t mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
-           size_t, mbstate_t * __restrict);
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+__BEGIN_DECLS
+wchar_t *fgetwln(FILE * __restrict, size_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
 size_t wcslcat(wchar_t *, const wchar_t *, size_t);
 size_t wcslcpy(wchar_t *, const wchar_t *, size_t);
 size_t wcslcat(wchar_t *, const wchar_t *, size_t);
 size_t wcslcpy(wchar_t *, const wchar_t *, size_t);
-size_t wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
-           size_t, mbstate_t * __restrict);
-#endif /* !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_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
 
 /* Poison the following routines if -fshort-wchar is set */
 #if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU
-#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
+#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
 #endif
-__END_DECLS
 
 #ifdef _USE_EXTENDED_LOCALES_
 #include <xlocale/_wchar.h>
 
 #ifdef _USE_EXTENDED_LOCALES_
 #include <xlocale/_wchar.h>