xref: /original-bsd/old/sh/ctype.h (revision 9bf23402)
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)&QUOTE)==0 ANDF _ctype1[c]&(T_SPC))
75 #define eofmeta(c)	(((c)&QUOTE)==0 ANDF _ctype1[c]&(_META|T_EOF))
76 #define qotchar(c)	(((c)&QUOTE)==0 ANDF _ctype1[c]&(T_QOT))
77 #define eolchar(c)	(((c)&QUOTE)==0 ANDF _ctype1[c]&(T_EOR|T_EOF))
78 #define dipchar(c)	(((c)&QUOTE)==0 ANDF _ctype1[c]&(T_DIP))
79 #define subchar(c)	(((c)&QUOTE)==0 ANDF _ctype1[c]&(T_SUB|T_QOT))
80 #define escchar(c)	(((c)&QUOTE)==0 ANDF _ctype1[c]&(T_ESC))
81 
82 char	_ctype2[];
83 
84 #define	digit(c)	(((c)&QUOTE)==0 ANDF _ctype2[c]&(T_DIG))
85 #define fngchar(c)	(((c)&QUOTE)==0 ANDF _ctype2[c]&(T_FNG))
86 #define dolchar(c)	(((c)&QUOTE)==0 ANDF _ctype2[c]&(T_AST|T_BRC|T_DIG|T_IDC|T_SHN))
87 #define defchar(c)	(((c)&QUOTE)==0 ANDF _ctype2[c]&(T_DEF))
88 #define setchar(c)	(((c)&QUOTE)==0 ANDF _ctype2[c]&(T_SET))
89 #define digchar(c)	(((c)&QUOTE)==0 ANDF _ctype2[c]&(T_AST|T_DIG))
90 #define	letter(c)	(((c)&QUOTE)==0 ANDF _ctype2[c]&(T_IDC))
91 #define alphanum(c)	(((c)&QUOTE)==0 ANDF _ctype2[c]&(_IDCH))
92 #define astchar(c)	(((c)&QUOTE)==0 ANDF _ctype2[c]&(T_AST))
93