#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4
type wint_t
type wctrans_t
type wctype_t
# if defined XOPEN2K8 || defined POSIX2008
type locale_t
# endif

function int iswalnum (wint_t)
function int iswalpha (wint_t)
# ifndef UNIX98
function int iswblank (wint_t)
# endif
function int iswcntrl (wint_t)
function int iswdigit (wint_t)
function int iswgraph (wint_t)
function int iswlower (wint_t)
function int iswprint (wint_t)
function int iswpunct (wint_t)
function int iswspace (wint_t)
function int iswupper (wint_t)
function int iswxdigit (wint_t)
function int iswctype (wint_t, wctype_t)
function wint_t towctrans (wint_t, wctrans_t)
function wint_t towlower (wint_t)
function wint_t towupper (wint_t)
function wctrans_t wctrans (const char*)
function wctype_t wctype (const char*)
# if defined XOPEN2K8 || defined POSIX2008
function int iswalnum_l (wint_t, locale_t)
function int iswalpha_l (wint_t, locale_t)
function int iswblank_l (wint_t, locale_t)
function int iswcntrl_l (wint_t, locale_t)
function int iswdigit_l (wint_t, locale_t)
function int iswgraph_l (wint_t, locale_t)
function int iswlower_l (wint_t, locale_t)
function int iswprint_l (wint_t, locale_t)
function int iswpunct_l (wint_t, locale_t)
function int iswspace_l (wint_t, locale_t)
function int iswupper_l (wint_t, locale_t)
function int iswxdigit_l (wint_t, locale_t)
function int iswctype_l (wint_t, wctype_t, locale_t)
function wint_t towctrans_l (wint_t, wctrans_t, locale_t)
function wint_t towlower_l (wint_t, locale_t)
function wint_t towupper_l (wint_t, locale_t)
function wctrans_t wctrans_l (const char*, locale_t)
function wctype_t wctype_l (const char*, locale_t)
# endif

macro-constant WEOF {wint_t}

#if !defined ISO && !defined ISO99 && !defined ISO11
allow-header ctype.h
allow-header stdio.h
allow-header stdarg.h
allow-header stdlib.h
allow-header string.h
allow-header stddef.h
allow-header time.h
allow-header wchar.h
#endif

allow is[abcdefghijklmnopqrstuvwxyz]*
allow to[abcdefghijklmnopqrstuvwxyz]*
#if !defined ISO && !defined ISO99 && !defined ISO11
allow *_t
#endif
#endif
