#ifndef _WCTYPE_H
#define _WCTYPE_H
#include <sys/feature_tests.h>
#include <iso/wctype_iso.h>
#ifndef _STRICT_SYMBOLS
#include <ctype.h>
#include <wchar.h>
#endif
#if __cplusplus >= 199711L
using std::wint_t;
using std::wctrans_t;
using std::iswalnum;
using std::iswalpha;
using std::iswcntrl;
using std::iswdigit;
using std::iswgraph;
using std::iswlower;
using std::iswprint;
using std::iswpunct;
using std::iswspace;
using std::iswupper;
using std::iswxdigit;
using std::towlower;
using std::towupper;
using std::wctrans;
using std::towctrans;
using std::iswctype;
using std::wctype;
#if (__cplusplus >= 201103L) || defined(_STDC_C99) || defined(_XPG6) || \
!defined(_STRICT_SYMBOLS)
using std::iswblank;
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _STRICT_SYMBOLS
struct _wctype {
wchar_t tmin;
wchar_t tmax;
unsigned char *index;
unsigned int *type;
wchar_t cmin;
wchar_t cmax;
wchar_t *code;
};
#ifdef _ILLUMOS_PRIVATE
extern int __iswrune(wint_t);
extern wint_t __nextwctype(wint_t, wctype_t);
#define iswrune(c) __iswrune(c)
#define nextwctype(c, t) __nextwctype(c, t)
#endif
#define iswascii(c) isascii(c)
extern int isphonogram(wint_t);
extern int isideogram(wint_t);
extern int isenglish(wint_t);
extern int isnumber(wint_t);
extern int isspecial(wint_t);
extern int iswideogram(wint_t);
extern int iswphonogram(wint_t);
extern int iswnumber(wint_t);
extern int iswhexnumber(wint_t);
extern int iswspecial(wint_t);
#define iscodeset0(c) isascii(c)
#define iscodeset1(c) (((c) & WCHAR_CSMASK) == WCHAR_CS1)
#define iscodeset2(c) (((c) & WCHAR_CSMASK) == WCHAR_CS2)
#define iscodeset3(c) (((c) & WCHAR_CSMASK) == WCHAR_CS3)
#endif
#if defined(_XPG7) || !defined(_STRICT_SYMBOLS)
#ifndef _LOCALE_T
#define _LOCALE_T
typedef struct _locale *locale_t;
#endif
extern wint_t towlower_l(wint_t, locale_t);
extern wint_t towupper_l(wint_t, locale_t);
extern wint_t towctrans_l(wint_t, wctrans_t, locale_t);
extern int iswctype_l(wint_t, wctype_t, locale_t);
extern int iswalnum_l(wint_t, locale_t);
extern int iswalpha_l(wint_t, locale_t);
extern int iswblank_l(wint_t, locale_t);
extern int iswcntrl_l(wint_t, locale_t);
extern int iswdigit_l(wint_t, locale_t);
extern int iswgraph_l(wint_t, locale_t);
extern int iswlower_l(wint_t, locale_t);
extern int iswprint_l(wint_t, locale_t);
extern int iswpunct_l(wint_t, locale_t);
extern int iswspace_l(wint_t, locale_t);
extern int iswupper_l(wint_t, locale_t);
extern int iswxdigit_l(wint_t, locale_t);
extern wctrans_t wctrans_l(const char *, locale_t);
extern wctype_t wctype_l(const char *, locale_t);
#endif
#ifdef __cplusplus
}
#endif
#endif