| #ifndef _CTYPE_H |
| #define _CTYPE_H |
| |
| #define _U 0x01 /* upper */ |
| #define _L 0x02 /* lower */ |
| #define _D 0x04 /* digit */ |
| #define _C 0x08 /* cntrl */ |
| #define _P 0x10 /* punct */ |
| #define _S 0x20 /* white space (space/lf/tab) */ |
| #define _X 0x40 /* hex digit */ |
| #define _SP 0x80 /* hard space (0x20) */ |
| |
| extern unsigned char _ctype[]; |
| extern char _ctmp; |
| |
| #define isalnum(c) ((_ctype+1)[c]&(_U|_L|_D)) |
| #define isalpha(c) ((_ctype+1)[c]&(_U|_L)) |
| #define iscntrl(c) ((_ctype+1)[c]&(_C)) |
| #define isdigit(c) ((_ctype+1)[c]&(_D)) |
| #define isgraph(c) ((_ctype+1)[c]&(_P|_U|_L|_D)) |
| #define islower(c) ((_ctype+1)[c]&(_L)) |
| #define isprint(c) ((_ctype+1)[c]&(_P|_U|_L|_D|_SP)) |
| #define ispunct(c) ((_ctype+1)[c]&(_P)) |
| #define isspace(c) ((_ctype+1)[c]&(_S)) |
| #define isupper(c) ((_ctype+1)[c]&(_U)) |
| #define isxdigit(c) ((_ctype+1)[c]&(_D|_X)) |
| |
| #define isascii(c) (((unsigned) c)<=0x7f) |
| #define toascii(c) (((unsigned) c)&0x7f) |
| |
| #define tolower(c) (_ctmp=c,isupper(_ctmp)?_ctmp-('A'-'a'):_ctmp) |
| #define toupper(c) (_ctmp=c,islower(_ctmp)?_ctmp-('a'-'A'):_ctmp) |
| |
| #endif |