File: /usr/src/linux/include/linux/ctype.h

1     #ifndef _LINUX_CTYPE_H
2     #define _LINUX_CTYPE_H
3     
4     /*
5      * NOTE! This ctype does not handle EOF like the standard C
6      * library is required to.
7      */
8     
9     #define _U	0x01	/* upper */
10     #define _L	0x02	/* lower */
11     #define _D	0x04	/* digit */
12     #define _C	0x08	/* cntrl */
13     #define _P	0x10	/* punct */
14     #define _S	0x20	/* white space (space/lf/tab) */
15     #define _X	0x40	/* hex digit */
16     #define _SP	0x80	/* hard space (0x20) */
17     
18     extern unsigned char _ctype[];
19     
20     #define __ismask(x) (_ctype[(int)(unsigned char)(x)])
21     
22     #define isalnum(c)	((__ismask(c)&(_U|_L|_D)) != 0)
23     #define isalpha(c)	((__ismask(c)&(_U|_L)) != 0)
24     #define iscntrl(c)	((__ismask(c)&(_C)) != 0)
25     #define isdigit(c)	((__ismask(c)&(_D)) != 0)
26     #define isgraph(c)	((__ismask(c)&(_P|_U|_L|_D)) != 0)
27     #define islower(c)	((__ismask(c)&(_L)) != 0)
28     #define isprint(c)	((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
29     #define ispunct(c)	((__ismask(c)&(_P)) != 0)
30     #define isspace(c)	((__ismask(c)&(_S)) != 0)
31     #define isupper(c)	((__ismask(c)&(_U)) != 0)
32     #define isxdigit(c)	((__ismask(c)&(_D|_X)) != 0)
33     
34     #define isascii(c) (((unsigned char)(c))<=0x7f)
35     #define toascii(c) (((unsigned char)(c))&0x7f)
36     
37     static inline unsigned char __tolower(unsigned char c)
38     {
39     	if (isupper(c))
40     		c -= 'A'-'a';
41     	return c;
42     }
43     
44     static inline unsigned char __toupper(unsigned char c)
45     {
46     	if (islower(c))
47     		c -= 'a'-'A';
48     	return c;
49     }
50     
51     #define tolower(c) __tolower(c)
52     #define toupper(c) __toupper(c)
53     
54     #endif
55