Commit | Line | Data |
---|---|---|
ff9ad751 C |
1 | /* ctype.h 4.1 82/05/07 */ |
2 | ||
3 | # | |
4 | /* | |
5 | * UNIX shell | |
6 | * | |
7 | * S. R. Bourne | |
8 | * Bell Telephone Laboratories | |
9 | * | |
10 | */ | |
11 | ||
12 | ||
13 | /* table 1 */ | |
14 | #define T_SUB 01 | |
15 | #define T_MET 02 | |
16 | #define T_SPC 04 | |
17 | #define T_DIP 010 | |
18 | #define T_EOF 020 | |
19 | #define T_EOR 040 | |
20 | #define T_QOT 0100 | |
21 | #define T_ESC 0200 | |
22 | ||
23 | /* table 2 */ | |
24 | #define T_BRC 01 | |
25 | #define T_DEF 02 | |
26 | #define T_AST 04 | |
27 | #define T_DIG 010 | |
28 | #define T_FNG 020 | |
29 | #define T_SHN 040 | |
30 | #define T_IDC 0100 | |
31 | #define T_SET 0200 | |
32 | ||
33 | /* for single chars */ | |
34 | #define _TAB (T_SPC) | |
35 | #define _SPC (T_SPC) | |
36 | #define _UPC (T_IDC) | |
37 | #define _LPC (T_IDC) | |
38 | #define _DIG (T_DIG) | |
39 | #define _EOF (T_EOF) | |
40 | #define _EOR (T_EOR) | |
41 | #define _BAR (T_DIP) | |
42 | #define _HAT (T_MET) | |
43 | #define _BRA (T_MET) | |
44 | #define _KET (T_MET) | |
45 | #define _SQB (T_FNG) | |
46 | #define _AMP (T_DIP) | |
47 | #define _SEM (T_DIP) | |
48 | #define _LT (T_DIP) | |
49 | #define _GT (T_DIP) | |
50 | #define _LQU (T_QOT|T_ESC) | |
51 | #define _BSL (T_ESC) | |
52 | #define _DQU (T_QOT) | |
53 | #define _DOL1 (T_SUB|T_ESC) | |
54 | ||
55 | #define _CBR T_BRC | |
56 | #define _CKT T_DEF | |
57 | #define _AST (T_AST|T_FNG) | |
58 | #define _EQ (T_DEF) | |
59 | #define _MIN (T_DEF|T_SHN) | |
60 | #define _PCS (T_SHN) | |
61 | #define _NUM (T_SHN) | |
62 | #define _DOL2 (T_SHN) | |
63 | #define _PLS (T_DEF|T_SET) | |
64 | #define _AT (T_AST) | |
65 | #define _QU (T_DEF|T_FNG|T_SHN) | |
66 | ||
67 | /* abbreviations for tests */ | |
68 | #define _IDCH (T_IDC|T_DIG) | |
69 | #define _META (T_SPC|T_DIP|T_MET|T_EOR) | |
70 | ||
71 | char _ctype1[]; | |
72 | ||
73 | /* nb these args are not call by value !!!! */ | |
74 | #define space(c) (((c)"E)==0 ANDF _ctype1[c]&(T_SPC)) | |
75 | #define eofmeta(c) (((c)"E)==0 ANDF _ctype1[c]&(_META|T_EOF)) | |
76 | #define qotchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_QOT)) | |
77 | #define eolchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_EOR|T_EOF)) | |
78 | #define dipchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_DIP)) | |
79 | #define subchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_SUB|T_QOT)) | |
80 | #define escchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_ESC)) | |
81 | ||
82 | char _ctype2[]; | |
83 | ||
84 | #define digit(c) (((c)"E)==0 ANDF _ctype2[c]&(T_DIG)) | |
85 | #define fngchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_FNG)) | |
86 | #define dolchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST|T_BRC|T_DIG|T_IDC|T_SHN)) | |
87 | #define defchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_DEF)) | |
88 | #define setchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_SET)) | |
89 | #define digchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST|T_DIG)) | |
90 | #define letter(c) (((c)"E)==0 ANDF _ctype2[c]&(T_IDC)) | |
91 | #define alphanum(c) (((c)"E)==0 ANDF _ctype2[c]&(_IDCH)) | |
92 | #define astchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST)) |