VTparse.h revision e0a2b6df
1/* $XTermId: VTparse.h,v 1.62 2013/08/19 00:39:54 tom Exp $ */
2
3/*
4 * Copyright 2002-2012,2013 by Thomas E. Dickey
5 *
6 *                         All Rights Reserved
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
23 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 *
27 * Except as contained in this notice, the name(s) of the above copyright
28 * holders shall not be used in advertising or otherwise to promote the
29 * sale, use or other dealings in this Software without prior written
30 * authorization.
31 *
32 *
33 * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
34 *
35 *                         All Rights Reserved
36 *
37 * Permission to use, copy, modify, and distribute this software and its
38 * documentation for any purpose and without fee is hereby granted,
39 * provided that the above copyright notice appear in all copies and that
40 * both that copyright notice and this permission notice appear in
41 * supporting documentation, and that the name of Digital Equipment
42 * Corporation not be used in advertising or publicity pertaining to
43 * distribution of the software without specific, written prior permission.
44 *
45 *
46 * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
47 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
48 * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
49 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
50 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
51 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
52 * SOFTWARE.
53 */
54
55#ifndef included_VTparse_h
56#define included_VTparse_h 1
57
58#include <xterm.h>
59
60#ifndef Const
61# if defined(__STDC__) && !defined(__cplusplus)
62#  define Const const
63# else
64#  define Const	/**/
65# endif
66#endif
67
68/*
69 * PARSE_T has to be large enough to handle the number of cases enumerated here.
70 */
71typedef unsigned char PARSE_T;
72
73extern Const PARSE_T ansi_table[];
74extern Const PARSE_T cigtable[];
75extern Const PARSE_T csi2_table[];
76extern Const PARSE_T csi_ex_table[];
77extern Const PARSE_T csi_quo_table[];
78extern Const PARSE_T csi_sp_table[];
79extern Const PARSE_T csi_table[];
80extern Const PARSE_T dec2_table[];
81extern Const PARSE_T dec3_table[];
82extern Const PARSE_T dec_table[];
83extern Const PARSE_T eigtable[];
84extern Const PARSE_T esc_sp_table[];
85extern Const PARSE_T esc_table[];
86extern Const PARSE_T scrtable[];
87extern Const PARSE_T scs96table[];
88extern Const PARSE_T scstable[];
89extern Const PARSE_T sos_table[];
90extern Const PARSE_T csi_dec_dollar_table[];
91
92#if OPT_DEC_LOCATOR
93extern Const PARSE_T csi_tick_table[];
94#endif /* OPT_DEC_LOCATOR */
95
96#if OPT_DEC_RECTOPS
97extern Const PARSE_T csi_dollar_table[];
98extern Const PARSE_T csi_star_table[];
99#endif /* OPT_DEC_LOCATOR */
100
101#if OPT_VT52_MODE
102extern Const PARSE_T vt52_table[];
103extern Const PARSE_T vt52_esc_table[];
104extern Const PARSE_T vt52_ignore_table[];
105#endif
106
107#if OPT_WIDE_CHARS
108extern Const PARSE_T esc_pct_table[];
109extern Const PARSE_T scs_pct_table[];
110#endif
111
112/*
113 * The following list of definitions is generated from VTparse.def using the
114 * following command line:
115 *
116 *     grep '^CASE_' VTparse.def | awk '{printf "#define %s %d\n", $1, n++}'
117 *
118 * If you need to change something, change VTparse.def and regenerate the
119 * definitions.  This would have been automatic, but since this doesn't change
120 * very often, it isn't worth the makefile hassle.
121 */
122
123#define CASE_GROUND_STATE 0
124#define CASE_IGNORE 1
125#define CASE_BELL 2
126#define CASE_BS 3
127#define CASE_CR 4
128#define CASE_ESC 5
129#define CASE_VMOT 6
130#define CASE_TAB 7
131#define CASE_SI 8
132#define CASE_SO 9
133#define CASE_SCR_STATE 10
134#define CASE_SCS0_STATE 11
135#define CASE_SCS1_STATE 12
136#define CASE_SCS2_STATE 13
137#define CASE_SCS3_STATE 14
138#define CASE_ESC_IGNORE 15
139#define CASE_ESC_DIGIT 16
140#define CASE_ESC_SEMI 17
141#define CASE_DEC_STATE 18
142#define CASE_ICH 19
143#define CASE_CUU 20
144#define CASE_CUD 21
145#define CASE_CUF 22
146#define CASE_CUB 23
147#define CASE_CUP 24
148#define CASE_ED 25
149#define CASE_EL 26
150#define CASE_IL 27
151#define CASE_DL 28
152#define CASE_DCH 29
153#define CASE_DA1 30
154#define CASE_TRACK_MOUSE 31
155#define CASE_TBC 32
156#define CASE_SET 33
157#define CASE_RST 34
158#define CASE_SGR 35
159#define CASE_CPR 36
160#define CASE_DECSTBM 37
161#define CASE_DECREQTPARM 38
162#define CASE_DECSET 39
163#define CASE_DECRST 40
164#define CASE_DECALN 41
165#define CASE_GSETS 42
166#define CASE_DECSC 43
167#define CASE_DECRC 44
168#define CASE_DECKPAM 45
169#define CASE_DECKPNM 46
170#define CASE_IND 47
171#define CASE_NEL 48
172#define CASE_HTS 49
173#define CASE_RI 50
174#define CASE_SS2 51
175#define CASE_SS3 52
176#define CASE_CSI_STATE 53
177#define CASE_OSC 54
178#define CASE_RIS 55
179#define CASE_LS2 56
180#define CASE_LS3 57
181#define CASE_LS3R 58
182#define CASE_LS2R 59
183#define CASE_LS1R 60
184#define CASE_PRINT 61
185#define CASE_XTERM_SAVE 62
186#define CASE_XTERM_RESTORE 63
187#define CASE_XTERM_TITLE 64
188#define CASE_DECID 65
189#define CASE_HP_MEM_LOCK 66
190#define CASE_HP_MEM_UNLOCK 67
191#define CASE_HP_BUGGY_LL 68
192#define CASE_HPA 69
193#define CASE_VPA 70
194#define CASE_XTERM_WINOPS 71
195#define CASE_ECH 72
196#define CASE_CHT 73
197#define CASE_CPL 74
198#define CASE_CNL 75
199#define CASE_CBT 76
200#define CASE_SU 77
201#define CASE_SD 78
202#define CASE_S7C1T 79
203#define CASE_S8C1T 80
204#define CASE_ESC_SP_STATE 81
205#define CASE_ENQ 82
206#define CASE_DECSCL 83
207#define CASE_DECSCA 84
208#define CASE_DECSED 85
209#define CASE_DECSEL 86
210#define CASE_DCS 87
211#define CASE_PM 88
212#define CASE_SOS 89
213#define CASE_ST 90
214#define CASE_APC 91
215#define CASE_EPA 92
216#define CASE_SPA 93
217#define CASE_CSI_QUOTE_STATE 94
218#define CASE_DSR 95
219#define CASE_ANSI_LEVEL_1 96
220#define CASE_ANSI_LEVEL_2 97
221#define CASE_ANSI_LEVEL_3 98
222#define CASE_MC 99
223#define CASE_DEC2_STATE 100
224#define CASE_DA2 101
225#define CASE_DEC3_STATE 102
226#define CASE_DECRPTUI 103
227#define CASE_VT52_CUP 104
228#define CASE_REP 105
229#define CASE_CSI_EX_STATE 106
230#define CASE_DECSTR 107
231#define CASE_DECDHL 108
232#define CASE_DECSWL 109
233#define CASE_DECDWL 110
234#define CASE_DEC_MC 111
235#define CASE_ESC_PERCENT 112
236#define CASE_UTF8 113
237#define CASE_CSI_TICK_STATE 114
238#define CASE_DECELR 115
239#define CASE_DECRQLP 116
240#define CASE_DECEFR 117
241#define CASE_DECSLE 118
242#define CASE_CSI_IGNORE 119
243#define CASE_VT52_IGNORE 120
244#define CASE_VT52_FINISH 121
245#define CASE_CSI_DOLLAR_STATE 122
246#define CASE_DECCRA 123
247#define CASE_DECERA 124
248#define CASE_DECFRA 125
249#define CASE_DECSERA 126
250#define CASE_DECSACE 127
251#define CASE_DECCARA 128
252#define CASE_DECRARA 129
253#define CASE_CSI_STAR_STATE 130
254#define CASE_SET_MOD_FKEYS 131
255#define CASE_SET_MOD_FKEYS0 132
256#define CASE_HIDE_POINTER 133
257#define CASE_SCS1A_STATE 134
258#define CASE_SCS2A_STATE 135
259#define CASE_SCS3A_STATE 136
260#define CASE_CSI_SPACE_STATE 137
261#define CASE_DECSCUSR 138
262#define CASE_SM_TITLE 139
263#define CASE_RM_TITLE 140
264#define CASE_DECSMBV 141
265#define CASE_DECSWBV 142
266#define CASE_DECLL 143
267#define CASE_DECRQM 144
268#define CASE_RQM 145
269#define CASE_CSI_DEC_DOLLAR_STATE 146
270#define CASE_SL 147
271#define CASE_SR 148
272#define CASE_DECDC 149
273#define CASE_DECIC 150
274#define CASE_DECBI 151
275#define CASE_DECFI 152
276#define CASE_DECRQCRA 153
277#define CASE_HPR 154
278#define CASE_VPR 155
279#define CASE_ANSI_SC 156
280#define CASE_ANSI_RC 157
281#define CASE_ESC_COLON 158
282#define CASE_SCS_PERCENT 159
283#define CASE_GSETS_PERCENT 160
284
285#endif /* included_VTparse_h */
286