summaryrefslogtreecommitdiff
path: root/usr.bin/mg/chrdef.h
blob: 4b4c386f0ec2d44d427c9d0c03d1a71b3ff80d35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
 * sys/default/chardef.h: character set specific #defines for Mg 2a
 * Warning: System specific ones exist
 */

/*
 * Casting should be at least as efficent as anding with 0xff,
 * and won't have the size problems.  Override in sysdef.h if no
 * unsigned char type.
 */
#ifndef	CHARMASK
#define	CHARMASK(c)	((unsigned char) (c))
#endif

/*
 * These flags, and the macros below them,
 * make up a do-it-yourself set of "ctype" macros that
 * understand the DEC multinational set, and let me ask
 * a slightly different set of questions.
 */
#define _W	0x01		/* Word.			 */
#define _U	0x02		/* Upper case letter.		 */
#define _L	0x04		/* Lower case letter.		 */
#define _C	0x08		/* Control.			 */
#define _P	0x10		/* end of sentence punctuation	 */
#define	_D	0x20		/* is decimal digit		 */

#define ISWORD(c)	((cinfo[CHARMASK(c)]&_W)!=0)
#define ISCTRL(c)	((cinfo[CHARMASK(c)]&_C)!=0)
#define ISUPPER(c)	((cinfo[CHARMASK(c)]&_U)!=0)
#define ISLOWER(c)	((cinfo[CHARMASK(c)]&_L)!=0)
#define ISEOSP(c)	((cinfo[CHARMASK(c)]&_P)!=0)
#define	ISDIGIT(c)	((cinfo[CHARMASK(c)]&_D)!=0)
#define TOUPPER(c)	((c)-0x20)
#define TOLOWER(c)	((c)+0x20)

/*
 * Generally useful thing for chars
 */
#define CCHR(x)		((x) ^ 0x40)	/* CCHR('?') == DEL */

#ifndef	METACH
#define	METACH		CCHR('[')
#endif

#ifdef XKEYS
#define	K00		256
#define	K01		257
#define	K02		258
#define	K03		259
#define	K04		260
#define	K05		261
#define	K06		262
#define	K07		263
#define	K08		264
#define	K09		265
#define	K0A		266
#define	K0B		267
#define	K0C		268
#define	K0D		269
#define	K0E		270
#define	K0F		271
#define	K10		272
#define	K11		273
#define	K12		274
#define	K13		275
#define	K14		276
#define	K15		277
#define	K16		278
#define	K17		279
#define	K18		280
#define	K19		281
#define	K1A		282
#define	K1B		283
#define	K1C		284
#define	K1D		285
#define	K1E		286
#define	K1F		287
#endif