1 /* $Id: myctype.h,v 1.6 2003/09/22 21:02:20 ukai Exp $ */
2 #ifndef _MYCTYPE_H
3 #define _MYCTYPE_H
4 
5 #define MYCTYPE_CNTRL 1
6 #define MYCTYPE_SPACE 2
7 #define MYCTYPE_ALPHA 4
8 #define MYCTYPE_DIGIT 8
9 #define MYCTYPE_PRINT 16
10 #define MYCTYPE_HEX   32
11 #define MYCTYPE_INTSPACE 64
12 #define MYCTYPE_ASCII (MYCTYPE_CNTRL|MYCTYPE_PRINT)
13 #define MYCTYPE_ALNUM (MYCTYPE_ALPHA|MYCTYPE_DIGIT)
14 #define MYCTYPE_XDIGIT (MYCTYPE_HEX|MYCTYPE_DIGIT)
15 
16 #define GET_MYCTYPE(x) (MYCTYPE_MAP[(int)(unsigned char)(x)])
17 #define GET_MYCDIGIT(x) (MYCTYPE_DIGITMAP[(int)(unsigned char)(x)])
18 
19 #define IS_CNTRL(x) (GET_MYCTYPE(x) & MYCTYPE_CNTRL)
20 #define IS_SPACE(x) (GET_MYCTYPE(x) & MYCTYPE_SPACE)
21 #define IS_ALPHA(x) (GET_MYCTYPE(x) & MYCTYPE_ALPHA)
22 #define IS_DIGIT(x) (GET_MYCTYPE(x) & MYCTYPE_DIGIT)
23 #define IS_PRINT(x) (GET_MYCTYPE(x) & MYCTYPE_PRINT)
24 #define IS_ASCII(x) (GET_MYCTYPE(x) & MYCTYPE_ASCII)
25 #define IS_ALNUM(x) (GET_MYCTYPE(x) & MYCTYPE_ALNUM)
26 #define IS_XDIGIT(x) (GET_MYCTYPE(x) & MYCTYPE_XDIGIT)
27 #define IS_INTSPACE(x) (MYCTYPE_MAP[(unsigned char)(x)] & MYCTYPE_INTSPACE)
28 
29 extern unsigned char MYCTYPE_MAP[];
30 extern unsigned char MYCTYPE_DIGITMAP[];
31 
32 #define	TOLOWER(x)	(IS_ALPHA(x) ? ((x)|0x20) : (x))
33 #define	TOUPPER(x)	(IS_ALPHA(x) ? ((x)&~0x20) : (x))
34 
35 #endif
36