/* linux-2.6.24/include/linux/ctype.h */ #ifndef _LINUX_CTYPE_H #define _LINUX_CTYPE_H /* * NOTE! This ctype does not handle EOF like the standard C * library is required to. */ #define _U 0x01 /* upper */ /* 大写字母A-Z*/ #define _L 0x02 /* lower */ /* 小写字母a-z */ #define _D 0x04 /* digit */ /* 数字0-9 */ #define _C 0x08 /* cntrl */ /* 控制字符 */ #define _P 0x10 /* punct */ /* 标点符号*/ #define _S 0x20 /* white space (space/lf/tab) */ /* 空白字符:空格、\t、\n 等 */ #define _X 0x40 /* hex digit */ /* 十六进制数 */ #define _SP 0x80 /* hard space (0x20) */ /* 空格字符0x20 */ extern unsigned char _ctype[]; /* 定义于/lib/ctype.c */ #define __ismask(x) (_ctype[(int)(unsigned char)(x)]) #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) #define iscntrl(c) ((__ismask(c)&(_C)) != 0) #define isdigit(c) ((__ismask(c)&(_D)) != 0) #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) #define islower(c) ((__ismask(c)&(_L)) != 0) #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) #define ispunct(c) ((__ismask(c)&(_P)) != 0) #define isspace(c) ((__ismask(c)&(_S)) != 0) #define isupper(c) ((__ismask(c)&(_U)) != 0) #define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) #define isascii(c) (((unsigned char)(c))=0x7f) #define toascii(c) (((unsigned char)(c))&0x7f) /* 考虑到多线程的安全问题,这里用函数代替宏定义;对比linux 0.11中的宏定义 */ static inline unsigned char __tolower(unsigned char c) { if (isupper(c)) c -= 'A'-'a'; return c; } static inline unsigned char __toupper(unsigned char c) { if (islower(c)) c -= 'a'-'A'; return c; } #define tolower(c) __tolower(c) #define toupper(c) __toupper(c) #endif /* linux-0.11/include/ctype.h */ #ifndef _CTYPE_H #define _CTYPE_H #define _U 0x01 /* upper */ #define _L 0x02 /* lower */ #define _D 0x04 /* digit */ #define _C 0x08 /* cntrl */ #define _P 0x10 /* punct */ #define _S 0x20 /* white space (space/lf/tab) */ #define _X 0x40 /* hex digit */ #define _SP 0x80 /* hard space (0x20) */ extern unsigned char _ctype[]; extern char _ctmp; #define isalnum(c) ((_ctype 1)[c]&(_U|_L|_D)) /* _ctype为数组首地址,和EOF(0x00)的地址一样 */ #define isalpha(c) ((_ctype 1)[c]&(_U|_L)) #define iscntrl(c) ((_ctype 1)[c]&(_C)) #define isdigit(c) ((_ctype 1)[c]&(_D)) #define isgraph(c) ((_ctype 1)[c]&(_P|_U|_L|_D)) #define islower(c) ((_ctype 1)[c]&(_L)) #define isprint(c) ((_ctype 1)[c]&(_P|_U|_L|_D|_SP)) #define ispunct(c) ((_ctype 1)[c]&(_P)) #define isspace(c) ((_ctype 1)[c]&(_S)) #define isupper(c) ((_ctype 1)[c]&(_U)) #define isxdigit(c) ((_ctype 1)[c]&(_D|_X)) #define isascii(c) (((unsigned) c)=0x7f) #define toascii(c) (((unsigned) c)&0x7f) /* 对于多线程编程来说只是不安全的,因为两个或多个县城可能在同一时刻使用这个公共的临时变量 */ #define tolower(c) (_ctmp=c,isupper(_ctmp)?_ctmp-('A'-'a'):_ctmp) #define toupper(c) (_ctmp=c,islower(_ctmp)?_ctmp-('a'-'A'):_ctmp) #endif /* linux-0.11/lib/ctype.c */ /* * linux/lib/ctype.c * * (C) 1991 Linus Torvalds */ #include ctype.h> char _ctmp; /* 字符特性数组 */ unsigned char _ctype[] = {0x00, /* EOF */ _C,_C,_C,_C,_C,_C,_C,_C, /* 0-7 */ _C,_C|_S,_C|_S,_C|_S,_C|_S,_C|_S,_C,_C, /* 8-15 */ _C,_C,_C,_C,_C,_C,_C,_C, /* 16-23 */ _C,_C,_C,_C,_C,_C,_C,_C, /* 24-31 */ _S|_SP,_P,_P,_P,_P,_P,_P,_P, /* 32-39 */ _P,_P,_P,_P,_P,_P,_P,_P, /* 40-47 */ _D,_D,_D,_D,_D,_D,_D,_D, /* 48-55 */ _D,_D,_P,_P,_P,_P,_P,_P, /* 56-63 */ _P,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U, /* 64-71 */ _U,_U,_U,_U,_U,_U,_U,_U, /* 72-79 */ _U,_U,_U,_U,_U,_U,_U,_U, /* 80-87 */ _U,_U,_U,_P,_P,_P,_P,_P, /* 88-95 */ _P,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L, /* 96-103 */ _L,_L,_L,_L,_L,_L,_L,_L, /* 104-111 */ _L,_L,_L,_L,_L,_L,_L,_L, /* 112-119 */ _L,_L,_L,_P,_P,_P,_P,_C, /* 120-127 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 128-143 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 144-159 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 160-175 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 176-191 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 192-207 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 208-223 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 224-239 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; /* 240-255 */ |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 11:30 , Processed in 0.118323 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.