Pristine Ack-5.5
[Ack-5.5.git] / lang / cem / libcc.ansi / headers / ctype.h
1 /*
2  * ctype.h - character handling
3  */
4 /* $Id: ctype.h,v 1.6 1994/06/24 11:40:29 ceriel Exp $ */
5
6 #if     !defined(_CTYPE_H)
7 #define _CTYPE_H
8
9 extern char     __ctype[];      /* located in chartab.c */
10
11 #define _U              0x01    /* this bit is for upper-case letters [A-Z] */
12 #define _L              0x02    /* this bit is for lower-case letters [a-z] */
13 #define _N              0x04    /* this bit is for numbers [0-9] */
14 #define _S              0x08    /* this bit is for white space \t \n \f etc */
15 #define _P              0x10    /* this bit is for punctuation characters */
16 #define _C              0x20    /* this bit is for control characters */
17 #define _X              0x40    /* this bit is for hex digits [a-f] and [A-F]*/
18
19 int isalnum(int _c);            /* alphanumeric [a-z], [A-Z], [0-9] */
20 int isalpha(int _c);            /* alphabetic */
21 int iscntrl(int _c);            /* control characters */
22 int isdigit(int _c);            /* digit [0-9] */
23 int isgraph(int _c);            /* graphic character */
24 int islower(int _c);            /* lower-case letter [a-z] */
25 int isprint(int _c);            /* printable character */
26 int ispunct(int _c);            /* punctuation mark */
27 int isspace(int _c);            /* white space sp, \f, \n, \r, \t, \v */
28 int isupper(int _c);            /* upper-case letter [A-Z] */
29 int isxdigit(int _c);           /* hex digit [0-9], [a-f], [A-F] */
30 int tolower(int _c);            /* convert to lower case character */
31 int toupper(int _c);            /* convert to upper case character */
32
33 #define isalpha(c)      ((__ctype+1)[c]&(_U|_L))
34 #define isspace(c)      ((__ctype+1)[c]&_S)
35 #define iscntrl(c)      ((__ctype+1)[c]&_C)
36 #define isxdigit(c)     ((__ctype+1)[c]&(_N|_X))
37 #define isalnum(c)      ((__ctype+1)[c]&(_U|_L|_N))
38 #define isgraph(c)      ((__ctype+1)[c]&(_P|_U|_L|_N))
39 #define ispunct(c)      ((__ctype+1)[c]&_P)
40
41 #define isdigit(c)      ((unsigned) ((c)-'0') < 10)
42 #define islower(c)      ((unsigned) ((c)-'a') < 26)
43 #define isupper(c)      ((unsigned) ((c)-'A') < 26)
44 #define isprint(c)      ((unsigned) ((c)-' ') < 95)
45 #define isascii(c)      ((unsigned) (c) < 128)
46
47 #endif  /* _CTYPE_H */