1/*
2 * Copyright (c) 2003-4 Kian Duffy <myob@users.sourceforge.net>
3 * Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
4 *
5 * Distributed under the terms of the MIT License.
6 *
7 * Authors:
8 *		Kian Duffy, myob@users.sourceforge.net
9 *		Siarzhuk Zharski, zharik@gmx.li
10 */
11
12
13#include <SupportDefs.h>
14
15#include "VTparse.h"
16
17
18// #pragma mark UTF8 coding ground table
19int gUTF8GroundTable[] =
20{
21/*	NUL		SOH		STX		ETX	*/
22CASE_IGNORE,
23CASE_IGNORE,
24CASE_IGNORE,
25CASE_IGNORE,
26/*	EOT		ENQ		ACK		BEL	*/
27CASE_IGNORE,
28CASE_IGNORE,
29CASE_IGNORE,
30CASE_BELL,
31/*	BS		HT		NL		VT	*/
32CASE_BS,
33CASE_TAB,
34CASE_LF,
35CASE_LF, /* CASE_UP*/
36/*	NP		CR		SO		SI	*/
37CASE_LF, /* CASE_IGNORE*/
38CASE_CR,
39CASE_LS1,
40CASE_LS0,
41/*	DLE		DC1		DC2		DC3	*/
42CASE_IGNORE,
43CASE_IGNORE,
44CASE_IGNORE,
45CASE_IGNORE,
46/*	DC4		NAK		SYN		ETB	*/
47CASE_IGNORE,
48CASE_IGNORE,
49CASE_IGNORE,
50CASE_IGNORE,
51/*	CAN		EM		SUB		ESC	*/
52CASE_IGNORE,
53CASE_IGNORE,
54CASE_IGNORE,
55CASE_ESC,
56/*	FS		GS		RS		US	*/
57CASE_IGNORE,
58CASE_IGNORE,
59CASE_IGNORE,
60CASE_IGNORE,
61/*	SP		!		"		#	*/
62CASE_PRINT,
63CASE_PRINT,
64CASE_PRINT,
65CASE_PRINT,
66/*	$		%		&		'	*/
67CASE_PRINT,
68CASE_PRINT,
69CASE_PRINT,
70CASE_PRINT,
71/*	(		)		*		+	*/
72CASE_PRINT,
73CASE_PRINT,
74CASE_PRINT,
75CASE_PRINT,
76/*	,		-		.		/	*/
77CASE_PRINT,
78CASE_PRINT,
79CASE_PRINT,
80CASE_PRINT,
81/*	0		1		2		3	*/
82CASE_PRINT,
83CASE_PRINT,
84CASE_PRINT,
85CASE_PRINT,
86/*	4		5		6		7	*/
87CASE_PRINT,
88CASE_PRINT,
89CASE_PRINT,
90CASE_PRINT,
91/*	8		9		:		;	*/
92CASE_PRINT,
93CASE_PRINT,
94CASE_PRINT,
95CASE_PRINT,
96/*	<		=		>		?	*/
97CASE_PRINT,
98CASE_PRINT,
99CASE_PRINT,
100CASE_PRINT,
101/*	@		A		B		C	*/
102CASE_PRINT,
103CASE_PRINT,
104CASE_PRINT,
105CASE_PRINT,
106/*	D		E		F		G	*/
107CASE_PRINT,
108CASE_PRINT,
109CASE_PRINT,
110CASE_PRINT,
111/*	H		I		J		K	*/
112CASE_PRINT,
113CASE_PRINT,
114CASE_PRINT,
115CASE_PRINT,
116/*	L		M		N		O	*/
117CASE_PRINT,
118CASE_PRINT,
119CASE_PRINT,
120CASE_PRINT,
121/*	P		Q		R		S	*/
122CASE_PRINT,
123CASE_PRINT,
124CASE_PRINT,
125CASE_PRINT,
126/*	T		U		V		W	*/
127CASE_PRINT,
128CASE_PRINT,
129CASE_PRINT,
130CASE_PRINT,
131/*	X		Y		Z		[	*/
132CASE_PRINT,
133CASE_PRINT,
134CASE_PRINT,
135CASE_PRINT,
136/*	\		]		^		_	*/
137CASE_PRINT,
138CASE_PRINT,
139CASE_PRINT,
140CASE_PRINT,
141/*	`		a		b		c	*/
142CASE_PRINT,
143CASE_PRINT,
144CASE_PRINT,
145CASE_PRINT,
146/*	d		e		f		g	*/
147CASE_PRINT,
148CASE_PRINT,
149CASE_PRINT,
150CASE_PRINT,
151/*	h		i		j		k	*/
152CASE_PRINT,
153CASE_PRINT,
154CASE_PRINT,
155CASE_PRINT,
156/*	l		m		n		o	*/
157CASE_PRINT,
158CASE_PRINT,
159CASE_PRINT,
160CASE_PRINT,
161/*	p		q		r		s	*/
162CASE_PRINT,
163CASE_PRINT,
164CASE_PRINT,
165CASE_PRINT,
166/*	t		u		v		w	*/
167CASE_PRINT,
168CASE_PRINT,
169CASE_PRINT,
170CASE_PRINT,
171/*	x		y		z		{	*/
172CASE_PRINT,
173CASE_PRINT,
174CASE_PRINT,
175CASE_PRINT,
176/*	|		}		~		DEL	*/
177CASE_PRINT,
178CASE_PRINT,
179CASE_PRINT,
180CASE_IGNORE,
181/*      0x80            0x81            0x82            0x83    */
182CASE_UTF8_INSTRING,
183CASE_UTF8_INSTRING,
184CASE_UTF8_INSTRING,
185CASE_UTF8_INSTRING,
186/*      0x84            0x85            0x86            0x87    */
187CASE_UTF8_INSTRING,
188CASE_UTF8_INSTRING,
189CASE_UTF8_INSTRING,
190CASE_UTF8_INSTRING,
191/*      0x88            0x89            0x8a            0x8b    */
192CASE_UTF8_INSTRING,
193CASE_UTF8_INSTRING,
194CASE_UTF8_INSTRING,
195CASE_UTF8_INSTRING,
196/*      0x8c            0x8d            0x8e            0x8f    */
197CASE_UTF8_INSTRING,
198CASE_UTF8_INSTRING,
199CASE_UTF8_INSTRING,
200CASE_UTF8_INSTRING,
201/*      0x90            0x91            0x92            0x93    */
202CASE_UTF8_INSTRING,
203CASE_UTF8_INSTRING,
204CASE_UTF8_INSTRING,
205CASE_UTF8_INSTRING,
206/*      0x94            0x95            0x96            0x97    */
207CASE_UTF8_INSTRING,
208CASE_UTF8_INSTRING,
209CASE_UTF8_INSTRING,
210CASE_UTF8_INSTRING,
211/*      0x99            0x99            0x9a            0x9b    */
212CASE_UTF8_INSTRING,
213CASE_UTF8_INSTRING,
214CASE_UTF8_INSTRING,
215CASE_UTF8_INSTRING,
216/*      0x9c            0x9d            0x9e            0x9f    */
217CASE_UTF8_INSTRING,
218CASE_UTF8_INSTRING,
219CASE_UTF8_INSTRING,
220CASE_UTF8_INSTRING,
221/*      0xa0		0xa1		0xa2		0xa3	*/
222CASE_UTF8_INSTRING,
223CASE_UTF8_INSTRING,
224CASE_UTF8_INSTRING,
225CASE_UTF8_INSTRING,
226/*      0xa4		0xa5		0xa6		0xa7	*/
227CASE_UTF8_INSTRING,
228CASE_UTF8_INSTRING,
229CASE_UTF8_INSTRING,
230CASE_UTF8_INSTRING,
231/*      0xa8		0xa9		0xaa		0xab	*/
232CASE_UTF8_INSTRING,
233CASE_UTF8_INSTRING,
234CASE_UTF8_INSTRING,
235CASE_UTF8_INSTRING,
236/*      0xac		0xad		0xae		0xaf	*/
237CASE_UTF8_INSTRING,
238CASE_UTF8_INSTRING,
239CASE_UTF8_INSTRING,
240CASE_UTF8_INSTRING,
241/*      0xb0		0xb1		0xb2		0xb3	*/
242CASE_UTF8_INSTRING,
243CASE_UTF8_INSTRING,
244CASE_UTF8_INSTRING,
245CASE_UTF8_INSTRING,
246/*      0xb4		0xb5		0xb6		0xb7	*/
247CASE_UTF8_INSTRING,
248CASE_UTF8_INSTRING,
249CASE_UTF8_INSTRING,
250CASE_UTF8_INSTRING,
251/*      0xb8		0xb9		0xba		0xbb	*/
252CASE_UTF8_INSTRING,
253CASE_UTF8_INSTRING,
254CASE_UTF8_INSTRING,
255CASE_UTF8_INSTRING,
256/*      0xbc		0xbd		0xbe		0xbf	*/
257CASE_UTF8_INSTRING,
258CASE_UTF8_INSTRING,
259CASE_UTF8_INSTRING,
260CASE_UTF8_INSTRING,
261/*      0xc0		0xc1		0xc2		0xc3	*/
262CASE_UTF8_2BYTE,
263CASE_UTF8_2BYTE,
264CASE_UTF8_2BYTE,
265CASE_UTF8_2BYTE,
266/*      0xc4		0xc5		0xc6		0xc7	*/
267CASE_UTF8_2BYTE,
268CASE_UTF8_2BYTE,
269CASE_UTF8_2BYTE,
270CASE_UTF8_2BYTE,
271/*      0xc8		0xc9		0xca		0xcb	*/
272CASE_UTF8_2BYTE,
273CASE_UTF8_2BYTE,
274CASE_UTF8_2BYTE,
275CASE_UTF8_2BYTE,
276/*      0xcc		0xcd		0xce		0xcf	*/
277CASE_UTF8_2BYTE,
278CASE_UTF8_2BYTE,
279CASE_UTF8_2BYTE,
280CASE_UTF8_2BYTE,
281/*      0xd0		0xd1		0xd2		0xd3	*/
282CASE_UTF8_2BYTE,
283CASE_UTF8_2BYTE,
284CASE_UTF8_2BYTE,
285CASE_UTF8_2BYTE,
286/*      0xd4		0xd5		0xd6		0xd7	*/
287CASE_UTF8_2BYTE,
288CASE_UTF8_2BYTE,
289CASE_UTF8_2BYTE,
290CASE_UTF8_2BYTE,
291/*      0xd8		0xd9		0xda		0xdb	*/
292CASE_UTF8_2BYTE,
293CASE_UTF8_2BYTE,
294CASE_UTF8_2BYTE,
295CASE_UTF8_2BYTE,
296/*      0xdc		0xdd		0xde		0xdf	*/
297CASE_UTF8_2BYTE,
298CASE_UTF8_2BYTE,
299CASE_UTF8_2BYTE,
300CASE_UTF8_2BYTE,
301/*      0xe0		0xe1		0xe2		0xe3	*/
302CASE_UTF8_3BYTE,
303CASE_UTF8_3BYTE,
304CASE_UTF8_3BYTE,
305CASE_UTF8_3BYTE,
306/*      0xe4		0xe5		0xe6		0xe7	*/
307CASE_UTF8_3BYTE,
308CASE_UTF8_3BYTE,
309CASE_UTF8_3BYTE,
310CASE_UTF8_3BYTE,
311/*      0xe8		0xe9		0xea		0xeb	*/
312CASE_UTF8_3BYTE,
313CASE_UTF8_3BYTE,
314CASE_UTF8_3BYTE,
315CASE_UTF8_3BYTE,
316/*      0xec		0xed		0xee		0xef	*/
317CASE_UTF8_3BYTE,
318CASE_UTF8_3BYTE,
319CASE_UTF8_3BYTE,
320CASE_UTF8_3BYTE,
321/*      0xf0		0xf1		0xf2		0xf3	*/
322CASE_UTF8_3BYTE,
323CASE_UTF8_3BYTE,
324CASE_UTF8_3BYTE,
325CASE_UTF8_3BYTE,
326/*      0xf4		0xf5		0xf6		0xf7	*/
327CASE_UTF8_3BYTE,
328CASE_UTF8_3BYTE,
329CASE_UTF8_3BYTE,
330CASE_UTF8_3BYTE,
331/*      0xf8		0xf9		0xfa		0xfb	*/
332CASE_UTF8_3BYTE,
333CASE_UTF8_3BYTE,
334CASE_UTF8_3BYTE,
335CASE_UTF8_3BYTE,
336/*      0xfc		0xfd		0xfe		0xff	*/
337CASE_UTF8_3BYTE,
338CASE_UTF8_3BYTE,
339CASE_UTF8_3BYTE,
340CASE_UTF8_3BYTE,
341};
342
343// #pragma mark ISO8859 table
344int gISO8859GroundTable[] =
345{
346/*	NUL		SOH		STX		ETX	*/
347CASE_IGNORE,
348CASE_IGNORE,
349CASE_IGNORE,
350CASE_IGNORE,
351/*	EOT		ENQ		ACK		BEL	*/
352CASE_IGNORE,
353CASE_IGNORE,
354CASE_IGNORE,
355CASE_BELL,
356/*	BS		HT		NL		VT	*/
357CASE_BS,
358CASE_TAB,
359CASE_LF,
360CASE_LF, /*CASE_UP,*/
361/*	NP		CR		SO		SI	*/
362CASE_LF, /*CASE_IGNORE,*/
363CASE_CR,
364CASE_LS1,
365CASE_LS0,
366/*	DLE		DC1		DC2		DC3	*/
367CASE_IGNORE,
368CASE_IGNORE,
369CASE_IGNORE,
370CASE_IGNORE,
371/*	DC4		NAK		SYN		ETB	*/
372CASE_IGNORE,
373CASE_IGNORE,
374CASE_IGNORE,
375CASE_IGNORE,
376/*	CAN		EM		SUB		ESC	*/
377CASE_IGNORE,
378CASE_IGNORE,
379CASE_IGNORE,
380CASE_ESC,
381/*	FS		GS		RS		US	*/
382CASE_IGNORE,
383CASE_IGNORE,
384CASE_IGNORE,
385CASE_IGNORE,
386/*	SP		!		"		#	*/
387CASE_PRINT,
388CASE_PRINT,
389CASE_PRINT,
390CASE_PRINT,
391/*	$		%		&		'	*/
392CASE_PRINT,
393CASE_PRINT,
394CASE_PRINT,
395CASE_PRINT,
396/*	(		)		*		+	*/
397CASE_PRINT,
398CASE_PRINT,
399CASE_PRINT,
400CASE_PRINT,
401/*	,		-		.		/	*/
402CASE_PRINT,
403CASE_PRINT,
404CASE_PRINT,
405CASE_PRINT,
406/*	0		1		2		3	*/
407CASE_PRINT,
408CASE_PRINT,
409CASE_PRINT,
410CASE_PRINT,
411/*	4		5		6		7	*/
412CASE_PRINT,
413CASE_PRINT,
414CASE_PRINT,
415CASE_PRINT,
416/*	8		9		:		;	*/
417CASE_PRINT,
418CASE_PRINT,
419CASE_PRINT,
420CASE_PRINT,
421/*	<		=		>		?	*/
422CASE_PRINT,
423CASE_PRINT,
424CASE_PRINT,
425CASE_PRINT,
426/*	@		A		B		C	*/
427CASE_PRINT,
428CASE_PRINT,
429CASE_PRINT,
430CASE_PRINT,
431/*	D		E		F		G	*/
432CASE_PRINT,
433CASE_PRINT,
434CASE_PRINT,
435CASE_PRINT,
436/*	H		I		J		K	*/
437CASE_PRINT,
438CASE_PRINT,
439CASE_PRINT,
440CASE_PRINT,
441/*	L		M		N		O	*/
442CASE_PRINT,
443CASE_PRINT,
444CASE_PRINT,
445CASE_PRINT,
446/*	P		Q		R		S	*/
447CASE_PRINT,
448CASE_PRINT,
449CASE_PRINT,
450CASE_PRINT,
451/*	T		U		V		W	*/
452CASE_PRINT,
453CASE_PRINT,
454CASE_PRINT,
455CASE_PRINT,
456/*	X		Y		Z		[	*/
457CASE_PRINT,
458CASE_PRINT,
459CASE_PRINT,
460CASE_PRINT,
461/*	\		]		^		_	*/
462CASE_PRINT,
463CASE_PRINT,
464CASE_PRINT,
465CASE_PRINT,
466/*	`		a		b		c	*/
467CASE_PRINT,
468CASE_PRINT,
469CASE_PRINT,
470CASE_PRINT,
471/*	d		e		f		g	*/
472CASE_PRINT,
473CASE_PRINT,
474CASE_PRINT,
475CASE_PRINT,
476/*	h		i		j		k	*/
477CASE_PRINT,
478CASE_PRINT,
479CASE_PRINT,
480CASE_PRINT,
481/*	l		m		n		o	*/
482CASE_PRINT,
483CASE_PRINT,
484CASE_PRINT,
485CASE_PRINT,
486/*	p		q		r		s	*/
487CASE_PRINT,
488CASE_PRINT,
489CASE_PRINT,
490CASE_PRINT,
491/*	t		u		v		w	*/
492CASE_PRINT,
493CASE_PRINT,
494CASE_PRINT,
495CASE_PRINT,
496/*	x		y		z		{	*/
497CASE_PRINT,
498CASE_PRINT,
499CASE_PRINT,
500CASE_PRINT,
501/*	|		}		~		DEL	*/
502CASE_PRINT,
503CASE_PRINT,
504CASE_PRINT,
505CASE_PRINT,
506/*      0x80            0x81            0x82            0x83    */
507CASE_IGNORE,
508CASE_IGNORE,
509CASE_IGNORE,
510CASE_IGNORE,
511/*      0x84            0x85            0x86            0x87    */
512CASE_IGNORE,
513CASE_IGNORE,
514CASE_IGNORE,
515CASE_IGNORE,
516/*      0x88            0x89            0x8a            0x8b    */
517CASE_IGNORE,
518CASE_IGNORE,
519CASE_IGNORE,
520CASE_IGNORE,
521/*      0x8c            0x8d            0x8e            0x8f    */
522CASE_IGNORE,
523CASE_IGNORE,
524CASE_SS2,
525CASE_SS3,
526/*      0x90            0x91            0x92            0x93    */
527CASE_IGNORE,
528CASE_IGNORE,
529CASE_IGNORE,
530CASE_IGNORE,
531/*      0x94            0x95            0x96            0x97    */
532CASE_IGNORE,
533CASE_IGNORE,
534CASE_IGNORE,
535CASE_IGNORE,
536/*      0x99            0x99            0x9a            0x9b    */
537CASE_IGNORE,
538CASE_IGNORE,
539CASE_IGNORE,
540CASE_CSI_STATE,
541/*      0x9c            0x9d            0x9e            0x9f    */
542CASE_IGNORE,
543CASE_IGNORE,
544CASE_IGNORE,
545CASE_IGNORE,
546/*      nobreakspace    exclamdown      cent            sterling        */
547CASE_PRINT_GR,
548CASE_PRINT_GR,
549CASE_PRINT_GR,
550CASE_PRINT_GR,
551/*      currency        yen             brokenbar       section         */
552CASE_PRINT_GR,
553CASE_PRINT_GR,
554CASE_PRINT_GR,
555CASE_PRINT_GR,
556/*      diaeresis       copyright       ordfeminine     guillemotleft   */
557CASE_PRINT_GR,
558CASE_PRINT_GR,
559CASE_PRINT_GR,
560CASE_PRINT_GR,
561/*      notsign         hyphen          registered      macron          */
562CASE_PRINT_GR,
563CASE_PRINT_GR,
564CASE_PRINT_GR,
565CASE_PRINT_GR,
566/*      degree          plusminus       twosuperior     threesuperior   */
567CASE_PRINT_GR,
568CASE_PRINT_GR,
569CASE_PRINT_GR,
570CASE_PRINT_GR,
571/*      acute           mu              paragraph       periodcentered  */
572CASE_PRINT_GR,
573CASE_PRINT_GR,
574CASE_PRINT_GR,
575CASE_PRINT_GR,
576/*      cedilla         onesuperior     masculine       guillemotright  */
577CASE_PRINT_GR,
578CASE_PRINT_GR,
579CASE_PRINT_GR,
580CASE_PRINT_GR,
581/*      onequarter      onehalf         threequarters   questiondown    */
582CASE_PRINT_GR,
583CASE_PRINT_GR,
584CASE_PRINT_GR,
585CASE_PRINT_GR,
586/*      Agrave          Aacute          Acircumflex     Atilde          */
587CASE_PRINT_GR,
588CASE_PRINT_GR,
589CASE_PRINT_GR,
590CASE_PRINT_GR,
591/*      Adiaeresis      Aring           AE              Ccedilla        */
592CASE_PRINT_GR,
593CASE_PRINT_GR,
594CASE_PRINT_GR,
595CASE_PRINT_GR,
596/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
597CASE_PRINT_GR,
598CASE_PRINT_GR,
599CASE_PRINT_GR,
600CASE_PRINT_GR,
601/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
602CASE_PRINT_GR,
603CASE_PRINT_GR,
604CASE_PRINT_GR,
605CASE_PRINT_GR,
606/*      Eth             Ntilde          Ograve          Oacute          */
607CASE_PRINT_GR,
608CASE_PRINT_GR,
609CASE_PRINT_GR,
610CASE_PRINT_GR,
611/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
612CASE_PRINT_GR,
613CASE_PRINT_GR,
614CASE_PRINT_GR,
615CASE_PRINT_GR,
616/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
617CASE_PRINT_GR,
618CASE_PRINT_GR,
619CASE_PRINT_GR,
620CASE_PRINT_GR,
621/*      Udiaeresis      Yacute          Thorn           ssharp          */
622CASE_PRINT_GR,
623CASE_PRINT_GR,
624CASE_PRINT_GR,
625CASE_PRINT_GR,
626/*      agrave          aacute          acircumflex     atilde          */
627CASE_PRINT_GR,
628CASE_PRINT_GR,
629CASE_PRINT_GR,
630CASE_PRINT_GR,
631/*      adiaeresis      aring           ae              ccedilla        */
632CASE_PRINT_GR,
633CASE_PRINT_GR,
634CASE_PRINT_GR,
635CASE_PRINT_GR,
636/*      egrave          eacute          ecircumflex     ediaeresis      */
637CASE_PRINT_GR,
638CASE_PRINT_GR,
639CASE_PRINT_GR,
640CASE_PRINT_GR,
641/*      igrave          iacute          icircumflex     idiaeresis      */
642CASE_PRINT_GR,
643CASE_PRINT_GR,
644CASE_PRINT_GR,
645CASE_PRINT_GR,
646/*      eth             ntilde          ograve          oacute          */
647CASE_PRINT_GR,
648CASE_PRINT_GR,
649CASE_PRINT_GR,
650CASE_PRINT_GR,
651/*      ocircumflex     otilde          odiaeresis      division        */
652CASE_PRINT_GR,
653CASE_PRINT_GR,
654CASE_PRINT_GR,
655CASE_PRINT_GR,
656/*      oslash          ugrave          uacute          ucircumflex     */
657CASE_PRINT_GR,
658CASE_PRINT_GR,
659CASE_PRINT_GR,
660CASE_PRINT_GR,
661/*      udiaeresis      yacute          thorn           ydiaeresis      */
662CASE_PRINT_GR,
663CASE_PRINT_GR,
664CASE_PRINT_GR,
665CASE_PRINT_GR,
666};
667
668// #pragma mark WinCP table (ISO8859 + C1)
669// This one defines both C1 control and GR characters
670// as CASE_PRINT_GR to let process set of encodings
671// using this areas: cp1252, cp1251, koi-8r, cp866, gb18030
672int gWinCPGroundTable[] =
673{
674/*	NUL		SOH		STX		ETX	*/
675CASE_IGNORE,
676CASE_IGNORE,
677CASE_IGNORE,
678CASE_IGNORE,
679/*	EOT		ENQ		ACK		BEL	*/
680CASE_IGNORE,
681CASE_IGNORE,
682CASE_IGNORE,
683CASE_BELL,
684/*	BS		HT		NL		VT	*/
685CASE_BS,
686CASE_TAB,
687CASE_LF,
688CASE_LF, /*CASE_UP,*/
689/*	NP		CR		SO		SI	*/
690CASE_LF, /*CASE_IGNORE,*/
691CASE_CR,
692CASE_LS1,
693CASE_LS0,
694/*	DLE		DC1		DC2		DC3	*/
695CASE_IGNORE,
696CASE_IGNORE,
697CASE_IGNORE,
698CASE_IGNORE,
699/*	DC4		NAK		SYN		ETB	*/
700CASE_IGNORE,
701CASE_IGNORE,
702CASE_IGNORE,
703CASE_IGNORE,
704/*	CAN		EM		SUB		ESC	*/
705CASE_IGNORE,
706CASE_IGNORE,
707CASE_IGNORE,
708CASE_ESC,
709/*	FS		GS		RS		US	*/
710CASE_IGNORE,
711CASE_IGNORE,
712CASE_IGNORE,
713CASE_IGNORE,
714/*	SP		!		"		#	*/
715CASE_PRINT,
716CASE_PRINT,
717CASE_PRINT,
718CASE_PRINT,
719/*	$		%		&		'	*/
720CASE_PRINT,
721CASE_PRINT,
722CASE_PRINT,
723CASE_PRINT,
724/*	(		)		*		+	*/
725CASE_PRINT,
726CASE_PRINT,
727CASE_PRINT,
728CASE_PRINT,
729/*	,		-		.		/	*/
730CASE_PRINT,
731CASE_PRINT,
732CASE_PRINT,
733CASE_PRINT,
734/*	0		1		2		3	*/
735CASE_PRINT,
736CASE_PRINT,
737CASE_PRINT,
738CASE_PRINT,
739/*	4		5		6		7	*/
740CASE_PRINT,
741CASE_PRINT,
742CASE_PRINT,
743CASE_PRINT,
744/*	8		9		:		;	*/
745CASE_PRINT,
746CASE_PRINT,
747CASE_PRINT,
748CASE_PRINT,
749/*	<		=		>		?	*/
750CASE_PRINT,
751CASE_PRINT,
752CASE_PRINT,
753CASE_PRINT,
754/*	@		A		B		C	*/
755CASE_PRINT,
756CASE_PRINT,
757CASE_PRINT,
758CASE_PRINT,
759/*	D		E		F		G	*/
760CASE_PRINT,
761CASE_PRINT,
762CASE_PRINT,
763CASE_PRINT,
764/*	H		I		J		K	*/
765CASE_PRINT,
766CASE_PRINT,
767CASE_PRINT,
768CASE_PRINT,
769/*	L		M		N		O	*/
770CASE_PRINT,
771CASE_PRINT,
772CASE_PRINT,
773CASE_PRINT,
774/*	P		Q		R		S	*/
775CASE_PRINT,
776CASE_PRINT,
777CASE_PRINT,
778CASE_PRINT,
779/*	T		U		V		W	*/
780CASE_PRINT,
781CASE_PRINT,
782CASE_PRINT,
783CASE_PRINT,
784/*	X		Y		Z		[	*/
785CASE_PRINT,
786CASE_PRINT,
787CASE_PRINT,
788CASE_PRINT,
789/*	\		]		^		_	*/
790CASE_PRINT,
791CASE_PRINT,
792CASE_PRINT,
793CASE_PRINT,
794/*	`		a		b		c	*/
795CASE_PRINT,
796CASE_PRINT,
797CASE_PRINT,
798CASE_PRINT,
799/*	d		e		f		g	*/
800CASE_PRINT,
801CASE_PRINT,
802CASE_PRINT,
803CASE_PRINT,
804/*	h		i		j		k	*/
805CASE_PRINT,
806CASE_PRINT,
807CASE_PRINT,
808CASE_PRINT,
809/*	l		m		n		o	*/
810CASE_PRINT,
811CASE_PRINT,
812CASE_PRINT,
813CASE_PRINT,
814/*	p		q		r		s	*/
815CASE_PRINT,
816CASE_PRINT,
817CASE_PRINT,
818CASE_PRINT,
819/*	t		u		v		w	*/
820CASE_PRINT,
821CASE_PRINT,
822CASE_PRINT,
823CASE_PRINT,
824/*	x		y		z		{	*/
825CASE_PRINT,
826CASE_PRINT,
827CASE_PRINT,
828CASE_PRINT,
829/*	|		}		~		DEL	*/
830CASE_PRINT,
831CASE_PRINT,
832CASE_PRINT,
833CASE_PRINT,
834/*      0x80            0x81            0x82            0x83    */
835CASE_PRINT_GR,
836CASE_PRINT_GR,
837CASE_PRINT_GR,
838CASE_PRINT_GR,
839/*      0x84            0x85            0x86            0x87    */
840CASE_PRINT_GR,
841CASE_PRINT_GR,
842CASE_PRINT_GR,
843CASE_PRINT_GR,
844/*      0x88            0x89            0x8a            0x8b    */
845CASE_PRINT_GR,
846CASE_PRINT_GR,
847CASE_PRINT_GR,
848CASE_PRINT_GR,
849/*      0x8c            0x8d            0x8e            0x8f    */
850CASE_PRINT_GR,
851CASE_PRINT_GR,
852CASE_PRINT_GR,
853CASE_PRINT_GR,
854/*      0x90            0x91            0x92            0x93    */
855CASE_PRINT_GR,
856CASE_PRINT_GR,
857CASE_PRINT_GR,
858CASE_PRINT_GR,
859/*      0x94            0x95            0x96            0x97    */
860CASE_PRINT_GR,
861CASE_PRINT_GR,
862CASE_PRINT_GR,
863CASE_PRINT_GR,
864/*      0x99            0x99            0x9a            0x9b    */
865CASE_PRINT_GR,
866CASE_PRINT_GR,
867CASE_PRINT_GR,
868CASE_PRINT_GR,
869/*      0x9c            0x9d            0x9e            0x9f    */
870CASE_PRINT_GR,
871CASE_PRINT_GR,
872CASE_PRINT_GR,
873CASE_PRINT_GR,
874/*      nobreakspace    exclamdown      cent            sterling        */
875CASE_PRINT_GR,
876CASE_PRINT_GR,
877CASE_PRINT_GR,
878CASE_PRINT_GR,
879/*      currency        yen             brokenbar       section         */
880CASE_PRINT_GR,
881CASE_PRINT_GR,
882CASE_PRINT_GR,
883CASE_PRINT_GR,
884/*      diaeresis       copyright       ordfeminine     guillemotleft   */
885CASE_PRINT_GR,
886CASE_PRINT_GR,
887CASE_PRINT_GR,
888CASE_PRINT_GR,
889/*      notsign         hyphen          registered      macron          */
890CASE_PRINT_GR,
891CASE_PRINT_GR,
892CASE_PRINT_GR,
893CASE_PRINT_GR,
894/*      degree          plusminus       twosuperior     threesuperior   */
895CASE_PRINT_GR,
896CASE_PRINT_GR,
897CASE_PRINT_GR,
898CASE_PRINT_GR,
899/*      acute           mu              paragraph       periodcentered  */
900CASE_PRINT_GR,
901CASE_PRINT_GR,
902CASE_PRINT_GR,
903CASE_PRINT_GR,
904/*      cedilla         onesuperior     masculine       guillemotright  */
905CASE_PRINT_GR,
906CASE_PRINT_GR,
907CASE_PRINT_GR,
908CASE_PRINT_GR,
909/*      onequarter      onehalf         threequarters   questiondown    */
910CASE_PRINT_GR,
911CASE_PRINT_GR,
912CASE_PRINT_GR,
913CASE_PRINT_GR,
914/*      Agrave          Aacute          Acircumflex     Atilde          */
915CASE_PRINT_GR,
916CASE_PRINT_GR,
917CASE_PRINT_GR,
918CASE_PRINT_GR,
919/*      Adiaeresis      Aring           AE              Ccedilla        */
920CASE_PRINT_GR,
921CASE_PRINT_GR,
922CASE_PRINT_GR,
923CASE_PRINT_GR,
924/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
925CASE_PRINT_GR,
926CASE_PRINT_GR,
927CASE_PRINT_GR,
928CASE_PRINT_GR,
929/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
930CASE_PRINT_GR,
931CASE_PRINT_GR,
932CASE_PRINT_GR,
933CASE_PRINT_GR,
934/*      Eth             Ntilde          Ograve          Oacute          */
935CASE_PRINT_GR,
936CASE_PRINT_GR,
937CASE_PRINT_GR,
938CASE_PRINT_GR,
939/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
940CASE_PRINT_GR,
941CASE_PRINT_GR,
942CASE_PRINT_GR,
943CASE_PRINT_GR,
944/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
945CASE_PRINT_GR,
946CASE_PRINT_GR,
947CASE_PRINT_GR,
948CASE_PRINT_GR,
949/*      Udiaeresis      Yacute          Thorn           ssharp          */
950CASE_PRINT_GR,
951CASE_PRINT_GR,
952CASE_PRINT_GR,
953CASE_PRINT_GR,
954/*      agrave          aacute          acircumflex     atilde          */
955CASE_PRINT_GR,
956CASE_PRINT_GR,
957CASE_PRINT_GR,
958CASE_PRINT_GR,
959/*      adiaeresis      aring           ae              ccedilla        */
960CASE_PRINT_GR,
961CASE_PRINT_GR,
962CASE_PRINT_GR,
963CASE_PRINT_GR,
964/*      egrave          eacute          ecircumflex     ediaeresis      */
965CASE_PRINT_GR,
966CASE_PRINT_GR,
967CASE_PRINT_GR,
968CASE_PRINT_GR,
969/*      igrave          iacute          icircumflex     idiaeresis      */
970CASE_PRINT_GR,
971CASE_PRINT_GR,
972CASE_PRINT_GR,
973CASE_PRINT_GR,
974/*      eth             ntilde          ograve          oacute          */
975CASE_PRINT_GR,
976CASE_PRINT_GR,
977CASE_PRINT_GR,
978CASE_PRINT_GR,
979/*      ocircumflex     otilde          odiaeresis      division        */
980CASE_PRINT_GR,
981CASE_PRINT_GR,
982CASE_PRINT_GR,
983CASE_PRINT_GR,
984/*      oslash          ugrave          uacute          ucircumflex     */
985CASE_PRINT_GR,
986CASE_PRINT_GR,
987CASE_PRINT_GR,
988CASE_PRINT_GR,
989/*      udiaeresis      yacute          thorn           ydiaeresis      */
990CASE_PRINT_GR,
991CASE_PRINT_GR,
992CASE_PRINT_GR,
993CASE_PRINT_GR,
994};
995
996// #pragma mark ESC [ - CSI table
997int gCsiTable[] =
998{
999/*	NUL		SOH		STX		ETX	*/
1000CASE_IGNORE,
1001CASE_IGNORE,
1002CASE_IGNORE,
1003CASE_IGNORE,
1004/*	EOT		ENQ		ACK		BEL	*/
1005CASE_IGNORE,
1006CASE_IGNORE,
1007CASE_IGNORE,
1008CASE_BELL,
1009/*	BS		HT		NL		VT	*/
1010CASE_BS,
1011CASE_TAB,
1012CASE_ESC_IGNORE,
1013CASE_ESC_IGNORE,
1014/*	NP		CR		SO		SI	*/
1015CASE_ESC_IGNORE,
1016CASE_CR,
1017CASE_LS1,
1018CASE_LS0,
1019/*	DLE		DC1		DC2		DC3	*/
1020CASE_IGNORE,
1021CASE_IGNORE,
1022CASE_IGNORE,
1023CASE_IGNORE,
1024/*	DC4		NAK		SYN		ETB	*/
1025CASE_IGNORE,
1026CASE_IGNORE,
1027CASE_IGNORE,
1028CASE_IGNORE,
1029/*	CAN		EM		SUB		ESC	*/
1030CASE_IGNORE,
1031CASE_IGNORE,
1032CASE_IGNORE,
1033CASE_ESC,
1034/*	FS		GS		RS		US	*/
1035CASE_IGNORE,
1036CASE_IGNORE,
1037CASE_IGNORE,
1038CASE_IGNORE,
1039/*	SP		!		"		#	*/
1040CASE_CSI_SP,
1041CASE_ESC_IGNORE,
1042CASE_ESC_IGNORE,
1043CASE_ESC_IGNORE,
1044/*	$		%		&		'	*/
1045CASE_ESC_IGNORE,
1046CASE_ESC_IGNORE,
1047CASE_ESC_IGNORE,
1048CASE_ESC_IGNORE,
1049/*	(		)		*		+	*/
1050CASE_ESC_IGNORE,
1051CASE_ESC_IGNORE,
1052CASE_ESC_IGNORE,
1053CASE_ESC_IGNORE,
1054/*	,		-		.		/	*/
1055CASE_ESC_IGNORE,
1056CASE_ESC_IGNORE,
1057CASE_ESC_IGNORE,
1058CASE_ESC_IGNORE,
1059/*	0		1		2		3	*/
1060CASE_ESC_DIGIT,
1061CASE_ESC_DIGIT,
1062CASE_ESC_DIGIT,
1063CASE_ESC_DIGIT,
1064/*	4		5		6		7	*/
1065CASE_ESC_DIGIT,
1066CASE_ESC_DIGIT,
1067CASE_ESC_DIGIT,
1068CASE_ESC_DIGIT,
1069/*	8		9		:		;	*/
1070CASE_ESC_DIGIT,
1071CASE_ESC_DIGIT,
1072CASE_ESC_SEMI,
1073CASE_ESC_SEMI,
1074/*	<		=		>		?	*/
1075CASE_IGNORE,
1076CASE_IGNORE,
1077CASE_IGNORE,
1078CASE_DEC_STATE,
1079/*	@		A		B		C	*/
1080CASE_ICH,
1081CASE_CUU,
1082CASE_CUD,
1083CASE_CUF,
1084/*	D		E		F		G	*/
1085CASE_CUB,
1086CASE_CNL,
1087CASE_CPL,
1088CASE_HPA,
1089/*	H		I		J		K	*/
1090CASE_CUP,
1091CASE_CFT,
1092CASE_ED,
1093CASE_EL,
1094/*	L		M		N		O	*/
1095CASE_IL,
1096CASE_DL,
1097CASE_GROUND_STATE,
1098CASE_GROUND_STATE,
1099/*	P		Q		R		S	*/
1100CASE_DCH,
1101CASE_GROUND_STATE,
1102CASE_GROUND_STATE,
1103CASE_SU,
1104/*	T		U		V		W	*/
1105CASE_SD,
1106CASE_GROUND_STATE,
1107CASE_GROUND_STATE,
1108CASE_GROUND_STATE,
1109/*	X		Y		Z		[	*/
1110CASE_ECH,
1111CASE_GROUND_STATE,
1112CASE_CBT,
1113CASE_GROUND_STATE,
1114/*	\		]		^		_	*/
1115CASE_GROUND_STATE,
1116CASE_GROUND_STATE,
1117CASE_GROUND_STATE,
1118CASE_GROUND_STATE,
1119/*	`		a		b		c	*/
1120CASE_GROUND_STATE,
1121CASE_GROUND_STATE,
1122CASE_REP,
1123CASE_DA1,
1124/*	d		e		f		g	*/
1125CASE_VPA,
1126CASE_GROUND_STATE,
1127CASE_CUP,
1128CASE_TBC,
1129/*	h		i		j		k	*/
1130CASE_SET,
1131CASE_GROUND_STATE,
1132CASE_GROUND_STATE,
1133CASE_GROUND_STATE,
1134/*	l		m		n		o	*/
1135CASE_RST,
1136CASE_SGR,
1137CASE_CPR,
1138CASE_GROUND_STATE,
1139/*	p		q		r		s	*/
1140CASE_GROUND_STATE,
1141CASE_DECSCUSR_ETC,
1142CASE_DECSTBM,
1143CASE_GROUND_STATE,
1144/*	t		u		v		w	*/
1145CASE_GROUND_STATE,
1146CASE_GROUND_STATE,
1147CASE_GROUND_STATE,
1148CASE_GROUND_STATE,
1149/*	x		y		z		{	*/
1150CASE_DECREQTPARM,
1151CASE_GROUND_STATE,
1152CASE_GROUND_STATE,
1153CASE_GROUND_STATE,
1154/*	|		}		~		DEL	*/
1155CASE_GROUND_STATE,
1156CASE_GROUND_STATE,
1157CASE_GROUND_STATE,
1158CASE_GROUND_STATE,
1159/*      0x80            0x81            0x82            0x83    */
1160CASE_IGNORE,
1161CASE_IGNORE,
1162CASE_IGNORE,
1163CASE_IGNORE,
1164/*      0x84            0x85            0x86            0x87    */
1165CASE_IGNORE,
1166CASE_IGNORE,
1167CASE_IGNORE,
1168CASE_IGNORE,
1169/*      0x88            0x89            0x8a            0x8b    */
1170CASE_IGNORE,
1171CASE_IGNORE,
1172CASE_IGNORE,
1173CASE_IGNORE,
1174/*      0x8c            0x8d            0x8e            0x8f    */
1175CASE_IGNORE,
1176CASE_IGNORE,
1177CASE_IGNORE,
1178CASE_IGNORE,
1179/*      0x90            0x91            0x92            0x93    */
1180CASE_IGNORE,
1181CASE_IGNORE,
1182CASE_IGNORE,
1183CASE_IGNORE,
1184/*      0x94            0x95            0x96            0x97    */
1185CASE_IGNORE,
1186CASE_IGNORE,
1187CASE_IGNORE,
1188CASE_IGNORE,
1189/*      0x99            0x99            0x9a            0x9b    */
1190CASE_IGNORE,
1191CASE_IGNORE,
1192CASE_IGNORE,
1193CASE_IGNORE,
1194/*      0x9c            0x9d            0x9e            0x9f    */
1195CASE_IGNORE,
1196CASE_IGNORE,
1197CASE_IGNORE,
1198CASE_IGNORE,
1199/*      nobreakspace    exclamdown      cent            sterling        */
1200CASE_GROUND_STATE,
1201CASE_GROUND_STATE,
1202CASE_GROUND_STATE,
1203CASE_GROUND_STATE,
1204/*      currency        yen             brokenbar       section         */
1205CASE_GROUND_STATE,
1206CASE_GROUND_STATE,
1207CASE_GROUND_STATE,
1208CASE_GROUND_STATE,
1209/*      diaeresis       copyright       ordfeminine     guillemotleft   */
1210CASE_GROUND_STATE,
1211CASE_GROUND_STATE,
1212CASE_GROUND_STATE,
1213CASE_GROUND_STATE,
1214/*      notsign         hyphen          registered      macron          */
1215CASE_GROUND_STATE,
1216CASE_GROUND_STATE,
1217CASE_GROUND_STATE,
1218CASE_GROUND_STATE,
1219/*      degree          plusminus       twosuperior     threesuperior   */
1220CASE_GROUND_STATE,
1221CASE_GROUND_STATE,
1222CASE_GROUND_STATE,
1223CASE_GROUND_STATE,
1224/*      acute           mu              paragraph       periodcentered  */
1225CASE_GROUND_STATE,
1226CASE_GROUND_STATE,
1227CASE_GROUND_STATE,
1228CASE_GROUND_STATE,
1229/*      cedilla         onesuperior     masculine       guillemotright  */
1230CASE_GROUND_STATE,
1231CASE_GROUND_STATE,
1232CASE_GROUND_STATE,
1233CASE_GROUND_STATE,
1234/*      onequarter      onehalf         threequarters   questiondown    */
1235CASE_GROUND_STATE,
1236CASE_GROUND_STATE,
1237CASE_GROUND_STATE,
1238CASE_GROUND_STATE,
1239/*      Agrave          Aacute          Acircumflex     Atilde          */
1240CASE_GROUND_STATE,
1241CASE_GROUND_STATE,
1242CASE_GROUND_STATE,
1243CASE_GROUND_STATE,
1244/*      Adiaeresis      Aring           AE              Ccedilla        */
1245CASE_GROUND_STATE,
1246CASE_GROUND_STATE,
1247CASE_GROUND_STATE,
1248CASE_GROUND_STATE,
1249/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
1250CASE_GROUND_STATE,
1251CASE_GROUND_STATE,
1252CASE_GROUND_STATE,
1253CASE_GROUND_STATE,
1254/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
1255CASE_GROUND_STATE,
1256CASE_GROUND_STATE,
1257CASE_GROUND_STATE,
1258CASE_GROUND_STATE,
1259/*      Eth             Ntilde          Ograve          Oacute          */
1260CASE_GROUND_STATE,
1261CASE_GROUND_STATE,
1262CASE_GROUND_STATE,
1263CASE_GROUND_STATE,
1264/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
1265CASE_GROUND_STATE,
1266CASE_GROUND_STATE,
1267CASE_GROUND_STATE,
1268CASE_GROUND_STATE,
1269/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
1270CASE_GROUND_STATE,
1271CASE_GROUND_STATE,
1272CASE_GROUND_STATE,
1273CASE_GROUND_STATE,
1274/*      Udiaeresis      Yacute          Thorn           ssharp          */
1275CASE_GROUND_STATE,
1276CASE_GROUND_STATE,
1277CASE_GROUND_STATE,
1278CASE_GROUND_STATE,
1279/*      agrave          aacute          acircumflex     atilde          */
1280CASE_GROUND_STATE,
1281CASE_GROUND_STATE,
1282CASE_GROUND_STATE,
1283CASE_GROUND_STATE,
1284/*      adiaeresis      aring           ae              ccedilla        */
1285CASE_GROUND_STATE,
1286CASE_GROUND_STATE,
1287CASE_GROUND_STATE,
1288CASE_GROUND_STATE,
1289/*      egrave          eacute          ecircumflex     ediaeresis      */
1290CASE_GROUND_STATE,
1291CASE_GROUND_STATE,
1292CASE_GROUND_STATE,
1293CASE_GROUND_STATE,
1294/*      igrave          iacute          icircumflex     idiaeresis      */
1295CASE_GROUND_STATE,
1296CASE_GROUND_STATE,
1297CASE_GROUND_STATE,
1298CASE_GROUND_STATE,
1299/*      eth             ntilde          ograve          oacute          */
1300CASE_GROUND_STATE,
1301CASE_GROUND_STATE,
1302CASE_GROUND_STATE,
1303CASE_GROUND_STATE,
1304/*      ocircumflex     otilde          odiaeresis      division        */
1305CASE_GROUND_STATE,
1306CASE_GROUND_STATE,
1307CASE_GROUND_STATE,
1308CASE_GROUND_STATE,
1309/*      oslash          ugrave          uacute          ucircumflex     */
1310CASE_GROUND_STATE,
1311CASE_GROUND_STATE,
1312CASE_GROUND_STATE,
1313CASE_GROUND_STATE,
1314/*      udiaeresis      yacute          thorn           ydiaeresis      */
1315CASE_GROUND_STATE,
1316CASE_GROUND_STATE,
1317CASE_GROUND_STATE,
1318CASE_GROUND_STATE,
1319};
1320
1321// #pragma mark ESC [ ? - DEC table
1322int gDecTable[] =
1323{
1324/*	NUL		SOH		STX		ETX	*/
1325CASE_IGNORE,
1326CASE_IGNORE,
1327CASE_IGNORE,
1328CASE_IGNORE,
1329/*	EOT		ENQ		ACK		BEL	*/
1330CASE_IGNORE,
1331CASE_IGNORE,
1332CASE_IGNORE,
1333CASE_BELL,
1334/*	BS		HT		NL		VT	*/
1335CASE_BS,
1336CASE_TAB,
1337CASE_VMOT,
1338CASE_VMOT,
1339/*	NP		CR		SO		SI	*/
1340CASE_VMOT,
1341CASE_CR,
1342CASE_LS1,
1343CASE_LS0,
1344/*	DLE		DC1		DC2		DC3	*/
1345CASE_IGNORE,
1346CASE_IGNORE,
1347CASE_IGNORE,
1348CASE_IGNORE,
1349/*	DC4		NAK		SYN		ETB	*/
1350CASE_IGNORE,
1351CASE_IGNORE,
1352CASE_IGNORE,
1353CASE_IGNORE,
1354/*	CAN		EM		SUB		ESC	*/
1355CASE_IGNORE,
1356CASE_IGNORE,
1357CASE_IGNORE,
1358CASE_ESC,
1359/*	FS		GS		RS		US	*/
1360CASE_IGNORE,
1361CASE_IGNORE,
1362CASE_IGNORE,
1363CASE_IGNORE,
1364/*	SP		!		"		#	*/
1365CASE_ESC_IGNORE,
1366CASE_ESC_IGNORE,
1367CASE_ESC_IGNORE,
1368CASE_ESC_IGNORE,
1369/*	$		%		&		'	*/
1370CASE_ESC_IGNORE,
1371CASE_ESC_IGNORE,
1372CASE_ESC_IGNORE,
1373CASE_ESC_IGNORE,
1374/*	(		)		*		+	*/
1375CASE_ESC_IGNORE,
1376CASE_ESC_IGNORE,
1377CASE_ESC_IGNORE,
1378CASE_ESC_IGNORE,
1379/*	,		-		.		/	*/
1380CASE_ESC_IGNORE,
1381CASE_ESC_IGNORE,
1382CASE_ESC_IGNORE,
1383CASE_ESC_IGNORE,
1384/*	0		1		2		3	*/
1385CASE_ESC_DIGIT,
1386CASE_ESC_DIGIT,
1387CASE_ESC_DIGIT,
1388CASE_ESC_DIGIT,
1389/*	4		5		6		7	*/
1390CASE_ESC_DIGIT,
1391CASE_ESC_DIGIT,
1392CASE_ESC_DIGIT,
1393CASE_ESC_DIGIT,
1394/*	8		9		:		;	*/
1395CASE_ESC_DIGIT,
1396CASE_ESC_DIGIT,
1397CASE_IGNORE,
1398CASE_ESC_SEMI,
1399/*	<		=		>		?	*/
1400CASE_GROUND_STATE,
1401CASE_GROUND_STATE,
1402CASE_GROUND_STATE,
1403CASE_GROUND_STATE,
1404/*	@		A		B		C	*/
1405CASE_GROUND_STATE,
1406CASE_GROUND_STATE,
1407CASE_GROUND_STATE,
1408CASE_GROUND_STATE,
1409/*	D		E		F		G	*/
1410CASE_GROUND_STATE,
1411CASE_GROUND_STATE,
1412CASE_GROUND_STATE,
1413CASE_GROUND_STATE,
1414/*	H		I		J		K	*/
1415CASE_GROUND_STATE,
1416CASE_GROUND_STATE,
1417CASE_GROUND_STATE,
1418CASE_GROUND_STATE,
1419/*	L		M		N		O	*/
1420CASE_GROUND_STATE,
1421CASE_GROUND_STATE,
1422CASE_GROUND_STATE,
1423CASE_GROUND_STATE,
1424/*	P		Q		R		S	*/
1425CASE_GROUND_STATE,
1426CASE_GROUND_STATE,
1427CASE_GROUND_STATE,
1428CASE_GROUND_STATE,
1429/*	T		U		V		W	*/
1430CASE_GROUND_STATE,
1431CASE_GROUND_STATE,
1432CASE_GROUND_STATE,
1433CASE_GROUND_STATE,
1434/*	X		Y		Z		[	*/
1435CASE_GROUND_STATE,
1436CASE_GROUND_STATE,
1437CASE_GROUND_STATE,
1438CASE_GROUND_STATE,
1439/*	\		]		^		_	*/
1440CASE_GROUND_STATE,
1441CASE_GROUND_STATE,
1442CASE_GROUND_STATE,
1443CASE_GROUND_STATE,
1444/*	`		a		b		c	*/
1445CASE_GROUND_STATE,
1446CASE_GROUND_STATE,
1447CASE_GROUND_STATE,
1448CASE_GROUND_STATE,
1449/*	d		e		f		g	*/
1450CASE_GROUND_STATE,
1451CASE_GROUND_STATE,
1452CASE_GROUND_STATE,
1453CASE_GROUND_STATE,
1454/*	h		i		j		k	*/
1455CASE_DECSET,
1456CASE_GROUND_STATE,
1457CASE_GROUND_STATE,
1458CASE_GROUND_STATE,
1459/*	l		m		n		o	*/
1460CASE_DECRST,
1461CASE_GROUND_STATE,
1462CASE_GROUND_STATE,
1463CASE_GROUND_STATE,
1464/*	p		q		r		s	*/
1465CASE_GROUND_STATE,
1466CASE_GROUND_STATE,
1467CASE_GROUND_STATE,
1468CASE_GROUND_STATE,
1469/*	t		u		v		w	*/
1470CASE_GROUND_STATE,
1471CASE_GROUND_STATE,
1472CASE_GROUND_STATE,
1473CASE_GROUND_STATE,
1474/*	x		y		z		{	*/
1475CASE_GROUND_STATE,
1476CASE_GROUND_STATE,
1477CASE_GROUND_STATE,
1478CASE_GROUND_STATE,
1479/*	|		}		~		DEL	*/
1480CASE_GROUND_STATE,
1481CASE_GROUND_STATE,
1482CASE_GROUND_STATE,
1483CASE_GROUND_STATE,
1484/*      0x80            0x81            0x82            0x83    */
1485CASE_IGNORE,
1486CASE_IGNORE,
1487CASE_IGNORE,
1488CASE_IGNORE,
1489/*      0x84            0x85            0x86            0x87    */
1490CASE_IGNORE,
1491CASE_IGNORE,
1492CASE_IGNORE,
1493CASE_IGNORE,
1494/*      0x88            0x89            0x8a            0x8b    */
1495CASE_IGNORE,
1496CASE_IGNORE,
1497CASE_IGNORE,
1498CASE_IGNORE,
1499/*      0x8c            0x8d            0x8e            0x8f    */
1500CASE_IGNORE,
1501CASE_IGNORE,
1502CASE_IGNORE,
1503CASE_IGNORE,
1504/*      0x90            0x91            0x92            0x93    */
1505CASE_IGNORE,
1506CASE_IGNORE,
1507CASE_IGNORE,
1508CASE_IGNORE,
1509/*      0x94            0x95            0x96            0x97    */
1510CASE_IGNORE,
1511CASE_IGNORE,
1512CASE_IGNORE,
1513CASE_IGNORE,
1514/*      0x99            0x99            0x9a            0x9b    */
1515CASE_IGNORE,
1516CASE_IGNORE,
1517CASE_IGNORE,
1518CASE_IGNORE,
1519/*      0x9c            0x9d            0x9e            0x9f    */
1520CASE_IGNORE,
1521CASE_IGNORE,
1522CASE_IGNORE,
1523CASE_IGNORE,
1524/*      nobreakspace    exclamdown      cent            sterling        */
1525CASE_GROUND_STATE,
1526CASE_GROUND_STATE,
1527CASE_GROUND_STATE,
1528CASE_GROUND_STATE,
1529/*      currency        yen             brokenbar       section         */
1530CASE_GROUND_STATE,
1531CASE_GROUND_STATE,
1532CASE_GROUND_STATE,
1533CASE_GROUND_STATE,
1534/*      diaeresis       copyright       ordfeminine     guillemotleft   */
1535CASE_GROUND_STATE,
1536CASE_GROUND_STATE,
1537CASE_GROUND_STATE,
1538CASE_GROUND_STATE,
1539/*      notsign         hyphen          registered      macron          */
1540CASE_GROUND_STATE,
1541CASE_GROUND_STATE,
1542CASE_GROUND_STATE,
1543CASE_GROUND_STATE,
1544/*      degree          plusminus       twosuperior     threesuperior   */
1545CASE_GROUND_STATE,
1546CASE_GROUND_STATE,
1547CASE_GROUND_STATE,
1548CASE_GROUND_STATE,
1549/*      acute           mu              paragraph       periodcentered  */
1550CASE_GROUND_STATE,
1551CASE_GROUND_STATE,
1552CASE_GROUND_STATE,
1553CASE_GROUND_STATE,
1554/*      cedilla         onesuperior     masculine       guillemotright  */
1555CASE_GROUND_STATE,
1556CASE_GROUND_STATE,
1557CASE_GROUND_STATE,
1558CASE_GROUND_STATE,
1559/*      onequarter      onehalf         threequarters   questiondown    */
1560CASE_GROUND_STATE,
1561CASE_GROUND_STATE,
1562CASE_GROUND_STATE,
1563CASE_GROUND_STATE,
1564/*      Agrave          Aacute          Acircumflex     Atilde          */
1565CASE_GROUND_STATE,
1566CASE_GROUND_STATE,
1567CASE_GROUND_STATE,
1568CASE_GROUND_STATE,
1569/*      Adiaeresis      Aring           AE              Ccedilla        */
1570CASE_GROUND_STATE,
1571CASE_GROUND_STATE,
1572CASE_GROUND_STATE,
1573CASE_GROUND_STATE,
1574/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
1575CASE_GROUND_STATE,
1576CASE_GROUND_STATE,
1577CASE_GROUND_STATE,
1578CASE_GROUND_STATE,
1579/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
1580CASE_GROUND_STATE,
1581CASE_GROUND_STATE,
1582CASE_GROUND_STATE,
1583CASE_GROUND_STATE,
1584/*      Eth             Ntilde          Ograve          Oacute          */
1585CASE_GROUND_STATE,
1586CASE_GROUND_STATE,
1587CASE_GROUND_STATE,
1588CASE_GROUND_STATE,
1589/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
1590CASE_GROUND_STATE,
1591CASE_GROUND_STATE,
1592CASE_GROUND_STATE,
1593CASE_GROUND_STATE,
1594/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
1595CASE_GROUND_STATE,
1596CASE_GROUND_STATE,
1597CASE_GROUND_STATE,
1598CASE_GROUND_STATE,
1599/*      Udiaeresis      Yacute          Thorn           ssharp          */
1600CASE_GROUND_STATE,
1601CASE_GROUND_STATE,
1602CASE_GROUND_STATE,
1603CASE_GROUND_STATE,
1604/*      agrave          aacute          acircumflex     atilde          */
1605CASE_GROUND_STATE,
1606CASE_GROUND_STATE,
1607CASE_GROUND_STATE,
1608CASE_GROUND_STATE,
1609/*      adiaeresis      aring           ae              ccedilla        */
1610CASE_GROUND_STATE,
1611CASE_GROUND_STATE,
1612CASE_GROUND_STATE,
1613CASE_GROUND_STATE,
1614/*      egrave          eacute          ecircumflex     ediaeresis      */
1615CASE_GROUND_STATE,
1616CASE_GROUND_STATE,
1617CASE_GROUND_STATE,
1618CASE_GROUND_STATE,
1619/*      igrave          iacute          icircumflex     idiaeresis      */
1620CASE_GROUND_STATE,
1621CASE_GROUND_STATE,
1622CASE_GROUND_STATE,
1623CASE_GROUND_STATE,
1624/*      eth             ntilde          ograve          oacute          */
1625CASE_GROUND_STATE,
1626CASE_GROUND_STATE,
1627CASE_GROUND_STATE,
1628CASE_GROUND_STATE,
1629/*      ocircumflex     otilde          odiaeresis      division        */
1630CASE_GROUND_STATE,
1631CASE_GROUND_STATE,
1632CASE_GROUND_STATE,
1633CASE_GROUND_STATE,
1634/*      oslash          ugrave          uacute          ucircumflex     */
1635CASE_GROUND_STATE,
1636CASE_GROUND_STATE,
1637CASE_GROUND_STATE,
1638CASE_GROUND_STATE,
1639/*      udiaeresis      yacute          thorn           ydiaeresis      */
1640CASE_GROUND_STATE,
1641CASE_GROUND_STATE,
1642CASE_GROUND_STATE,
1643CASE_GROUND_STATE,
1644};
1645
1646// #pragma mark CASE_ESC_IGNORE table
1647int gEscIgnoreTable[] =
1648{
1649/*	NUL		SOH		STX		ETX	*/
1650CASE_IGNORE,
1651CASE_IGNORE,
1652CASE_IGNORE,
1653CASE_IGNORE,
1654/*	EOT		ENQ		ACK		BEL	*/
1655CASE_IGNORE,
1656CASE_IGNORE,
1657CASE_IGNORE,
1658CASE_BELL,
1659/*	BS		HT		NL		VT	*/
1660CASE_BS,
1661CASE_TAB,
1662CASE_VMOT,
1663CASE_VMOT,
1664/*	NP		CR		SO		SI	*/
1665CASE_VMOT,
1666CASE_CR,
1667CASE_LS1,
1668CASE_LS0,
1669/*	DLE		DC1		DC2		DC3	*/
1670CASE_IGNORE,
1671CASE_IGNORE,
1672CASE_IGNORE,
1673CASE_IGNORE,
1674/*	DC4		NAK		SYN		ETB	*/
1675CASE_IGNORE,
1676CASE_IGNORE,
1677CASE_IGNORE,
1678CASE_IGNORE,
1679/*	CAN		EM		SUB		ESC	*/
1680CASE_IGNORE,
1681CASE_IGNORE,
1682CASE_IGNORE,
1683CASE_ESC,
1684/*	FS		GS		RS		US	*/
1685CASE_IGNORE,
1686CASE_IGNORE,
1687CASE_IGNORE,
1688CASE_IGNORE,
1689/*	SP		!		"		#	*/
1690CASE_IGNORE,
1691CASE_IGNORE,
1692CASE_IGNORE,
1693CASE_IGNORE,
1694/*	$		%		&		'	*/
1695CASE_IGNORE,
1696CASE_IGNORE,
1697CASE_IGNORE,
1698CASE_IGNORE,
1699/*	(		)		*		+	*/
1700CASE_IGNORE,
1701CASE_IGNORE,
1702CASE_IGNORE,
1703CASE_IGNORE,
1704/*	,
1705	-		.		/	*/
1706CASE_IGNORE,
1707CASE_IGNORE,
1708CASE_IGNORE,
1709CASE_IGNORE,
1710/*	0		1		2		3	*/
1711CASE_GROUND_STATE,
1712CASE_GROUND_STATE,
1713CASE_GROUND_STATE,
1714CASE_GROUND_STATE,
1715/*	4		5		6		7	*/
1716CASE_GROUND_STATE,
1717CASE_GROUND_STATE,
1718CASE_GROUND_STATE,
1719CASE_GROUND_STATE,
1720/*	8		9		:		;	*/
1721CASE_GROUND_STATE,
1722CASE_GROUND_STATE,
1723CASE_GROUND_STATE,
1724CASE_GROUND_STATE,
1725/*	<		=		>		?	*/
1726CASE_GROUND_STATE,
1727CASE_GROUND_STATE,
1728CASE_GROUND_STATE,
1729CASE_GROUND_STATE,
1730/*	@		A		B		C	*/
1731CASE_GROUND_STATE,
1732CASE_GROUND_STATE,
1733CASE_GROUND_STATE,
1734CASE_GROUND_STATE,
1735/*	D		E		F		G	*/
1736CASE_GROUND_STATE,
1737CASE_GROUND_STATE,
1738CASE_GROUND_STATE,
1739CASE_GROUND_STATE,
1740/*	H		I		J		K	*/
1741CASE_GROUND_STATE,
1742CASE_GROUND_STATE,
1743CASE_GROUND_STATE,
1744CASE_GROUND_STATE,
1745/*	L		M		N		O	*/
1746CASE_GROUND_STATE,
1747CASE_GROUND_STATE,
1748CASE_GROUND_STATE,
1749CASE_GROUND_STATE,
1750/*	P		Q		R		S	*/
1751CASE_GROUND_STATE,
1752CASE_GROUND_STATE,
1753CASE_GROUND_STATE,
1754CASE_GROUND_STATE,
1755/*	T		U		V		W	*/
1756CASE_GROUND_STATE,
1757CASE_GROUND_STATE,
1758CASE_GROUND_STATE,
1759CASE_GROUND_STATE,
1760/*	X		Y		Z		[	*/
1761CASE_GROUND_STATE,
1762CASE_GROUND_STATE,
1763CASE_GROUND_STATE,
1764CASE_GROUND_STATE,
1765/*	\		]		^		_	*/
1766CASE_GROUND_STATE,
1767CASE_GROUND_STATE,
1768CASE_GROUND_STATE,
1769CASE_GROUND_STATE,
1770/*	`		a		b		c	*/
1771CASE_GROUND_STATE,
1772CASE_GROUND_STATE,
1773CASE_GROUND_STATE,
1774CASE_GROUND_STATE,
1775/*	d		e		f		g	*/
1776CASE_GROUND_STATE,
1777CASE_GROUND_STATE,
1778CASE_GROUND_STATE,
1779CASE_GROUND_STATE,
1780/*	h		i		j		k	*/
1781CASE_GROUND_STATE,
1782CASE_GROUND_STATE,
1783CASE_GROUND_STATE,
1784CASE_GROUND_STATE,
1785/*	l		m		n		o	*/
1786CASE_GROUND_STATE,
1787CASE_GROUND_STATE,
1788CASE_GROUND_STATE,
1789CASE_GROUND_STATE,
1790/*	p		q		r		s	*/
1791CASE_GROUND_STATE,
1792CASE_GROUND_STATE,
1793CASE_GROUND_STATE,
1794CASE_GROUND_STATE,
1795/*	t		u		v		w	*/
1796CASE_GROUND_STATE,
1797CASE_GROUND_STATE,
1798CASE_GROUND_STATE,
1799CASE_GROUND_STATE,
1800/*	x		y		z		{	*/
1801CASE_GROUND_STATE,
1802CASE_GROUND_STATE,
1803CASE_GROUND_STATE,
1804CASE_GROUND_STATE,
1805/*	|		}		~		DEL	*/
1806CASE_GROUND_STATE,
1807CASE_GROUND_STATE,
1808CASE_GROUND_STATE,
1809CASE_GROUND_STATE,
1810/*      0x80            0x81            0x82            0x83    */
1811CASE_IGNORE,
1812CASE_IGNORE,
1813CASE_IGNORE,
1814CASE_IGNORE,
1815/*      0x84            0x85            0x86            0x87    */
1816CASE_IGNORE,
1817CASE_IGNORE,
1818CASE_IGNORE,
1819CASE_IGNORE,
1820/*      0x88            0x89            0x8a            0x8b    */
1821CASE_IGNORE,
1822CASE_IGNORE,
1823CASE_IGNORE,
1824CASE_IGNORE,
1825/*      0x8c            0x8d            0x8e            0x8f    */
1826CASE_IGNORE,
1827CASE_IGNORE,
1828CASE_IGNORE,
1829CASE_IGNORE,
1830/*      0x90            0x91            0x92            0x93    */
1831CASE_IGNORE,
1832CASE_IGNORE,
1833CASE_IGNORE,
1834CASE_IGNORE,
1835/*      0x94            0x95            0x96            0x97    */
1836CASE_IGNORE,
1837CASE_IGNORE,
1838CASE_IGNORE,
1839CASE_IGNORE,
1840/*      0x99            0x99            0x9a            0x9b    */
1841CASE_IGNORE,
1842CASE_IGNORE,
1843CASE_IGNORE,
1844CASE_IGNORE,
1845/*      0x9c            0x9d            0x9e            0x9f    */
1846CASE_IGNORE,
1847CASE_IGNORE,
1848CASE_IGNORE,
1849CASE_IGNORE,
1850/*      nobreakspace    exclamdown      cent            sterling        */
1851CASE_GROUND_STATE,
1852CASE_GROUND_STATE,
1853CASE_GROUND_STATE,
1854CASE_GROUND_STATE,
1855/*      currency        yen             brokenbar       section         */
1856CASE_GROUND_STATE,
1857CASE_GROUND_STATE,
1858CASE_GROUND_STATE,
1859CASE_GROUND_STATE,
1860/*      diaeresis       copyright       ordfeminine     guillemotleft   */
1861CASE_GROUND_STATE,
1862CASE_GROUND_STATE,
1863CASE_GROUND_STATE,
1864CASE_GROUND_STATE,
1865/*      notsign         hyphen          registered      macron          */
1866CASE_GROUND_STATE,
1867CASE_GROUND_STATE,
1868CASE_GROUND_STATE,
1869CASE_GROUND_STATE,
1870/*      degree          plusminus       twosuperior     threesuperior   */
1871CASE_GROUND_STATE,
1872CASE_GROUND_STATE,
1873CASE_GROUND_STATE,
1874CASE_GROUND_STATE,
1875/*      acute           mu              paragraph       periodcentered  */
1876CASE_GROUND_STATE,
1877CASE_GROUND_STATE,
1878CASE_GROUND_STATE,
1879CASE_GROUND_STATE,
1880/*      cedilla         onesuperior     masculine       guillemotright  */
1881CASE_GROUND_STATE,
1882CASE_GROUND_STATE,
1883CASE_GROUND_STATE,
1884CASE_GROUND_STATE,
1885/*      onequarter      onehalf         threequarters   questiondown    */
1886CASE_GROUND_STATE,
1887CASE_GROUND_STATE,
1888CASE_GROUND_STATE,
1889CASE_GROUND_STATE,
1890/*      Agrave          Aacute          Acircumflex     Atilde          */
1891CASE_GROUND_STATE,
1892CASE_GROUND_STATE,
1893CASE_GROUND_STATE,
1894CASE_GROUND_STATE,
1895/*      Adiaeresis      Aring           AE              Ccedilla        */
1896CASE_GROUND_STATE,
1897CASE_GROUND_STATE,
1898CASE_GROUND_STATE,
1899CASE_GROUND_STATE,
1900/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
1901CASE_GROUND_STATE,
1902CASE_GROUND_STATE,
1903CASE_GROUND_STATE,
1904CASE_GROUND_STATE,
1905/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
1906CASE_GROUND_STATE,
1907CASE_GROUND_STATE,
1908CASE_GROUND_STATE,
1909CASE_GROUND_STATE,
1910/*      Eth             Ntilde          Ograve          Oacute          */
1911CASE_GROUND_STATE,
1912CASE_GROUND_STATE,
1913CASE_GROUND_STATE,
1914CASE_GROUND_STATE,
1915/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
1916CASE_GROUND_STATE,
1917CASE_GROUND_STATE,
1918CASE_GROUND_STATE,
1919CASE_GROUND_STATE,
1920/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
1921CASE_GROUND_STATE,
1922CASE_GROUND_STATE,
1923CASE_GROUND_STATE,
1924CASE_GROUND_STATE,
1925/*      Udiaeresis      Yacute          Thorn           ssharp          */
1926CASE_GROUND_STATE,
1927CASE_GROUND_STATE,
1928CASE_GROUND_STATE,
1929CASE_GROUND_STATE,
1930/*      agrave          aacute          acircumflex     atilde          */
1931CASE_GROUND_STATE,
1932CASE_GROUND_STATE,
1933CASE_GROUND_STATE,
1934CASE_GROUND_STATE,
1935/*      adiaeresis      aring           ae              ccedilla        */
1936CASE_GROUND_STATE,
1937CASE_GROUND_STATE,
1938CASE_GROUND_STATE,
1939CASE_GROUND_STATE,
1940/*      egrave          eacute          ecircumflex     ediaeresis      */
1941CASE_GROUND_STATE,
1942CASE_GROUND_STATE,
1943CASE_GROUND_STATE,
1944CASE_GROUND_STATE,
1945/*      igrave          iacute          icircumflex     idiaeresis      */
1946CASE_GROUND_STATE,
1947CASE_GROUND_STATE,
1948CASE_GROUND_STATE,
1949CASE_GROUND_STATE,
1950/*      eth             ntilde          ograve          oacute          */
1951CASE_GROUND_STATE,
1952CASE_GROUND_STATE,
1953CASE_GROUND_STATE,
1954CASE_GROUND_STATE,
1955/*      ocircumflex     otilde          odiaeresis      division        */
1956CASE_GROUND_STATE,
1957CASE_GROUND_STATE,
1958CASE_GROUND_STATE,
1959CASE_GROUND_STATE,
1960/*      oslash          ugrave          uacute          ucircumflex     */
1961CASE_GROUND_STATE,
1962CASE_GROUND_STATE,
1963CASE_GROUND_STATE,
1964CASE_GROUND_STATE,
1965/*      udiaeresis      yacute          thorn           ydiaeresis      */
1966CASE_GROUND_STATE,
1967CASE_GROUND_STATE,
1968CASE_GROUND_STATE,
1969CASE_GROUND_STATE,
1970};
1971
1972// #pragma mark ESC table
1973int gEscTable[] =
1974{
1975/*	NUL		SOH		STX		ETX	*/
1976CASE_IGNORE,
1977CASE_IGNORE,
1978CASE_IGNORE,
1979CASE_IGNORE,
1980/*	EOT		ENQ		ACK		BEL	*/
1981CASE_IGNORE,
1982CASE_IGNORE,
1983CASE_IGNORE,
1984CASE_BELL,
1985/*	BS		HT		NL		VT	*/
1986CASE_BS,
1987CASE_TAB,
1988CASE_LF,
1989CASE_LF, /*CASE_UP,*/
1990/*	NP		CR		SO		SI	*/
1991CASE_LF, /*CASE_IGNORE,*/
1992CASE_CR,
1993CASE_LS1,
1994CASE_LS0,
1995/*	DLE		DC1		DC2		DC3	*/
1996CASE_IGNORE,
1997CASE_IGNORE,
1998CASE_IGNORE,
1999CASE_IGNORE,
2000/*	DC4		NAK		SYN		ETB	*/
2001CASE_IGNORE,
2002CASE_IGNORE,
2003CASE_IGNORE,
2004CASE_IGNORE,
2005/*	CAN		EM		SUB		ESC	*/
2006CASE_IGNORE,
2007CASE_IGNORE,
2008CASE_IGNORE,
2009CASE_ESC,
2010/*	FS		GS		RS		US	*/
2011CASE_IGNORE,
2012CASE_IGNORE,
2013CASE_IGNORE,
2014CASE_IGNORE,
2015/*	SP		!		"		#	*/
2016CASE_ESC_IGNORE,
2017CASE_ESC_IGNORE,
2018CASE_ESC_IGNORE,
2019CASE_SCR_STATE,
2020/*	$		%		&		'	*/
2021CASE_ESC_IGNORE,
2022CASE_ESC_IGNORE,
2023CASE_ESC_IGNORE,
2024CASE_ESC_IGNORE,
2025/*	(		)		*		+	*/
2026CASE_SCS_STATE,
2027CASE_SCS_STATE,
2028CASE_SCS_STATE,
2029CASE_SCS_STATE,
2030/*	,		-		.		/	*/
2031CASE_SCS_STATE,	/* not defined in ISO2022 but used in Mule */
2032CASE_SCS_STATE,
2033CASE_SCS_STATE,
2034CASE_SCS_STATE,
2035/*	0		1		2		3	*/
2036CASE_GROUND_STATE,
2037CASE_GROUND_STATE,
2038CASE_GROUND_STATE,
2039CASE_GROUND_STATE,
2040/*	4		5		6		7	*/
2041CASE_GROUND_STATE,
2042CASE_GROUND_STATE,
2043CASE_GROUND_STATE,
2044CASE_DECSC,
2045/*	8		9		:		;	*/
2046CASE_DECRC,
2047CASE_GROUND_STATE,
2048CASE_GROUND_STATE,
2049CASE_GROUND_STATE,
2050/*	<		=		>		?	*/
2051CASE_GROUND_STATE,
2052CASE_GROUND_STATE,
2053CASE_GROUND_STATE,
2054CASE_GROUND_STATE,
2055/*	@		A		B		C	*/
2056CASE_GROUND_STATE,
2057CASE_GROUND_STATE,
2058CASE_GROUND_STATE,
2059CASE_GROUND_STATE,
2060/*	D		E		F		G	*/
2061CASE_INDEX,
2062CASE_NEXT_LINE,
2063CASE_GROUND_STATE,
2064CASE_GROUND_STATE,
2065/*	H		I		J		K	*/
2066CASE_HTS,
2067CASE_GROUND_STATE,
2068CASE_GROUND_STATE,
2069CASE_GROUND_STATE,
2070/*	L		M		N		O	*/
2071CASE_GROUND_STATE,
2072CASE_RI,
2073CASE_SS2,
2074CASE_SS3,
2075/*	P		Q		R		S	*/
2076CASE_IGNORE_STATE,
2077CASE_GROUND_STATE,
2078CASE_GROUND_STATE,
2079CASE_GROUND_STATE,
2080/*	T		U		V		W	*/
2081CASE_XTERM_TITLE,
2082CASE_GROUND_STATE,
2083CASE_GROUND_STATE,
2084CASE_GROUND_STATE,
2085/*	X		Y		Z		[	*/
2086CASE_GROUND_STATE,
2087CASE_GROUND_STATE,
2088CASE_DA1,
2089CASE_CSI_STATE,
2090/*	\		]		^		_	*/
2091CASE_GROUND_STATE,
2092CASE_OSC,
2093CASE_IGNORE_STATE,
2094CASE_IGNORE_STATE,
2095/*	`		a		b		c	*/
2096CASE_GROUND_STATE,
2097CASE_GROUND_STATE,
2098CASE_GROUND_STATE,
2099CASE_RIS,
2100/*	d		e		f		g	*/
2101CASE_GROUND_STATE,
2102CASE_GROUND_STATE,
2103CASE_GROUND_STATE,
2104CASE_GROUND_STATE,
2105/*	h		i		j		k	*/
2106CASE_GROUND_STATE,
2107CASE_GROUND_STATE,
2108CASE_GROUND_STATE,
2109CASE_GROUND_STATE,
2110/*	l		m		n		o	*/
2111CASE_GROUND_STATE,
2112CASE_GROUND_STATE,
2113CASE_LS2,
2114CASE_LS3,
2115/*	p		q		r		s	*/
2116CASE_GROUND_STATE,
2117CASE_GROUND_STATE,
2118CASE_GROUND_STATE,
2119CASE_GROUND_STATE,
2120/*	t		u		v		w	*/
2121CASE_GROUND_STATE,
2122CASE_GROUND_STATE,
2123CASE_GROUND_STATE,
2124CASE_GROUND_STATE,
2125/*	x		y		z		{	*/
2126CASE_GROUND_STATE,
2127CASE_GROUND_STATE,
2128CASE_GROUND_STATE,
2129CASE_GROUND_STATE,
2130/*	|		}		~		DEL	*/
2131CASE_LS3R,
2132CASE_LS2R,
2133CASE_LS1R,
2134CASE_GROUND_STATE,
2135/*      0x80            0x81            0x82            0x83    */
2136CASE_IGNORE,
2137CASE_IGNORE,
2138CASE_IGNORE,
2139CASE_IGNORE,
2140/*      0x84            0x85            0x86            0x87    */
2141CASE_IGNORE,
2142CASE_IGNORE,
2143CASE_IGNORE,
2144CASE_IGNORE,
2145/*      0x88            0x89            0x8a            0x8b    */
2146CASE_IGNORE,
2147CASE_IGNORE,
2148CASE_IGNORE,
2149CASE_IGNORE,
2150/*      0x8c            0x8d            0x8e            0x8f    */
2151CASE_IGNORE,
2152CASE_IGNORE,
2153CASE_IGNORE,
2154CASE_IGNORE,
2155/*      0x90            0x91            0x92            0x93    */
2156CASE_IGNORE,
2157CASE_IGNORE,
2158CASE_IGNORE,
2159CASE_IGNORE,
2160/*      0x94            0x95            0x96            0x97    */
2161CASE_IGNORE,
2162CASE_IGNORE,
2163CASE_IGNORE,
2164CASE_IGNORE,
2165/*      0x99            0x99            0x9a            0x9b    */
2166CASE_IGNORE,
2167CASE_IGNORE,
2168CASE_IGNORE,
2169CASE_IGNORE,
2170/*      0x9c            0x9d            0x9e            0x9f    */
2171CASE_IGNORE,
2172CASE_IGNORE,
2173CASE_IGNORE,
2174CASE_IGNORE,
2175/*      nobreakspace    exclamdown      cent            sterling        */
2176CASE_GROUND_STATE,
2177CASE_GROUND_STATE,
2178CASE_GROUND_STATE,
2179CASE_GROUND_STATE,
2180/*      currency        yen             brokenbar       section         */
2181CASE_GROUND_STATE,
2182CASE_GROUND_STATE,
2183CASE_GROUND_STATE,
2184CASE_GROUND_STATE,
2185/*      diaeresis       copyright       ordfeminine     guillemotleft   */
2186CASE_GROUND_STATE,
2187CASE_GROUND_STATE,
2188CASE_GROUND_STATE,
2189CASE_GROUND_STATE,
2190/*      notsign         hyphen          registered      macron          */
2191CASE_GROUND_STATE,
2192CASE_GROUND_STATE,
2193CASE_GROUND_STATE,
2194CASE_GROUND_STATE,
2195/*      degree          plusminus       twosuperior     threesuperior   */
2196CASE_GROUND_STATE,
2197CASE_GROUND_STATE,
2198CASE_GROUND_STATE,
2199CASE_GROUND_STATE,
2200/*      acute           mu              paragraph       periodcentered  */
2201CASE_GROUND_STATE,
2202CASE_GROUND_STATE,
2203CASE_GROUND_STATE,
2204CASE_GROUND_STATE,
2205/*      cedilla         onesuperior     masculine       guillemotright  */
2206CASE_GROUND_STATE,
2207CASE_GROUND_STATE,
2208CASE_GROUND_STATE,
2209CASE_GROUND_STATE,
2210/*      onequarter      onehalf         threequarters   questiondown    */
2211CASE_GROUND_STATE,
2212CASE_GROUND_STATE,
2213CASE_GROUND_STATE,
2214CASE_GROUND_STATE,
2215/*      Agrave          Aacute          Acircumflex     Atilde          */
2216CASE_GROUND_STATE,
2217CASE_GROUND_STATE,
2218CASE_GROUND_STATE,
2219CASE_GROUND_STATE,
2220/*      Adiaeresis      Aring           AE              Ccedilla        */
2221CASE_GROUND_STATE,
2222CASE_GROUND_STATE,
2223CASE_GROUND_STATE,
2224CASE_GROUND_STATE,
2225/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
2226CASE_GROUND_STATE,
2227CASE_GROUND_STATE,
2228CASE_GROUND_STATE,
2229CASE_GROUND_STATE,
2230/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
2231CASE_GROUND_STATE,
2232CASE_GROUND_STATE,
2233CASE_GROUND_STATE,
2234CASE_GROUND_STATE,
2235/*      Eth             Ntilde          Ograve          Oacute          */
2236CASE_GROUND_STATE,
2237CASE_GROUND_STATE,
2238CASE_GROUND_STATE,
2239CASE_GROUND_STATE,
2240/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
2241CASE_GROUND_STATE,
2242CASE_GROUND_STATE,
2243CASE_GROUND_STATE,
2244CASE_GROUND_STATE,
2245/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
2246CASE_GROUND_STATE,
2247CASE_GROUND_STATE,
2248CASE_GROUND_STATE,
2249CASE_GROUND_STATE,
2250/*      Udiaeresis      Yacute          Thorn           ssharp          */
2251CASE_GROUND_STATE,
2252CASE_GROUND_STATE,
2253CASE_GROUND_STATE,
2254CASE_GROUND_STATE,
2255/*      agrave          aacute          acircumflex     atilde          */
2256CASE_GROUND_STATE,
2257CASE_GROUND_STATE,
2258CASE_GROUND_STATE,
2259CASE_GROUND_STATE,
2260/*      adiaeresis      aring           ae              ccedilla        */
2261CASE_GROUND_STATE,
2262CASE_GROUND_STATE,
2263CASE_GROUND_STATE,
2264CASE_GROUND_STATE,
2265/*      egrave          eacute          ecircumflex     ediaeresis      */
2266CASE_GROUND_STATE,
2267CASE_GROUND_STATE,
2268CASE_GROUND_STATE,
2269CASE_GROUND_STATE,
2270/*      igrave          iacute          icircumflex     idiaeresis      */
2271CASE_GROUND_STATE,
2272CASE_GROUND_STATE,
2273CASE_GROUND_STATE,
2274CASE_GROUND_STATE,
2275/*      eth             ntilde          ograve          oacute          */
2276CASE_GROUND_STATE,
2277CASE_GROUND_STATE,
2278CASE_GROUND_STATE,
2279CASE_GROUND_STATE,
2280/*      ocircumflex     otilde          odiaeresis      division        */
2281CASE_GROUND_STATE,
2282CASE_GROUND_STATE,
2283CASE_GROUND_STATE,
2284CASE_GROUND_STATE,
2285/*      oslash          ugrave          uacute          ucircumflex     */
2286CASE_GROUND_STATE,
2287CASE_GROUND_STATE,
2288CASE_GROUND_STATE,
2289CASE_GROUND_STATE,
2290/*      udiaeresis      yacute          thorn           ydiaeresis      */
2291CASE_GROUND_STATE,
2292CASE_GROUND_STATE,
2293CASE_GROUND_STATE,
2294CASE_GROUND_STATE,
2295};
2296
2297// #pragma mark CASE_IGNORE_ESC table
2298int gIesTable[] =
2299{
2300/*	NUL		SOH		STX		ETX	*/
2301CASE_IGNORE_STATE,
2302CASE_IGNORE_STATE,
2303CASE_IGNORE_STATE,
2304CASE_IGNORE_STATE,
2305/*	EOT		ENQ		ACK		BEL	*/
2306CASE_IGNORE_STATE,
2307CASE_IGNORE_STATE,
2308CASE_IGNORE_STATE,
2309CASE_IGNORE_STATE,
2310/*	BS		HT		NL		VT	*/
2311CASE_IGNORE_STATE,
2312CASE_IGNORE_STATE,
2313CASE_IGNORE_STATE,
2314CASE_IGNORE_STATE,
2315/*	NP		CR		SO		SI	*/
2316CASE_IGNORE_STATE,
2317CASE_IGNORE_STATE,
2318CASE_IGNORE_STATE,
2319CASE_IGNORE_STATE,
2320/*	DLE		DC1		DC2		DC3	*/
2321CASE_IGNORE_STATE,
2322CASE_IGNORE_STATE,
2323CASE_IGNORE_STATE,
2324CASE_IGNORE_STATE,
2325/*	DC4		NAK		SYN		ETB	*/
2326CASE_IGNORE_STATE,
2327CASE_IGNORE_STATE,
2328CASE_IGNORE_STATE,
2329CASE_IGNORE_STATE,
2330/*	CAN		EM		SUB		ESC	*/
2331CASE_IGNORE_STATE,
2332CASE_IGNORE_STATE,
2333CASE_IGNORE_STATE,
2334CASE_IGNORE_STATE,
2335/*	FS		GS		RS		US	*/
2336CASE_IGNORE_STATE,
2337CASE_IGNORE_STATE,
2338CASE_IGNORE_STATE,
2339CASE_IGNORE_STATE,
2340/*	SP		!		"		#	*/
2341CASE_IGNORE_STATE,
2342CASE_IGNORE_STATE,
2343CASE_IGNORE_STATE,
2344CASE_IGNORE_STATE,
2345/*	$		%		&		'	*/
2346CASE_IGNORE_STATE,
2347CASE_IGNORE_STATE,
2348CASE_IGNORE_STATE,
2349CASE_IGNORE_STATE,
2350/*	(		)		*		+	*/
2351CASE_IGNORE_STATE,
2352CASE_IGNORE_STATE,
2353CASE_IGNORE_STATE,
2354CASE_IGNORE_STATE,
2355/*	,		-		.		/	*/
2356CASE_IGNORE_STATE,
2357CASE_IGNORE_STATE,
2358CASE_IGNORE_STATE,
2359CASE_IGNORE_STATE,
2360/*	0		1		2		3	*/
2361CASE_IGNORE_STATE,
2362CASE_IGNORE_STATE,
2363CASE_IGNORE_STATE,
2364CASE_IGNORE_STATE,
2365/*	4		5		6		7	*/
2366CASE_IGNORE_STATE,
2367CASE_IGNORE_STATE,
2368CASE_IGNORE_STATE,
2369CASE_IGNORE_STATE,
2370/*	8		9		:		;	*/
2371CASE_IGNORE_STATE,
2372CASE_IGNORE_STATE,
2373CASE_IGNORE_STATE,
2374CASE_IGNORE_STATE,
2375/*	<		=		>		?	*/
2376CASE_IGNORE_STATE,
2377CASE_IGNORE_STATE,
2378CASE_IGNORE_STATE,
2379CASE_IGNORE_STATE,
2380/*	@		A		B		C	*/
2381CASE_IGNORE_STATE,
2382CASE_IGNORE_STATE,
2383CASE_IGNORE_STATE,
2384CASE_IGNORE_STATE,
2385/*	D		E		F		G	*/
2386CASE_IGNORE_STATE,
2387CASE_IGNORE_STATE,
2388CASE_IGNORE_STATE,
2389CASE_IGNORE_STATE,
2390/*	H		I		J		K	*/
2391CASE_IGNORE_STATE,
2392CASE_IGNORE_STATE,
2393CASE_IGNORE_STATE,
2394CASE_IGNORE_STATE,
2395/*	L		M		N		O	*/
2396CASE_IGNORE_STATE,
2397CASE_IGNORE_STATE,
2398CASE_IGNORE_STATE,
2399CASE_IGNORE_STATE,
2400/*	P		Q		R		S	*/
2401CASE_IGNORE_STATE,
2402CASE_IGNORE_STATE,
2403CASE_IGNORE_STATE,
2404CASE_IGNORE_STATE,
2405/*	T		U		V		W	*/
2406CASE_IGNORE_STATE,
2407CASE_IGNORE_STATE,
2408CASE_IGNORE_STATE,
2409CASE_IGNORE_STATE,
2410/*	X		Y		Z		[	*/
2411CASE_IGNORE_STATE,
2412CASE_IGNORE_STATE,
2413CASE_IGNORE_STATE,
2414CASE_IGNORE_STATE,
2415/*	\		]		^		_	*/
2416CASE_GROUND_STATE,
2417CASE_IGNORE_STATE,
2418CASE_IGNORE_STATE,
2419CASE_IGNORE_STATE,
2420/*	`		a		b		c	*/
2421CASE_IGNORE_STATE,
2422CASE_IGNORE_STATE,
2423CASE_IGNORE_STATE,
2424CASE_IGNORE_STATE,
2425/*	d		e		f		g	*/
2426CASE_IGNORE_STATE,
2427CASE_IGNORE_STATE,
2428CASE_IGNORE_STATE,
2429CASE_IGNORE_STATE,
2430/*	h		i		j		k	*/
2431CASE_IGNORE_STATE,
2432CASE_IGNORE_STATE,
2433CASE_IGNORE_STATE,
2434CASE_IGNORE_STATE,
2435/*	l		m		n		o	*/
2436CASE_IGNORE_STATE,
2437CASE_IGNORE_STATE,
2438CASE_IGNORE_STATE,
2439CASE_IGNORE_STATE,
2440/*	p		q		r		s	*/
2441CASE_IGNORE_STATE,
2442CASE_IGNORE_STATE,
2443CASE_IGNORE_STATE,
2444CASE_IGNORE_STATE,
2445/*	t		u		v		w	*/
2446CASE_IGNORE_STATE,
2447CASE_IGNORE_STATE,
2448CASE_IGNORE_STATE,
2449CASE_IGNORE_STATE,
2450/*	x		y		z		{	*/
2451CASE_IGNORE_STATE,
2452CASE_IGNORE_STATE,
2453CASE_IGNORE_STATE,
2454CASE_IGNORE_STATE,
2455/*	|		}		~		DEL	*/
2456CASE_IGNORE_STATE,
2457CASE_IGNORE_STATE,
2458CASE_IGNORE_STATE,
2459CASE_IGNORE_STATE,
2460/*      0x80            0x81            0x82            0x83    */
2461CASE_IGNORE,
2462CASE_IGNORE,
2463CASE_IGNORE,
2464CASE_IGNORE,
2465/*      0x84            0x85            0x86            0x87    */
2466CASE_IGNORE,
2467CASE_IGNORE,
2468CASE_IGNORE,
2469CASE_IGNORE,
2470/*      0x88            0x89            0x8a            0x8b    */
2471CASE_IGNORE,
2472CASE_IGNORE,
2473CASE_IGNORE,
2474CASE_IGNORE,
2475/*      0x8c            0x8d            0x8e            0x8f    */
2476CASE_IGNORE,
2477CASE_IGNORE,
2478CASE_IGNORE,
2479CASE_IGNORE,
2480/*      0x90            0x91            0x92            0x93    */
2481CASE_IGNORE,
2482CASE_IGNORE,
2483CASE_IGNORE,
2484CASE_IGNORE,
2485/*      0x94            0x95            0x96            0x97    */
2486CASE_IGNORE,
2487CASE_IGNORE,
2488CASE_IGNORE,
2489CASE_IGNORE,
2490/*      0x99            0x99            0x9a            0x9b    */
2491CASE_IGNORE,
2492CASE_IGNORE,
2493CASE_IGNORE,
2494CASE_IGNORE,
2495/*      0x9c            0x9d            0x9e            0x9f    */
2496CASE_IGNORE,
2497CASE_IGNORE,
2498CASE_IGNORE,
2499CASE_IGNORE,
2500/*      nobreakspace    exclamdown      cent            sterling        */
2501CASE_GROUND_STATE,
2502CASE_GROUND_STATE,
2503CASE_GROUND_STATE,
2504CASE_GROUND_STATE,
2505/*      currency        yen             brokenbar       section         */
2506CASE_GROUND_STATE,
2507CASE_GROUND_STATE,
2508CASE_GROUND_STATE,
2509CASE_GROUND_STATE,
2510/*      diaeresis       copyright       ordfeminine     guillemotleft   */
2511CASE_GROUND_STATE,
2512CASE_GROUND_STATE,
2513CASE_GROUND_STATE,
2514CASE_GROUND_STATE,
2515/*      notsign         hyphen          registered      macron          */
2516CASE_GROUND_STATE,
2517CASE_GROUND_STATE,
2518CASE_GROUND_STATE,
2519CASE_GROUND_STATE,
2520/*      degree          plusminus       twosuperior     threesuperior   */
2521CASE_GROUND_STATE,
2522CASE_GROUND_STATE,
2523CASE_GROUND_STATE,
2524CASE_GROUND_STATE,
2525/*      acute           mu              paragraph       periodcentered  */
2526CASE_GROUND_STATE,
2527CASE_GROUND_STATE,
2528CASE_GROUND_STATE,
2529CASE_GROUND_STATE,
2530/*      cedilla         onesuperior     masculine       guillemotright  */
2531CASE_GROUND_STATE,
2532CASE_GROUND_STATE,
2533CASE_GROUND_STATE,
2534CASE_GROUND_STATE,
2535/*      onequarter      onehalf         threequarters   questiondown    */
2536CASE_GROUND_STATE,
2537CASE_GROUND_STATE,
2538CASE_GROUND_STATE,
2539CASE_GROUND_STATE,
2540/*      Agrave          Aacute          Acircumflex     Atilde          */
2541CASE_GROUND_STATE,
2542CASE_GROUND_STATE,
2543CASE_GROUND_STATE,
2544CASE_GROUND_STATE,
2545/*      Adiaeresis      Aring           AE              Ccedilla        */
2546CASE_GROUND_STATE,
2547CASE_GROUND_STATE,
2548CASE_GROUND_STATE,
2549CASE_GROUND_STATE,
2550/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
2551CASE_GROUND_STATE,
2552CASE_GROUND_STATE,
2553CASE_GROUND_STATE,
2554CASE_GROUND_STATE,
2555/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
2556CASE_GROUND_STATE,
2557CASE_GROUND_STATE,
2558CASE_GROUND_STATE,
2559CASE_GROUND_STATE,
2560/*      Eth             Ntilde          Ograve          Oacute          */
2561CASE_GROUND_STATE,
2562CASE_GROUND_STATE,
2563CASE_GROUND_STATE,
2564CASE_GROUND_STATE,
2565/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
2566CASE_GROUND_STATE,
2567CASE_GROUND_STATE,
2568CASE_GROUND_STATE,
2569CASE_GROUND_STATE,
2570/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
2571CASE_GROUND_STATE,
2572CASE_GROUND_STATE,
2573CASE_GROUND_STATE,
2574CASE_GROUND_STATE,
2575/*      Udiaeresis      Yacute          Thorn           ssharp          */
2576CASE_GROUND_STATE,
2577CASE_GROUND_STATE,
2578CASE_GROUND_STATE,
2579CASE_GROUND_STATE,
2580/*      agrave          aacute          acircumflex     atilde          */
2581CASE_GROUND_STATE,
2582CASE_GROUND_STATE,
2583CASE_GROUND_STATE,
2584CASE_GROUND_STATE,
2585/*      adiaeresis      aring           ae              ccedilla        */
2586CASE_GROUND_STATE,
2587CASE_GROUND_STATE,
2588CASE_GROUND_STATE,
2589CASE_GROUND_STATE,
2590/*      egrave          eacute          ecircumflex     ediaeresis      */
2591CASE_GROUND_STATE,
2592CASE_GROUND_STATE,
2593CASE_GROUND_STATE,
2594CASE_GROUND_STATE,
2595/*      igrave          iacute          icircumflex     idiaeresis      */
2596CASE_GROUND_STATE,
2597CASE_GROUND_STATE,
2598CASE_GROUND_STATE,
2599CASE_GROUND_STATE,
2600/*      eth             ntilde          ograve          oacute          */
2601CASE_GROUND_STATE,
2602CASE_GROUND_STATE,
2603CASE_GROUND_STATE,
2604CASE_GROUND_STATE,
2605/*      ocircumflex     otilde          odiaeresis      division        */
2606CASE_GROUND_STATE,
2607CASE_GROUND_STATE,
2608CASE_GROUND_STATE,
2609CASE_GROUND_STATE,
2610/*      oslash          ugrave          uacute          ucircumflex     */
2611CASE_GROUND_STATE,
2612CASE_GROUND_STATE,
2613CASE_GROUND_STATE,
2614CASE_GROUND_STATE,
2615/*      udiaeresis      yacute          thorn           ydiaeresis      */
2616CASE_GROUND_STATE,
2617CASE_GROUND_STATE,
2618CASE_GROUND_STATE,
2619CASE_GROUND_STATE,
2620};
2621
2622// #pragma mark CASE_IGNORE_STATE table
2623int gIgnoreTable[] =
2624{
2625/*	NUL		SOH		STX		ETX	*/
2626CASE_IGNORE,
2627CASE_IGNORE,
2628CASE_IGNORE,
2629CASE_IGNORE,
2630/*	EOT		ENQ		ACK		BEL	*/
2631CASE_IGNORE,
2632CASE_IGNORE,
2633CASE_IGNORE,
2634CASE_IGNORE,
2635/*	BS		HT		NL		VT	*/
2636CASE_IGNORE,
2637CASE_IGNORE,
2638CASE_IGNORE,
2639CASE_IGNORE,
2640/*	NP		CR		SO		SI	*/
2641CASE_IGNORE,
2642CASE_IGNORE,
2643CASE_IGNORE,
2644CASE_IGNORE,
2645/*	DLE		DC1		DC2		DC3	*/
2646CASE_IGNORE,
2647CASE_IGNORE,
2648CASE_IGNORE,
2649CASE_IGNORE,
2650/*	DC4		NAK		SYN		ETB	*/
2651CASE_IGNORE,
2652CASE_IGNORE,
2653CASE_IGNORE,
2654CASE_IGNORE,
2655/*	CAN		EM		SUB		ESC	*/
2656CASE_GROUND_STATE,
2657CASE_IGNORE,
2658CASE_GROUND_STATE,
2659CASE_IGNORE_ESC,
2660/*	FS		GS		RS		US	*/
2661CASE_IGNORE,
2662CASE_IGNORE,
2663CASE_IGNORE,
2664CASE_IGNORE,
2665/*	SP		!		"		#	*/
2666CASE_IGNORE,
2667CASE_IGNORE,
2668CASE_IGNORE,
2669CASE_IGNORE,
2670/*	$		%		&		'	*/
2671CASE_IGNORE,
2672CASE_IGNORE,
2673CASE_IGNORE,
2674CASE_IGNORE,
2675/*	(		)		*		+	*/
2676CASE_IGNORE,
2677CASE_IGNORE,
2678CASE_IGNORE,
2679CASE_IGNORE,
2680/*	,		-		.		/	*/
2681CASE_IGNORE,
2682CASE_IGNORE,
2683CASE_IGNORE,
2684CASE_IGNORE,
2685/*	0		1		2		3	*/
2686CASE_IGNORE,
2687CASE_IGNORE,
2688CASE_IGNORE,
2689CASE_IGNORE,
2690/*	4		5		6		7	*/
2691CASE_IGNORE,
2692CASE_IGNORE,
2693CASE_IGNORE,
2694CASE_IGNORE,
2695/*	8		9		:		;	*/
2696CASE_IGNORE,
2697CASE_IGNORE,
2698CASE_IGNORE,
2699CASE_IGNORE,
2700/*	<		=		>		?	*/
2701CASE_IGNORE,
2702CASE_IGNORE,
2703CASE_IGNORE,
2704CASE_IGNORE,
2705/*	@		A		B		C	*/
2706CASE_IGNORE,
2707CASE_IGNORE,
2708CASE_IGNORE,
2709CASE_IGNORE,
2710/*	D		E		F		G	*/
2711CASE_IGNORE,
2712CASE_IGNORE,
2713CASE_IGNORE,
2714CASE_IGNORE,
2715/*	H		I		J		K	*/
2716CASE_IGNORE,
2717CASE_IGNORE,
2718CASE_IGNORE,
2719CASE_IGNORE,
2720/*	L		M		N		O	*/
2721CASE_IGNORE,
2722CASE_IGNORE,
2723CASE_IGNORE,
2724CASE_IGNORE,
2725/*	P		Q		R		S	*/
2726CASE_IGNORE,
2727CASE_IGNORE,
2728CASE_IGNORE,
2729CASE_IGNORE,
2730/*	T		U		V		W	*/
2731CASE_IGNORE,
2732CASE_IGNORE,
2733CASE_IGNORE,
2734CASE_IGNORE,
2735/*	X		Y		Z		[	*/
2736CASE_IGNORE,
2737CASE_IGNORE,
2738CASE_IGNORE,
2739CASE_IGNORE,
2740/*	\		]		^		_	*/
2741CASE_IGNORE,
2742CASE_IGNORE,
2743CASE_IGNORE,
2744CASE_IGNORE,
2745/*	`		a		b		c	*/
2746CASE_IGNORE,
2747CASE_IGNORE,
2748CASE_IGNORE,
2749CASE_IGNORE,
2750/*	d		e		f		g	*/
2751CASE_IGNORE,
2752CASE_IGNORE,
2753CASE_IGNORE,
2754CASE_IGNORE,
2755/*	h		i		j		k	*/
2756CASE_IGNORE,
2757CASE_IGNORE,
2758CASE_IGNORE,
2759CASE_IGNORE,
2760/*	l		m		n		o	*/
2761CASE_IGNORE,
2762CASE_IGNORE,
2763CASE_IGNORE,
2764CASE_IGNORE,
2765/*	p		q		r		s	*/
2766CASE_IGNORE,
2767CASE_IGNORE,
2768CASE_IGNORE,
2769CASE_IGNORE,
2770/*	t		u		v		w	*/
2771CASE_IGNORE,
2772CASE_IGNORE,
2773CASE_IGNORE,
2774CASE_IGNORE,
2775/*	x		y		z		{	*/
2776CASE_IGNORE,
2777CASE_IGNORE,
2778CASE_IGNORE,
2779CASE_IGNORE,
2780/*	|		}		~		DEL	*/
2781CASE_IGNORE,
2782CASE_IGNORE,
2783CASE_IGNORE,
2784CASE_IGNORE,
2785/*      0x80            0x81            0x82            0x83    */
2786CASE_IGNORE,
2787CASE_IGNORE,
2788CASE_IGNORE,
2789CASE_IGNORE,
2790/*      0x84            0x85            0x86            0x87    */
2791CASE_IGNORE,
2792CASE_IGNORE,
2793CASE_IGNORE,
2794CASE_IGNORE,
2795/*      0x88            0x89            0x8a            0x8b    */
2796CASE_IGNORE,
2797CASE_IGNORE,
2798CASE_IGNORE,
2799CASE_IGNORE,
2800/*      0x8c            0x8d            0x8e            0x8f    */
2801CASE_IGNORE,
2802CASE_IGNORE,
2803CASE_IGNORE,
2804CASE_IGNORE,
2805/*      0x90            0x91            0x92            0x93    */
2806CASE_IGNORE,
2807CASE_IGNORE,
2808CASE_IGNORE,
2809CASE_IGNORE,
2810/*      0x94            0x95            0x96            0x97    */
2811CASE_IGNORE,
2812CASE_IGNORE,
2813CASE_IGNORE,
2814CASE_IGNORE,
2815/*      0x99            0x99            0x9a            0x9b    */
2816CASE_IGNORE,
2817CASE_IGNORE,
2818CASE_IGNORE,
2819CASE_IGNORE,
2820/*      0x9c            0x9d            0x9e            0x9f    */
2821CASE_IGNORE,
2822CASE_IGNORE,
2823CASE_IGNORE,
2824CASE_IGNORE,
2825/*      nobreakspace    exclamdown      cent            sterling        */
2826CASE_GROUND_STATE,
2827CASE_GROUND_STATE,
2828CASE_GROUND_STATE,
2829CASE_GROUND_STATE,
2830/*      currency        yen             brokenbar       section         */
2831CASE_GROUND_STATE,
2832CASE_GROUND_STATE,
2833CASE_GROUND_STATE,
2834CASE_GROUND_STATE,
2835/*      diaeresis       copyright       ordfeminine     guillemotleft   */
2836CASE_GROUND_STATE,
2837CASE_GROUND_STATE,
2838CASE_GROUND_STATE,
2839CASE_GROUND_STATE,
2840/*      notsign         hyphen          registered      macron          */
2841CASE_GROUND_STATE,
2842CASE_GROUND_STATE,
2843CASE_GROUND_STATE,
2844CASE_GROUND_STATE,
2845/*      degree          plusminus       twosuperior     threesuperior   */
2846CASE_GROUND_STATE,
2847CASE_GROUND_STATE,
2848CASE_GROUND_STATE,
2849CASE_GROUND_STATE,
2850/*      acute           mu              paragraph       periodcentered  */
2851CASE_GROUND_STATE,
2852CASE_GROUND_STATE,
2853CASE_GROUND_STATE,
2854CASE_GROUND_STATE,
2855/*      cedilla         onesuperior     masculine       guillemotright  */
2856CASE_GROUND_STATE,
2857CASE_GROUND_STATE,
2858CASE_GROUND_STATE,
2859CASE_GROUND_STATE,
2860/*      onequarter      onehalf         threequarters   questiondown    */
2861CASE_GROUND_STATE,
2862CASE_GROUND_STATE,
2863CASE_GROUND_STATE,
2864CASE_GROUND_STATE,
2865/*      Agrave          Aacute          Acircumflex     Atilde          */
2866CASE_GROUND_STATE,
2867CASE_GROUND_STATE,
2868CASE_GROUND_STATE,
2869CASE_GROUND_STATE,
2870/*      Adiaeresis      Aring           AE              Ccedilla        */
2871CASE_GROUND_STATE,
2872CASE_GROUND_STATE,
2873CASE_GROUND_STATE,
2874CASE_GROUND_STATE,
2875/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
2876CASE_GROUND_STATE,
2877CASE_GROUND_STATE,
2878CASE_GROUND_STATE,
2879CASE_GROUND_STATE,
2880/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
2881CASE_GROUND_STATE,
2882CASE_GROUND_STATE,
2883CASE_GROUND_STATE,
2884CASE_GROUND_STATE,
2885/*      Eth             Ntilde          Ograve          Oacute          */
2886CASE_GROUND_STATE,
2887CASE_GROUND_STATE,
2888CASE_GROUND_STATE,
2889CASE_GROUND_STATE,
2890/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
2891CASE_GROUND_STATE,
2892CASE_GROUND_STATE,
2893CASE_GROUND_STATE,
2894CASE_GROUND_STATE,
2895/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
2896CASE_GROUND_STATE,
2897CASE_GROUND_STATE,
2898CASE_GROUND_STATE,
2899CASE_GROUND_STATE,
2900/*      Udiaeresis      Yacute          Thorn           ssharp          */
2901CASE_GROUND_STATE,
2902CASE_GROUND_STATE,
2903CASE_GROUND_STATE,
2904CASE_GROUND_STATE,
2905/*      agrave          aacute          acircumflex     atilde          */
2906CASE_GROUND_STATE,
2907CASE_GROUND_STATE,
2908CASE_GROUND_STATE,
2909CASE_GROUND_STATE,
2910/*      adiaeresis      aring           ae              ccedilla        */
2911CASE_GROUND_STATE,
2912CASE_GROUND_STATE,
2913CASE_GROUND_STATE,
2914CASE_GROUND_STATE,
2915/*      egrave          eacute          ecircumflex     ediaeresis      */
2916CASE_GROUND_STATE,
2917CASE_GROUND_STATE,
2918CASE_GROUND_STATE,
2919CASE_GROUND_STATE,
2920/*      igrave          iacute          icircumflex     idiaeresis      */
2921CASE_GROUND_STATE,
2922CASE_GROUND_STATE,
2923CASE_GROUND_STATE,
2924CASE_GROUND_STATE,
2925/*      eth             ntilde          ograve          oacute          */
2926CASE_GROUND_STATE,
2927CASE_GROUND_STATE,
2928CASE_GROUND_STATE,
2929CASE_GROUND_STATE,
2930/*      ocircumflex     otilde          odiaeresis      division        */
2931CASE_GROUND_STATE,
2932CASE_GROUND_STATE,
2933CASE_GROUND_STATE,
2934CASE_GROUND_STATE,
2935/*      oslash          ugrave          uacute          ucircumflex     */
2936CASE_GROUND_STATE,
2937CASE_GROUND_STATE,
2938CASE_GROUND_STATE,
2939CASE_GROUND_STATE,
2940/*      udiaeresis      yacute          thorn           ydiaeresis      */
2941CASE_GROUND_STATE,
2942CASE_GROUND_STATE,
2943CASE_GROUND_STATE,
2944CASE_GROUND_STATE,
2945};
2946
2947// #pragma mark ESC # - SCR table
2948int gScrTable[] =
2949{
2950/*	NUL		SOH		STX		ETX	*/
2951CASE_IGNORE,
2952CASE_IGNORE,
2953CASE_IGNORE,
2954CASE_IGNORE,
2955/*	EOT		ENQ		ACK		BEL	*/
2956CASE_IGNORE,
2957CASE_IGNORE,
2958CASE_IGNORE,
2959CASE_BELL,
2960/*	BS		HT		NL		VT	*/
2961CASE_BS,
2962CASE_TAB,
2963CASE_VMOT,
2964CASE_VMOT,
2965/*	NP		CR		SO		SI	*/
2966CASE_VMOT,
2967CASE_CR,
2968CASE_LS1,
2969CASE_LS0,
2970/*	DLE		DC1		DC2		DC3	*/
2971CASE_IGNORE,
2972CASE_IGNORE,
2973CASE_IGNORE,
2974CASE_IGNORE,
2975/*	DC4		NAK		SYN		ETB	*/
2976CASE_IGNORE,
2977CASE_IGNORE,
2978CASE_IGNORE,
2979CASE_IGNORE,
2980/*	CAN		EM		SUB		ESC	*/
2981CASE_IGNORE,
2982CASE_IGNORE,
2983CASE_IGNORE,
2984CASE_ESC,
2985/*	FS		GS		RS		US	*/
2986CASE_IGNORE,
2987CASE_IGNORE,
2988CASE_IGNORE,
2989CASE_IGNORE,
2990/*	SP		!		"		#	*/
2991CASE_ESC_IGNORE,
2992CASE_ESC_IGNORE,
2993CASE_ESC_IGNORE,
2994CASE_ESC_IGNORE,
2995/*	$		%		&		'	*/
2996CASE_ESC_IGNORE,
2997CASE_ESC_IGNORE,
2998CASE_ESC_IGNORE,
2999CASE_ESC_IGNORE,
3000/*	(		)		*		+	*/
3001CASE_ESC_IGNORE,
3002CASE_ESC_IGNORE,
3003CASE_ESC_IGNORE,
3004CASE_ESC_IGNORE,
3005/*	,		-		.		/	*/
3006CASE_ESC_IGNORE,
3007CASE_ESC_IGNORE,
3008CASE_ESC_IGNORE,
3009CASE_ESC_IGNORE,
3010/*	0		1		2		3	*/
3011CASE_GROUND_STATE,
3012CASE_GROUND_STATE,
3013CASE_GROUND_STATE,
3014CASE_GROUND_STATE,
3015/*	4		5		6		7	*/
3016CASE_GROUND_STATE,
3017CASE_GROUND_STATE,
3018CASE_GROUND_STATE,
3019CASE_GROUND_STATE,
3020/*	8		9		:		;	*/
3021CASE_DECALN,
3022CASE_GROUND_STATE,
3023CASE_GROUND_STATE,
3024CASE_GROUND_STATE,
3025/*	<		=		>		?	*/
3026CASE_GROUND_STATE,
3027CASE_GROUND_STATE,
3028CASE_GROUND_STATE,
3029CASE_GROUND_STATE,
3030/*	@		A		B		C	*/
3031CASE_GROUND_STATE,
3032CASE_GROUND_STATE,
3033CASE_GROUND_STATE,
3034CASE_GROUND_STATE,
3035/*	D		E		F		G	*/
3036CASE_GROUND_STATE,
3037CASE_GROUND_STATE,
3038CASE_GROUND_STATE,
3039CASE_GROUND_STATE,
3040/*	H		I		J		K	*/
3041CASE_GROUND_STATE,
3042CASE_GROUND_STATE,
3043CASE_GROUND_STATE,
3044CASE_GROUND_STATE,
3045/*	L		M		N		O	*/
3046CASE_GROUND_STATE,
3047CASE_GROUND_STATE,
3048CASE_GROUND_STATE,
3049CASE_GROUND_STATE,
3050/*	P		Q		R		S	*/
3051CASE_GROUND_STATE,
3052CASE_GROUND_STATE,
3053CASE_GROUND_STATE,
3054CASE_GROUND_STATE,
3055/*	T		U		V		W	*/
3056CASE_GROUND_STATE,
3057CASE_GROUND_STATE,
3058CASE_GROUND_STATE,
3059CASE_GROUND_STATE,
3060/*	X		Y		Z		[	*/
3061CASE_GROUND_STATE,
3062CASE_GROUND_STATE,
3063CASE_GROUND_STATE,
3064CASE_GROUND_STATE,
3065/*	\		]		^		_	*/
3066CASE_GROUND_STATE,
3067CASE_GROUND_STATE,
3068CASE_GROUND_STATE,
3069CASE_GROUND_STATE,
3070/*	`		a		b		c	*/
3071CASE_GROUND_STATE,
3072CASE_GROUND_STATE,
3073CASE_GROUND_STATE,
3074CASE_GROUND_STATE,
3075/*	d		e		f		g	*/
3076CASE_GROUND_STATE,
3077CASE_GROUND_STATE,
3078CASE_GROUND_STATE,
3079CASE_GROUND_STATE,
3080/*	h		i		j		k	*/
3081CASE_GROUND_STATE,
3082CASE_GROUND_STATE,
3083CASE_GROUND_STATE,
3084CASE_GROUND_STATE,
3085/*	l		m		n		o	*/
3086CASE_GROUND_STATE,
3087CASE_GROUND_STATE,
3088CASE_GROUND_STATE,
3089CASE_GROUND_STATE,
3090/*	p		q		r		s	*/
3091CASE_GROUND_STATE,
3092CASE_GROUND_STATE,
3093CASE_GROUND_STATE,
3094CASE_GROUND_STATE,
3095/*	t		u		v		w	*/
3096CASE_GROUND_STATE,
3097CASE_GROUND_STATE,
3098CASE_GROUND_STATE,
3099CASE_GROUND_STATE,
3100/*	x		y		z		{	*/
3101CASE_GROUND_STATE,
3102CASE_GROUND_STATE,
3103CASE_GROUND_STATE,
3104CASE_GROUND_STATE,
3105/*	|		}		~		DEL	*/
3106CASE_GROUND_STATE,
3107CASE_GROUND_STATE,
3108CASE_GROUND_STATE,
3109CASE_GROUND_STATE,
3110/*      0x80            0x81            0x82            0x83    */
3111CASE_IGNORE,
3112CASE_IGNORE,
3113CASE_IGNORE,
3114CASE_IGNORE,
3115/*      0x84            0x85            0x86            0x87    */
3116CASE_IGNORE,
3117CASE_IGNORE,
3118CASE_IGNORE,
3119CASE_IGNORE,
3120/*      0x88            0x89            0x8a            0x8b    */
3121CASE_IGNORE,
3122CASE_IGNORE,
3123CASE_IGNORE,
3124CASE_IGNORE,
3125/*      0x8c            0x8d            0x8e            0x8f    */
3126CASE_IGNORE,
3127CASE_IGNORE,
3128CASE_IGNORE,
3129CASE_IGNORE,
3130/*      0x90            0x91            0x92            0x93    */
3131CASE_IGNORE,
3132CASE_IGNORE,
3133CASE_IGNORE,
3134CASE_IGNORE,
3135/*      0x94            0x95            0x96            0x97    */
3136CASE_IGNORE,
3137CASE_IGNORE,
3138CASE_IGNORE,
3139CASE_IGNORE,
3140/*      0x99            0x99            0x9a            0x9b    */
3141CASE_IGNORE,
3142CASE_IGNORE,
3143CASE_IGNORE,
3144CASE_IGNORE,
3145/*      0x9c            0x9d            0x9e            0x9f    */
3146CASE_IGNORE,
3147CASE_IGNORE,
3148CASE_IGNORE,
3149CASE_IGNORE,
3150/*      nobreakspace    exclamdown      cent            sterling        */
3151CASE_GROUND_STATE,
3152CASE_GROUND_STATE,
3153CASE_GROUND_STATE,
3154CASE_GROUND_STATE,
3155/*      currency        yen             brokenbar       section         */
3156CASE_GROUND_STATE,
3157CASE_GROUND_STATE,
3158CASE_GROUND_STATE,
3159CASE_GROUND_STATE,
3160/*      diaeresis       copyright       ordfeminine     guillemotleft   */
3161CASE_GROUND_STATE,
3162CASE_GROUND_STATE,
3163CASE_GROUND_STATE,
3164CASE_GROUND_STATE,
3165/*      notsign         hyphen          registered      macron          */
3166CASE_GROUND_STATE,
3167CASE_GROUND_STATE,
3168CASE_GROUND_STATE,
3169CASE_GROUND_STATE,
3170/*      degree          plusminus       twosuperior     threesuperior   */
3171CASE_GROUND_STATE,
3172CASE_GROUND_STATE,
3173CASE_GROUND_STATE,
3174CASE_GROUND_STATE,
3175/*      acute           mu              paragraph       periodcentered  */
3176CASE_GROUND_STATE,
3177CASE_GROUND_STATE,
3178CASE_GROUND_STATE,
3179CASE_GROUND_STATE,
3180/*      cedilla         onesuperior     masculine       guillemotright  */
3181CASE_GROUND_STATE,
3182CASE_GROUND_STATE,
3183CASE_GROUND_STATE,
3184CASE_GROUND_STATE,
3185/*      onequarter      onehalf         threequarters   questiondown    */
3186CASE_GROUND_STATE,
3187CASE_GROUND_STATE,
3188CASE_GROUND_STATE,
3189CASE_GROUND_STATE,
3190/*      Agrave          Aacute          Acircumflex     Atilde          */
3191CASE_GROUND_STATE,
3192CASE_GROUND_STATE,
3193CASE_GROUND_STATE,
3194CASE_GROUND_STATE,
3195/*      Adiaeresis      Aring           AE              Ccedilla        */
3196CASE_GROUND_STATE,
3197CASE_GROUND_STATE,
3198CASE_GROUND_STATE,
3199CASE_GROUND_STATE,
3200/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
3201CASE_GROUND_STATE,
3202CASE_GROUND_STATE,
3203CASE_GROUND_STATE,
3204CASE_GROUND_STATE,
3205/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
3206CASE_GROUND_STATE,
3207CASE_GROUND_STATE,
3208CASE_GROUND_STATE,
3209CASE_GROUND_STATE,
3210/*      Eth             Ntilde          Ograve          Oacute          */
3211CASE_GROUND_STATE,
3212CASE_GROUND_STATE,
3213CASE_GROUND_STATE,
3214CASE_GROUND_STATE,
3215/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
3216CASE_GROUND_STATE,
3217CASE_GROUND_STATE,
3218CASE_GROUND_STATE,
3219CASE_GROUND_STATE,
3220/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
3221CASE_GROUND_STATE,
3222CASE_GROUND_STATE,
3223CASE_GROUND_STATE,
3224CASE_GROUND_STATE,
3225/*      Udiaeresis      Yacute          Thorn           ssharp          */
3226CASE_GROUND_STATE,
3227CASE_GROUND_STATE,
3228CASE_GROUND_STATE,
3229CASE_GROUND_STATE,
3230/*      agrave          aacute          acircumflex     atilde          */
3231CASE_GROUND_STATE,
3232CASE_GROUND_STATE,
3233CASE_GROUND_STATE,
3234CASE_GROUND_STATE,
3235/*      adiaeresis      aring           ae              ccedilla        */
3236CASE_GROUND_STATE,
3237CASE_GROUND_STATE,
3238CASE_GROUND_STATE,
3239CASE_GROUND_STATE,
3240/*      egrave          eacute          ecircumflex     ediaeresis      */
3241CASE_GROUND_STATE,
3242CASE_GROUND_STATE,
3243CASE_GROUND_STATE,
3244CASE_GROUND_STATE,
3245/*      igrave          iacute          icircumflex     idiaeresis      */
3246CASE_GROUND_STATE,
3247CASE_GROUND_STATE,
3248CASE_GROUND_STATE,
3249CASE_GROUND_STATE,
3250/*      eth             ntilde          ograve          oacute          */
3251CASE_GROUND_STATE,
3252CASE_GROUND_STATE,
3253CASE_GROUND_STATE,
3254CASE_GROUND_STATE,
3255/*      ocircumflex     otilde          odiaeresis      division        */
3256CASE_GROUND_STATE,
3257CASE_GROUND_STATE,
3258CASE_GROUND_STATE,
3259CASE_GROUND_STATE,
3260/*      oslash          ugrave          uacute          ucircumflex     */
3261CASE_GROUND_STATE,
3262CASE_GROUND_STATE,
3263CASE_GROUND_STATE,
3264CASE_GROUND_STATE,
3265/*      udiaeresis      yacute          thorn           ydiaeresis      */
3266CASE_GROUND_STATE,
3267CASE_GROUND_STATE,
3268CASE_GROUND_STATE,
3269CASE_GROUND_STATE,
3270};
3271
3272// #pragma mark Shift-JIS ground table
3273int gSJISGroundTable[] =
3274{
3275/*	NUL		SOH		STX		ETX	*/
3276CASE_IGNORE,
3277CASE_IGNORE,
3278CASE_IGNORE,
3279CASE_IGNORE,
3280/*	EOT		ENQ		ACK		BEL	*/
3281CASE_IGNORE,
3282CASE_IGNORE,
3283CASE_IGNORE,
3284CASE_BELL,
3285/*	BS		HT		NL		VT	*/
3286CASE_BS,
3287CASE_TAB,
3288CASE_LF,
3289CASE_LF, /*CASE_UP,*/
3290/*	NP		CR		SO		SI	*/
3291CASE_LF, /*CASE_IGNORE,*/
3292CASE_CR,
3293CASE_LS1,
3294CASE_LS0,
3295/*	DLE		DC1		DC2		DC3	*/
3296CASE_IGNORE,
3297CASE_IGNORE,
3298CASE_IGNORE,
3299CASE_IGNORE,
3300/*	DC4		NAK		SYN		ETB	*/
3301CASE_IGNORE,
3302CASE_IGNORE,
3303CASE_IGNORE,
3304CASE_IGNORE,
3305/*	CAN		EM		SUB		ESC	*/
3306CASE_IGNORE,
3307CASE_IGNORE,
3308CASE_IGNORE,
3309CASE_ESC,
3310/*	FS		GS		RS		US	*/
3311CASE_IGNORE,
3312CASE_IGNORE,
3313CASE_IGNORE,
3314CASE_IGNORE,
3315/*	SP		!		"		#	*/
3316CASE_PRINT,
3317CASE_PRINT,
3318CASE_PRINT,
3319CASE_PRINT,
3320/*	$		%		&		'	*/
3321CASE_PRINT,
3322CASE_PRINT,
3323CASE_PRINT,
3324CASE_PRINT,
3325/*	(		)		*		+	*/
3326CASE_PRINT,
3327CASE_PRINT,
3328CASE_PRINT,
3329CASE_PRINT,
3330/*	,		-		.		/	*/
3331CASE_PRINT,
3332CASE_PRINT,
3333CASE_PRINT,
3334CASE_PRINT,
3335/*	0		1		2		3	*/
3336CASE_PRINT,
3337CASE_PRINT,
3338CASE_PRINT,
3339CASE_PRINT,
3340/*	4		5		6		7	*/
3341CASE_PRINT,
3342CASE_PRINT,
3343CASE_PRINT,
3344CASE_PRINT,
3345/*	8		9		:		;	*/
3346CASE_PRINT,
3347CASE_PRINT,
3348CASE_PRINT,
3349CASE_PRINT,
3350/*	<		=		>		?	*/
3351CASE_PRINT,
3352CASE_PRINT,
3353CASE_PRINT,
3354CASE_PRINT,
3355/*	@		A		B		C	*/
3356CASE_PRINT,
3357CASE_PRINT,
3358CASE_PRINT,
3359CASE_PRINT,
3360/*	D		E		F		G	*/
3361CASE_PRINT,
3362CASE_PRINT,
3363CASE_PRINT,
3364CASE_PRINT,
3365/*	H		I		J		K	*/
3366CASE_PRINT,
3367CASE_PRINT,
3368CASE_PRINT,
3369CASE_PRINT,
3370/*	L		M		N		O	*/
3371CASE_PRINT,
3372CASE_PRINT,
3373CASE_PRINT,
3374CASE_PRINT,
3375/*	P		Q		R		S	*/
3376CASE_PRINT,
3377CASE_PRINT,
3378CASE_PRINT,
3379CASE_PRINT,
3380/*	T		U		V		W	*/
3381CASE_PRINT,
3382CASE_PRINT,
3383CASE_PRINT,
3384CASE_PRINT,
3385/*	X		Y		Z		[	*/
3386CASE_PRINT,
3387CASE_PRINT,
3388CASE_PRINT,
3389CASE_PRINT,
3390/*	\		]		^		_	*/
3391CASE_PRINT,
3392CASE_PRINT,
3393CASE_PRINT,
3394CASE_PRINT,
3395/*	`		a		b		c	*/
3396CASE_PRINT,
3397CASE_PRINT,
3398CASE_PRINT,
3399CASE_PRINT,
3400/*	d		e		f		g	*/
3401CASE_PRINT,
3402CASE_PRINT,
3403CASE_PRINT,
3404CASE_PRINT,
3405/*	h		i		j		k	*/
3406CASE_PRINT,
3407CASE_PRINT,
3408CASE_PRINT,
3409CASE_PRINT,
3410/*	l		m		n		o	*/
3411CASE_PRINT,
3412CASE_PRINT,
3413CASE_PRINT,
3414CASE_PRINT,
3415/*	p		q		r		s	*/
3416CASE_PRINT,
3417CASE_PRINT,
3418CASE_PRINT,
3419CASE_PRINT,
3420/*	t		u		v		w	*/
3421CASE_PRINT,
3422CASE_PRINT,
3423CASE_PRINT,
3424CASE_PRINT,
3425/*	x		y		z		{	*/
3426CASE_PRINT,
3427CASE_PRINT,
3428CASE_PRINT,
3429CASE_PRINT,
3430/*	|		}		~		DEL	*/
3431CASE_PRINT,
3432CASE_PRINT,
3433CASE_PRINT,
3434CASE_PRINT,
3435/*      0x80            0x81            0x82            0x83    */
3436CASE_SJIS_INSTRING,
3437CASE_SJIS_INSTRING,
3438CASE_SJIS_INSTRING,
3439CASE_SJIS_INSTRING,
3440/*      0x84            0x85            0x86            0x87    */
3441CASE_SJIS_INSTRING,
3442CASE_SJIS_INSTRING,
3443CASE_SJIS_INSTRING,
3444CASE_SJIS_INSTRING,
3445/*      0x88            0x89            0x8a            0x8b    */
3446CASE_SJIS_INSTRING,
3447CASE_SJIS_INSTRING,
3448CASE_SJIS_INSTRING,
3449CASE_SJIS_INSTRING,
3450/*      0x8c            0x8d            0x8e            0x8f    */
3451CASE_SJIS_INSTRING,
3452CASE_SJIS_INSTRING,
3453CASE_SJIS_INSTRING,
3454CASE_SJIS_INSTRING,
3455/*      0x90            0x91            0x92            0x93    */
3456CASE_SJIS_INSTRING,
3457CASE_SJIS_INSTRING,
3458CASE_SJIS_INSTRING,
3459CASE_SJIS_INSTRING,
3460/*      0x94            0x95            0x96            0x97    */
3461CASE_SJIS_INSTRING,
3462CASE_SJIS_INSTRING,
3463CASE_SJIS_INSTRING,
3464CASE_SJIS_INSTRING,
3465/*      0x99            0x99            0x9a            0x9b    */
3466CASE_SJIS_INSTRING,
3467CASE_SJIS_INSTRING,
3468CASE_SJIS_INSTRING,
3469CASE_SJIS_INSTRING,
3470/*      0x9c            0x9d            0x9e            0x9f    */
3471CASE_SJIS_INSTRING,
3472CASE_SJIS_INSTRING,
3473CASE_SJIS_INSTRING,
3474CASE_SJIS_INSTRING,
3475/*      0xa0		0xa1		0xa2		0xa3	*/
3476CASE_SJIS_KANA,
3477CASE_SJIS_KANA,
3478CASE_SJIS_KANA,
3479CASE_SJIS_KANA,
3480/*      0xa4		0xa5		0xa6		0xa7	*/
3481CASE_SJIS_KANA,
3482CASE_SJIS_KANA,
3483CASE_SJIS_KANA,
3484CASE_SJIS_KANA,
3485/*      0xa8		0xa9		0xaa		0xab	*/
3486CASE_SJIS_KANA,
3487CASE_SJIS_KANA,
3488CASE_SJIS_KANA,
3489CASE_SJIS_KANA,
3490/*      0xac		0xad		0xae		0xaf	*/
3491CASE_SJIS_KANA,
3492CASE_SJIS_KANA,
3493CASE_SJIS_KANA,
3494CASE_SJIS_KANA,
3495/*      0xb0		0xb1		0xb2		0xb3	*/
3496CASE_SJIS_KANA,
3497CASE_SJIS_KANA,
3498CASE_SJIS_KANA,
3499CASE_SJIS_KANA,
3500/*      0xb4		0xb5		0xb6		0xb7	*/
3501CASE_SJIS_KANA,
3502CASE_SJIS_KANA,
3503CASE_SJIS_KANA,
3504CASE_SJIS_KANA,
3505/*      0xb8		0xb9		0xba		0xbb	*/
3506CASE_SJIS_KANA,
3507CASE_SJIS_KANA,
3508CASE_SJIS_KANA,
3509CASE_SJIS_KANA,
3510/*      0xbc		0xbd		0xbe		0xbf	*/
3511CASE_SJIS_KANA,
3512CASE_SJIS_KANA,
3513CASE_SJIS_KANA,
3514CASE_SJIS_KANA,
3515/*      0xc0		0xc1		0xc2		0xc3	*/
3516CASE_SJIS_KANA,
3517CASE_SJIS_KANA,
3518CASE_SJIS_KANA,
3519CASE_SJIS_KANA,
3520/*      0xc4		0xc5		0xc6		0xc7	*/
3521CASE_SJIS_KANA,
3522CASE_SJIS_KANA,
3523CASE_SJIS_KANA,
3524CASE_SJIS_KANA,
3525/*      0xc8		0xc9		0xca		0xcb	*/
3526CASE_SJIS_KANA,
3527CASE_SJIS_KANA,
3528CASE_SJIS_KANA,
3529CASE_SJIS_KANA,
3530/*      0xcc		0xcd		0xce		0xcf	*/
3531CASE_SJIS_KANA,
3532CASE_SJIS_KANA,
3533CASE_SJIS_KANA,
3534CASE_SJIS_KANA,
3535/*      0xd0		0xd1		0xd2		0xd3	*/
3536CASE_SJIS_KANA,
3537CASE_SJIS_KANA,
3538CASE_SJIS_KANA,
3539CASE_SJIS_KANA,
3540/*      0xd4		0xd5		0xd6		0xd7	*/
3541CASE_SJIS_KANA,
3542CASE_SJIS_KANA,
3543CASE_SJIS_KANA,
3544CASE_SJIS_KANA,
3545/*      0xd8		0xd9		0xda		0xdb	*/
3546CASE_SJIS_KANA,
3547CASE_SJIS_KANA,
3548CASE_SJIS_KANA,
3549CASE_SJIS_KANA,
3550/*      0xdc		0xdd		0xde		0xdf	*/
3551CASE_SJIS_KANA,
3552CASE_SJIS_KANA,
3553CASE_SJIS_KANA,
3554CASE_SJIS_KANA,
3555/*      0xe0		0xe1		0xe2		0xe3	*/
3556CASE_SJIS_INSTRING,
3557CASE_SJIS_INSTRING,
3558CASE_SJIS_INSTRING,
3559CASE_SJIS_INSTRING,
3560/*      0xe4		0xe5		0xe6		0xe7	*/
3561CASE_SJIS_INSTRING,
3562CASE_SJIS_INSTRING,
3563CASE_SJIS_INSTRING,
3564CASE_SJIS_INSTRING,
3565/*      0xe8		0xe9		0xea		0xeb	*/
3566CASE_SJIS_INSTRING,
3567CASE_SJIS_INSTRING,
3568CASE_SJIS_INSTRING,
3569CASE_SJIS_INSTRING,
3570/*      0xec		0xed		0xee		0xef	*/
3571CASE_SJIS_INSTRING,
3572CASE_SJIS_INSTRING,
3573CASE_SJIS_INSTRING,
3574CASE_SJIS_INSTRING,
3575/*      0xf0		0xf1		0xf2		0xf3	*/
3576CASE_SJIS_INSTRING,
3577CASE_SJIS_INSTRING,
3578CASE_SJIS_INSTRING,
3579CASE_SJIS_INSTRING,
3580/*      0xf4		0xf5		0xf6		0xf7	*/
3581CASE_SJIS_INSTRING,
3582CASE_SJIS_INSTRING,
3583CASE_SJIS_INSTRING,
3584CASE_SJIS_INSTRING,
3585/*      0xf8		0xf9		0xfa		0xfb	*/
3586CASE_SJIS_INSTRING,
3587CASE_SJIS_INSTRING,
3588CASE_SJIS_INSTRING,
3589CASE_SJIS_INSTRING,
3590/*      0xfc		0xfd		0xfe		0xff	*/
3591CASE_SJIS_INSTRING,
3592CASE_SJIS_INSTRING,
3593CASE_SJIS_INSTRING,
3594CASE_SJIS_INSTRING,
3595};
3596
3597/*
3598 * 94/96 alternative character sets for G0-G3
3599 *
3600 * - characters to replace are UTF-8 literals
3601 * - NULL mean falling through to corresponding ASCII chars
3602 *
3603 */
3604
3605/* DEC Special Graphic Character Set - mix of xterm
3606   definitions and ncurses extended characters (ACS_)  */
3607const char* gLineDrawGraphSet[96] =
3608{
3609//	SP		!		"		#
3610NULL,
3611NULL,
3612NULL,
3613NULL,
3614
3615//	$		%		&		'
3616NULL,
3617NULL,
3618NULL,
3619NULL,
3620
3621//	(		)		*		+
3622NULL,
3623NULL,
3624NULL,
3625"\xE2\x86\x92", // ACS_RARROW
3626
3627//	,		-		.		/
3628"\xE2\x86\x90", // ACS_LARROW
3629"\xE2\x86\x91", // ACS_UARROW
3630"\xE2\x86\x93", // ACS_DARROW
3631NULL,
3632
3633//	0		1		2		3
3634"\xE2\x96\xAE", // ACS_BLOCK
3635NULL,
3636NULL,
3637NULL,
3638
3639//	4		5		6		7
3640NULL,
3641NULL,
3642NULL,
3643NULL,
3644
3645//	8		9		:		;
3646NULL,
3647NULL,
3648NULL,
3649NULL,
3650
3651//	<		=		>		?
3652NULL,
3653NULL,
3654NULL,
3655NULL,
3656
3657//	@		A		B		C
3658NULL,
3659NULL,
3660NULL,
3661NULL,
3662
3663//	D		E		F		G
3664NULL,
3665NULL,
3666NULL,
3667NULL,
3668
3669//	H		I		J		K
3670NULL,
3671NULL,
3672NULL,
3673NULL,
3674
3675//	L		M		N		O
3676NULL,
3677NULL,
3678NULL,
3679NULL,
3680
3681//	P		Q		R		S
3682NULL,
3683NULL,
3684NULL,
3685NULL,
3686
3687//	T		U		V		W
3688NULL,
3689NULL,
3690NULL,
3691NULL,
3692
3693//	X		Y		Z		[
3694NULL,
3695NULL,
3696NULL,
3697NULL,
3698//	\		]		^		_
3699NULL,
3700NULL,
3701NULL,
3702"\xE2\x96\xAE", // xterm: black vertical rectangle
3703
3704//	`		a		b		c
3705"\xE2\x97\x86", // ACS_DIAMOND
3706"\xE2\x96\x92", // ACS_CKBOARD
3707"\xE2\x90\x89", // xterm:symbol for horizontal tabulation
3708"\xE2\x90\x8C", // xterm:symbol for form feed
3709
3710//	d		e		f		g
3711"\xE2\x90\x8D", // xterm:symbol for carriage return
3712"\xE2\x90\x8A", // xterm:symbol for line feed
3713"\xC2\xB0", // ACS_DEGREE
3714"\xC2\xB1", // ACS_PLMINUS
3715
3716//	h		i		j		k
3717"\xE2\x90\xA4", // xterm:symbol for newline (ACS_BOARD)
3718"\xE2\x98\x83", // ACS_LANTERN (xterm:symbol for vert.tab: \xE2\x90\x8B)
3719"\xE2\x94\x98", // ACS_LRCORNER
3720"\xE2\x94\x90", // ACS_URCORNER
3721
3722//	l		m		n		o
3723"\xE2\x94\x8C", // ACS_ULCORNER
3724"\xE2\x94\x94", // ACS_LLCORNER
3725"\xE2\x94\xBC", // ACS_PLUS
3726"\xE2\x8E\xBA", // ACS_S1
3727
3728//	p		q		r		s
3729"\xE2\x8E\xBB", // ACS_S3
3730"\xE2\x94\x80", // ACS_HLINE
3731"\xE2\x8E\xBC", // ACS_S7
3732"\xE2\x8E\xBD", // ACS_S9
3733
3734//	t		u		v		w
3735"\xE2\x94\x9C", // ACS_LTEE
3736"\xE2\x94\xA4", // ACS_RTEE
3737"\xE2\x94\xB4", // ACS_BTEE
3738"\xE2\x94\xAC", // ACS_TTEE
3739
3740//	x		y		z		{
3741"\xE2\x94\x82", // ACS_VLINE
3742"\xE2\x89\xA4", // ACS_LEQUAL
3743"\xE2\x89\xA5", // ACS_GEQUAL
3744"\xCF\x80", // ACS_PI
3745
3746//	|		}		~		DEL
3747"\xE2\x89\xA0", // ACS_NEQUAL
3748"\xC2\xA3", // ACS_STERLING
3749"\xC2\xB7", // ACS_BULLET
3750NULL
3751};
3752