找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 服务器 Linux/BSD 查看内容

linux 0.11 - /include/ctype.h

2009-12-20 13:33| 发布者: admin| 查看: 36| 评论: 0|原作者: 仙剑



/* 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 */










最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏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.

返回顶部