diff options
Diffstat (limited to 'libc/include/ctype.h')
-rw-r--r-- | libc/include/ctype.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/libc/include/ctype.h b/libc/include/ctype.h new file mode 100644 index 0000000..038659f --- /dev/null +++ b/libc/include/ctype.h @@ -0,0 +1,37 @@ +/* + * ctype.h Character classification and conversion + */ + +#ifndef __CTYPE_H +#define __CTYPE_H + +extern unsigned char _ctype[]; + +#define __CT_d 0x01 /* numeric digit */ +#define __CT_u 0x02 /* upper case */ +#define __CT_l 0x04 /* lower case */ +#define __CT_c 0x08 /* control character */ +#define __CT_s 0x10 /* whitespace */ +#define __CT_p 0x20 /* punctuation */ +#define __CT_x 0x40 /* hexadecimal */ + +#define toupper(c) (islower(c) ? (c)^0x20 : (c)) +#define tolower(c) (isupper(c) ? (c)^0x20 : (c)) +#define _toupper(c) ((c)^0x20) +#define _tolower(c) ((c)^0x20) +#define toascii(c) ((c)&0x7F) + +#define isalnum(c) (_ctype[(int) c]&(__CT_u|__CT_l|__CT_d)) +#define isalpha(c) (_ctype[(int) c]&(__CT_u|__CT_l)) +#define isascii(c) !((c)&~0x7F) +#define iscntrl(c) (_ctype[(int) c]&__CT_c) +#define isdigit(c) (_ctype[(int) c]&__CT_d) +#define isgraph(c) !(_ctype[(int) c]&(__CT_c|__CT_s)) +#define islower(c) (_ctype[(int) c]&__CT_l) +#define isprint(c) !(_ctype[(int) c]&__CT_c) +#define ispunct(c) (_ctype[(int) c]&__CT_p) +#define isspace(c) (_ctype[(int) c]&__CT_s) +#define isupper(c) (_ctype[(int) c]&__CT_u) +#define isxdigit(c) (_ctype[(int) c]&__CT_x) + +#endif /* __CTYPE_H */ |