12 CH_PORTABLE
= __X_____
,
16 [:alpha:] Ï൱ÓÚ [a-zA-Z]
17 [:lower:] Ï൱ÓÚ [a-z]
18 [:upper:] Ï൱ÓÚ [A-Z]
19 [:digit:] Ï൱ÓÚ [0-9]
20 [:alnum:] Ï൱ÓÚ [a-zA-Z0-9]
21 [:blank:] Æ¥Åä ' '(¿Õ¸ñ)¡¢ '\t'(ÖƱí·û)
22 [:space:] Æ¥Åä ' '(¿Õ¸ñ)¡¢'\t'(ÖƱí·û)¡¢'\n'(ÐÂÐÐ)¡¢'\f'()¡¢'\v'(´¹Ö±ÖƱí·û)¡¢'\r'(»Ø³µ·û)
23 [:cntrl:] Æ¥Åä¿ØÖÆ×Ö·û¡£ÔÚ ASCII ÂëÖУ¬ÕâЩ¿ØÖÆ×Ö·ûÊǴӰ˽øÖÆÊý×Ö 000 µ½ 037, ºÍ 177 (DEL)
24 [:print:] Æ¥Åä Ï൱ÓÚ [:alnum:]¡¢[:punct:] ºÍ ¿Õ¸ñ
25 [:graph:] Æ¥Åä Ï൱ÓÚ [:alnum:] ¡¢ [:punct:]
26 [:punct:] Æ¥Åä `! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ ' µÈ±êµã·ûºÅ
27 [:xdigit:] Æ¥ÅäÊ®Áù½øÖÆ×Ö·û '0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
37 CTM_PORTABLE
= (1<<6),
49 // CTM_UPPER = (1<<7),
59 * 'a' - 'z', 'A' - 'Z', 6
82 extern char chsetmap
[128];
83 extern char chsetmap2
[128];
84 extern char oprchmap
[128];
86 inline int chtype (char *map
, char c
, unsigned int type
)
88 return (c
& 0x80) ? 0 : map
[c
& 0x7f] & type
;
91 inline int typestrlen (char *str
, char *map
, char c
, unsigned int type
)
96 for (p
= str
; *p
!= 0; p
++)
98 if (chtype(map
, *p
, type
) == 0)
101 return (int)(p
- str
);
104 inline int typestrcpy (char *dest
, char *str
, char *map
, char c
, unsigned int type
)
109 for (p
= str
; *p
!= 0; p
++)
111 if (chtype(map
, *p
, type
) == 0)
116 return (int)(p
- str
);
119 inline int is_digital (char c
)
121 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_DIGIT
;
124 inline int is_hex (char c
)
126 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_HEX
;
129 inline int is_oct (char c
)
131 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_OCT
;
134 inline int is_alpha (char c
)
136 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_ALPHA
;
139 inline int is_alnum (char c
)
141 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_ALNUM
;
144 inline int is_vname (char c
)
146 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_VNAME
;
149 inline int is_portable (char c
)
151 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_PORTABLE
;
154 inline int is_punct (char c
)
156 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_PUNCT
;
159 inline int is_blank (char c
)
161 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_BLANK
;
164 inline int is_space (char c
)
166 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_SPACE
;
169 inline int is_print (char c
)
171 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_PRINT
;
174 inline int is_graph (char c
)
176 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_GRAPH
;
179 inline int is_cntrl (char c
)
181 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_CNTRL
;
184 inline int is_lower (char c
)
186 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_LOWER
;
189 inline int is_upper (char c
)
191 return (c
& 0x80) ? 0 : chsetmap
[c
& 0x7f] & CTM_UPPER
;
199 #endif /* __CHAR_TYPE__ */