#include "xlocale_private.h"
#ifndef _CTYPE_H_
#define _CTYPE_H_
#include <runetype.h>
#define _CTYPE_A 0x00000100L
#define _CTYPE_C 0x00000200L
#define _CTYPE_D 0x00000400L
#define _CTYPE_G 0x00000800L
#define _CTYPE_L 0x00001000L
#define _CTYPE_P 0x00002000L
#define _CTYPE_S 0x00004000L
#define _CTYPE_U 0x00008000L
#define _CTYPE_X 0x00010000L
#define _CTYPE_B 0x00020000L
#define _CTYPE_R 0x00040000L
#define _CTYPE_I 0x00080000L
#define _CTYPE_T 0x00100000L
#define _CTYPE_Q 0x00200000L
#define _CTYPE_SW0 0x20000000L
#define _CTYPE_SW1 0x40000000L
#define _CTYPE_SW2 0x80000000L
#define _CTYPE_SW3 0xc0000000L
#define _CTYPE_SWM 0xe0000000L
#define _CTYPE_SWS 30
#ifdef _NONSTD_SOURCE
#define _A _CTYPE_A
#define _C _CTYPE_C
#define _D _CTYPE_D
#define _G _CTYPE_G
#define _L _CTYPE_L
#define _P _CTYPE_P
#define _S _CTYPE_S
#define _U _CTYPE_U
#define _X _CTYPE_X
#define _B _CTYPE_B
#define _R _CTYPE_R
#define _I _CTYPE_I
#define _T _CTYPE_T
#define _Q _CTYPE_Q
#define _SW0 _CTYPE_SW0
#define _SW1 _CTYPE_SW1
#define _SW2 _CTYPE_SW2
#define _SW3 _CTYPE_SW3
#endif
__BEGIN_DECLS
int isalnum(int);
int isalpha(int);
int isblank(int);
int iscntrl(int);
int isdigit(int);
int isgraph(int);
int islower(int);
int isprint(int);
int ispunct(int);
int isspace(int);
int isupper(int);
int isxdigit(int);
int tolower(int);
int toupper(int);
int isascii(int);
int toascii(int);
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE)
int _tolower(int);
int _toupper(int);
int digittoint(int);
int ishexnumber(int);
int isideogram(int);
int isnumber(int);
int isphonogram(int);
int isrune(int);
int isspecial(int);
#endif
__END_DECLS
#define isalnum(c) __istype((c), (_CTYPE_A|_CTYPE_D))
#define isalpha(c) __istype((c), _CTYPE_A)
#define isblank(c) __istype((c), _CTYPE_B)
#define iscntrl(c) __istype((c), _CTYPE_C)
#define isdigit(c) __isctype((c), _CTYPE_D)
#define isgraph(c) __istype((c), _CTYPE_G)
#define islower(c) __istype((c), _CTYPE_L)
#define isprint(c) __istype((c), _CTYPE_R)
#define ispunct(c) __istype((c), _CTYPE_P)
#define isspace(c) __istype((c), _CTYPE_S)
#define isupper(c) __istype((c), _CTYPE_U)
#define isxdigit(c) __isctype((c), _CTYPE_X)
#define tolower(c) __tolower(c)
#define toupper(c) __toupper(c)
#define _tolower(c) __tolower(c)
#define _toupper(c) __toupper(c)
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE)
#define digittoint(c) __maskrune((c), 0xFF)
#define isascii(c) (((c) & ~0x7F) == 0)
#define ishexnumber(c) __istype((c), _CTYPE_X)
#define isideogram(c) __istype((c), _CTYPE_I)
#define isnumber(c) __istype((c), _CTYPE_D)
#define isphonogram(c) __istype((c), _CTYPE_Q)
#define isrune(c) __istype((c), 0xFFFFFF00L)
#define isspecial(c) __istype((c), _CTYPE_T)
#define toascii(c) ((c) & 0x7F)
#endif
__BEGIN_DECLS
unsigned long ___runetype(__darwin_ct_rune_t);
__darwin_ct_rune_t ___tolower(__darwin_ct_rune_t);
__darwin_ct_rune_t ___toupper(__darwin_ct_rune_t);
__END_DECLS
#ifdef _EXTERNALIZE_CTYPE_INLINES_
#define _USE_CTYPE_INLINE_
#define static
#define __inline
#endif
#if !defined(_DONT_USE_CTYPE_INLINE_) && \
(defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus))
#ifdef USE_ASCII
static __inline int
__maskrune(__darwin_ct_rune_t _c, unsigned long _f)
{
return _CurrentRuneLocale->__runetype[_c && 0xff] & _f;
}
#elif defined(__LIBC__)
static __inline int
__maskrune(__darwin_ct_rune_t _c, unsigned long _f)
{
return ((_c < 0 || _c >= _CACHED_RUNES) ? ___runetype(_c) :
__current_locale()->__lc_ctype->_CurrentRuneLocale.__runetype[_c]) & _f;
}
#else
__BEGIN_DECLS
int __maskrune(__darwin_ct_rune_t, unsigned long);
__END_DECLS
#endif
static __inline int
__istype(__darwin_ct_rune_t _c, unsigned long _f)
{
#ifdef USE_ASCII
return !!(__maskrune(_c, _f));
#else
return !!(isascii(_c) ? (_DefaultRuneLocale.__runetype[_c] & _f)
: __maskrune(_c, _f));
#endif
}
static __inline __darwin_ct_rune_t
__isctype(__darwin_ct_rune_t _c, unsigned long _f)
{
#ifdef USE_ASCII
return !!(_DefaultRuneLocale.__runetype[_c & 0xff] & _f);
#else
return (_c < 0 || _c >= _CACHED_RUNES) ? 0 :
!!(_DefaultRuneLocale.__runetype[_c] & _f);
#endif
}
#ifdef USE_ASCII
static __inline __darwin_ct_rune_t
__toupper(__darwin_ct_rune_t _c)
{
return _CurrentRuneLocale->__mapupper[_c & 0xff];
}
static __inline __darwin_ct_rune_t
__tolower(__darwin_ct_rune_t _c)
{
return _CurrentRuneLocale->__maplower[_c & 0xff];
}
#elif defined(__LIBC__)
static __inline __darwin_ct_rune_t
__toupper(__darwin_ct_rune_t _c)
{
return (_c < 0 || _c >= _CACHED_RUNES) ? ___toupper(_c) :
__current_locale()->__lc_ctype->_CurrentRuneLocale.__mapupper[_c];
}
static __inline __darwin_ct_rune_t
__tolower(__darwin_ct_rune_t _c)
{
return (_c < 0 || _c >= _CACHED_RUNES) ? ___tolower(_c) :
__current_locale()->__lc_ctype->_CurrentRuneLocale.__maplower[_c];
}
#else
__BEGIN_DECLS
__darwin_ct_rune_t __toupper(__darwin_ct_rune_t);
__darwin_ct_rune_t __tolower(__darwin_ct_rune_t);
__END_DECLS
#endif
static __inline int
__wcwidth(__darwin_ct_rune_t _c)
{
unsigned int _x;
if (_c == 0)
return (0);
_x = (unsigned int)__maskrune(_c, _CTYPE_SWM|_CTYPE_R);
if ((_x & _CTYPE_SWM) != 0)
return ((_x & _CTYPE_SWM) >> _CTYPE_SWS);
return ((_x & _CTYPE_R) != 0 ? 1 : -1);
}
#else
__BEGIN_DECLS
int __maskrune(__darwin_ct_rune_t, unsigned long);
int __istype (__darwin_ct_rune_t, unsigned long);
int __isctype(__darwin_ct_rune_t, unsigned long);
__darwin_ct_rune_t __toupper(__darwin_ct_rune_t);
__darwin_ct_rune_t __tolower(__darwin_ct_rune_t);
int __wcwidth(__darwin_ct_rune_t);
__END_DECLS
#endif
#ifdef _USE_EXTENDED_LOCALES_
#include <xlocale/_ctype.h>
#endif
#endif