X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/3d9156a7a519a5e3aa1b92e9d9d4b991f1aed7ff..6dccf0e0b5e80b7b6176e8d332e646175431bb3d:/include/wctype.h diff --git a/include/wctype.h b/include/wctype.h index dabbaff..bebb2bf 100644 --- a/include/wctype.h +++ b/include/wctype.h @@ -33,20 +33,86 @@ #include #include <_types.h> +#include <_types/_wctrans_t.h> -#ifndef _WCTRANS_T -#define _WCTRANS_T -typedef __darwin_wctrans_t wctrans_t; -#endif +//Begin-Libc +/* + * _EXTERNALIZE_WCTYPE_INLINES_TOP_ is defined in locale/iswctype.c to tell us + * to generate code for extern versions of all top-level inline functions. + */ +#ifdef _EXTERNALIZE_WCTYPE_INLINES_TOP_ +#define _USE_CTYPE_INLINE_ +#define __DARWIN_WCTYPE_TOP_inline +#else /* !_EXTERNALIZE_WCTYPE_INLINES_TOP_ */ +//End-Libc +#define __DARWIN_WCTYPE_TOP_inline __header_inline +//Begin-Libc +#endif /* _EXTERNALIZE_WCTYPE_INLINES_TOP_ */ +//End-Libc #include <_wctype.h> #include +/* + * Use inline functions if we are allowed to and the compiler supports them. + */ +#if !defined(_DONT_USE_CTYPE_INLINE_) && \ + (defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus)) + +__DARWIN_WCTYPE_TOP_inline int +iswblank(wint_t _wc) +{ + return (__istype(_wc, _CTYPE_B)); +} + +#if !defined(_ANSI_SOURCE) +__DARWIN_WCTYPE_TOP_inline int +iswascii(wint_t _wc) +{ + return ((_wc & ~0x7F) == 0); +} + +__DARWIN_WCTYPE_TOP_inline int +iswhexnumber(wint_t _wc) +{ + return (__istype(_wc, _CTYPE_X)); +} + +__DARWIN_WCTYPE_TOP_inline int +iswideogram(wint_t _wc) +{ + return (__istype(_wc, _CTYPE_I)); +} + +__DARWIN_WCTYPE_TOP_inline int +iswnumber(wint_t _wc) +{ + return (__istype(_wc, _CTYPE_D)); +} + +__DARWIN_WCTYPE_TOP_inline int +iswphonogram(wint_t _wc) +{ + return (__istype(_wc, _CTYPE_Q)); +} + +__DARWIN_WCTYPE_TOP_inline int +iswrune(wint_t _wc) +{ + return (__istype(_wc, 0xFFFFFFF0L)); +} + +__DARWIN_WCTYPE_TOP_inline int +iswspecial(wint_t _wc) +{ + return (__istype(_wc, _CTYPE_T)); +} +#endif /* !_ANSI_SOURCE */ + +#else /* not using inlines */ + __BEGIN_DECLS int iswblank(wint_t); -wint_t towctrans(wint_t, wctrans_t); -wctrans_t - wctrans(const char *); #if !defined(_ANSI_SOURCE) wint_t iswascii(wint_t); @@ -57,23 +123,18 @@ wint_t iswphonogram(wint_t); wint_t iswrune(wint_t); wint_t iswspecial(wint_t); #endif - -#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) -wint_t nextwctype(wint_t, wctype_t); -#endif __END_DECLS -#define iswblank(wc) __istype((wc), _CTYPE_B) +#endif /* using inlines */ -#if !defined(_ANSI_SOURCE) -#define iswascii(wc) (((wc) & ~0x7F) == 0) -#define iswhexnumber(wc) __istype((wc), _CTYPE_X) -#define iswideogram(wc) __istype((wc), _CTYPE_I) -#define iswnumber(wc) __istype((wc), _CTYPE_D) -#define iswphonogram(wc) __istype((wc), _CTYPE_Q) -#define iswrune(wc) __istype((wc), 0xFFFFFF00L) -#define iswspecial(wc) __istype((wc), _CTYPE_T) +__BEGIN_DECLS +#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) +wint_t nextwctype(wint_t, wctype_t); #endif +wint_t towctrans(wint_t, wctrans_t); +wctrans_t + wctrans(const char *); +__END_DECLS #ifdef _USE_EXTENDED_LOCALES_ #include