00001
00002
00003
00004
00005
00006
00007
00008 #ifndef CTYPE_H
00009 #define CTYPE_H
00010
00011
00012
00013
00014
00015
00016 #define _U 0x01
00017 #define _L 0x02
00018 #define _D 0x04
00019 #define _C 0x08
00020 #define _P 0x10
00021 #define _S 0x20
00022 #define _X 0x40
00023 #define _SP 0x80
00024
00025 extern unsigned char _ctype[];
00026
00027 #define __ismask(x) (_ctype[(int)(unsigned char)(x)])
00028
00029
00030 #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
00031
00032 #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
00033
00034 #define iscntrl(c) ((__ismask(c)&(_C)) != 0)
00035
00036 #define isdigit(c) ((__ismask(c)&(_D)) != 0)
00037
00038
00039 #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
00040
00041 #define islower(c) ((__ismask(c)&(_L)) != 0)
00042
00043 #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
00044
00045 #define ispunct(c) ((__ismask(c)&(_P)) != 0)
00046
00047
00048 #define isspace(c) ((__ismask(c)&(_S)) != 0)
00049
00050 #define isupper(c) ((__ismask(c)&(_U)) != 0)
00051
00052 #define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0)
00053
00054 #define isascii(c) (((unsigned char)(c))<=0x7f)
00055
00056 #define toascii(c) (((unsigned char)(c))&0x7f)
00057
00058
00059
00060
00061 static inline unsigned char __tolower(unsigned char c)
00062 {
00063 if (isupper(c))
00064 c -= 'A'-'a';
00065 return c;
00066 }
00067
00068
00069
00070
00071 static inline unsigned char __toupper(unsigned char c)
00072 {
00073 if (islower(c))
00074 c -= 'a'-'A';
00075 return c;
00076 }
00077
00078
00079 #define tolower(c) __tolower(c)
00080
00081
00082 #define toupper(c) __toupper(c)
00083
00084 #endif