#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
#ifdef _EXTERNALIZE_CTYPE_INLINES_
#define _USE_CTYPE_INLINE_
#define __DARWIN_CTYPE_static_inline
#else
#define __DARWIN_CTYPE_static_inline static __inline
#endif
#ifdef _EXTERNALIZE_CTYPE_INLINES_TOP_
#define _USE_CTYPE_INLINE_
#define __DARWIN_CTYPE_TOP_static_inline
#else
#define __DARWIN_CTYPE_TOP_static_inline static __inline
#endif
#if !defined(_DONT_USE_CTYPE_INLINE_) && \
(defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus))
__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
__DARWIN_CTYPE_TOP_static_inline int
isascii(int _c)
{
return ((_c & ~0x7F) == 0);
}
#ifdef USE_ASCII
__DARWIN_CTYPE_static_inline int
__maskrune(__darwin_ct_rune_t _c, unsigned long _f)
{
return _DefaultRuneLocale.__runetype[_c & 0xff] & _f;
}
#elif defined(__LIBC__)
__DARWIN_CTYPE_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
__DARWIN_CTYPE_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
}
__DARWIN_CTYPE_static_inline __darwin_ct_rune_t
__isctype(__darwin_ct_rune_t _c, unsigned long _f)
{
#ifdef USE_ASCII
return !!(__maskrune(_c, _f));
#else
return (_c < 0 || _c >= _CACHED_RUNES) ? 0 :
!!(_DefaultRuneLocale.__runetype[_c] & _f);
#endif
}
#ifdef USE_ASCII
__DARWIN_CTYPE_static_inline __darwin_ct_rune_t
__toupper(__darwin_ct_rune_t _c)
{
return _DefaultRuneLocale.__mapupper[_c & 0xff];
}
__DARWIN_CTYPE_static_inline __darwin_ct_rune_t
__tolower(__darwin_ct_rune_t _c)
{
return _DefaultRuneLocale.__maplower[_c & 0xff];
}
#elif defined(__LIBC__)
__DARWIN_CTYPE_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];
}
__DARWIN_CTYPE_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
__DARWIN_CTYPE_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);
}
#ifndef _EXTERNALIZE_CTYPE_INLINES_
#define _tolower(c) __tolower(c)
#define _toupper(c) __toupper(c)
__DARWIN_CTYPE_TOP_static_inline int
isalnum(int _c)
{
return (__istype(_c, _CTYPE_A|_CTYPE_D));
}
__DARWIN_CTYPE_TOP_static_inline int
isalpha(int _c)
{
return (__istype(_c, _CTYPE_A));
}
__DARWIN_CTYPE_TOP_static_inline int
isblank(int _c)
{
return (__istype(_c, _CTYPE_B));
}
__DARWIN_CTYPE_TOP_static_inline int
iscntrl(int _c)
{
return (__istype(_c, _CTYPE_C));
}
__DARWIN_CTYPE_TOP_static_inline int
isdigit(int _c)
{
return (__isctype(_c, _CTYPE_D));
}
__DARWIN_CTYPE_TOP_static_inline int
isgraph(int _c)
{
return (__istype(_c, _CTYPE_G));
}
__DARWIN_CTYPE_TOP_static_inline int
islower(int _c)
{
return (__istype(_c, _CTYPE_L));
}
__DARWIN_CTYPE_TOP_static_inline int
isprint(int _c)
{
return (__istype(_c, _CTYPE_R));
}
__DARWIN_CTYPE_TOP_static_inline int
ispunct(int _c)
{
return (__istype(_c, _CTYPE_P));
}
__DARWIN_CTYPE_TOP_static_inline int
isspace(int _c)
{
return (__istype(_c, _CTYPE_S));
}
__DARWIN_CTYPE_TOP_static_inline int
isupper(int _c)
{
return (__istype(_c, _CTYPE_U));
}
__DARWIN_CTYPE_TOP_static_inline int
isxdigit(int _c)
{
return (__isctype(_c, _CTYPE_X));
}
__DARWIN_CTYPE_TOP_static_inline int
toascii(int _c)
{
return (_c & 0x7F);
}
__DARWIN_CTYPE_TOP_static_inline int
tolower(int _c)
{
return (__tolower(_c));
}
__DARWIN_CTYPE_TOP_static_inline int
toupper(int _c)
{
return (__toupper(_c));
}
#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
__DARWIN_CTYPE_TOP_static_inline int
digittoint(int _c)
{
return (__maskrune(_c, 0x0F));
}
__DARWIN_CTYPE_TOP_static_inline int
ishexnumber(int _c)
{
return (__istype(_c, _CTYPE_X));
}
__DARWIN_CTYPE_TOP_static_inline int
isideogram(int _c)
{
return (__istype(_c, _CTYPE_I));
}
__DARWIN_CTYPE_TOP_static_inline int
isnumber(int _c)
{
return (__istype(_c, _CTYPE_D));
}
__DARWIN_CTYPE_TOP_static_inline int
isphonogram(int _c)
{
return (__istype(_c, _CTYPE_Q));
}
__DARWIN_CTYPE_TOP_static_inline int
isrune(int _c)
{
return (__istype(_c, 0xFFFFFFF0L));
}
__DARWIN_CTYPE_TOP_static_inline int
isspecial(int _c)
{
return (__istype(_c, _CTYPE_T));
}
#endif
#endif
#else
__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) || defined(_DARWIN_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
#endif
#ifdef _USE_EXTENDED_LOCALES_
#include <xlocale/_ctype.h>
#endif
#endif