xref: /haiku/src/apps/terminal/VTPrsTbl.c (revision b671e9bbdbd10268a042b4f4cc4317ccd03d105e)
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  * Permission is hereby granted, free of charge, to any person obtaining
6  * a copy of this software and associated documentation files or portions
7  * thereof (the "Software"), to deal in the Software without restriction,
8  * including without limitation the rights to use, copy, modify, merge,
9  * publish, distribute, sublicense, and/or sell copies of the Software,
10  * and to permit persons to whom the Software is furnished to do so, subject
11  * to the following conditions:
12  *
13  *  * Redistributions of source code must retain the above copyright notice,
14  *    this list of conditions and the following disclaimer.
15  *
16  *  * Redistributions in binary form must reproduce the above copyright notice
17  *    in the  binary, as well as this list of conditions and the following
18  *    disclaimer in the documentation and/or other materials provided with
19  *    the distribution.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27  * THE SOFTWARE.
28  *
29  */
30 
31 #include "VTparse.h"
32 
33 #define USE_MBCS
34 #define USE_ISO2022
35 
36 // #pragma mark UTF8 coding ground table
37 int gUTF8GroundTable[] =
38 {
39 /*	NUL		SOH		STX		ETX	*/
40 CASE_IGNORE,
41 CASE_IGNORE,
42 CASE_IGNORE,
43 CASE_IGNORE,
44 /*	EOT		ENQ		ACK		BEL	*/
45 CASE_IGNORE,
46 CASE_IGNORE,
47 CASE_IGNORE,
48 CASE_BELL,
49 /*	BS		HT		NL		VT	*/
50 CASE_BS,
51 CASE_TAB,
52 CASE_LF,
53 CASE_LF, /* CASE_UP*/
54 /*	NP		CR		SO		SI	*/
55 CASE_LF, /* CASE_IGNORE*/
56 CASE_CR,
57 CASE_SO,
58 CASE_SI,
59 /*	DLE		DC1		DC2		DC3	*/
60 CASE_IGNORE,
61 CASE_IGNORE,
62 CASE_IGNORE,
63 CASE_IGNORE,
64 /*	DC4		NAK		SYN		ETB	*/
65 CASE_IGNORE,
66 CASE_IGNORE,
67 CASE_IGNORE,
68 CASE_IGNORE,
69 /*	CAN		EM		SUB		ESC	*/
70 CASE_IGNORE,
71 CASE_IGNORE,
72 CASE_IGNORE,
73 CASE_ESC,
74 /*	FS		GS		RS		US	*/
75 CASE_IGNORE,
76 CASE_IGNORE,
77 CASE_IGNORE,
78 CASE_IGNORE,
79 /*	SP		!		"		#	*/
80 CASE_PRINT,
81 CASE_PRINT,
82 CASE_PRINT,
83 CASE_PRINT,
84 /*	$		%		&		'	*/
85 CASE_PRINT,
86 CASE_PRINT,
87 CASE_PRINT,
88 CASE_PRINT,
89 /*	(		)		*		+	*/
90 CASE_PRINT,
91 CASE_PRINT,
92 CASE_PRINT,
93 CASE_PRINT,
94 /*	,		-		.		/	*/
95 CASE_PRINT,
96 CASE_PRINT,
97 CASE_PRINT,
98 CASE_PRINT,
99 /*	0		1		2		3	*/
100 CASE_PRINT,
101 CASE_PRINT,
102 CASE_PRINT,
103 CASE_PRINT,
104 /*	4		5		6		7	*/
105 CASE_PRINT,
106 CASE_PRINT,
107 CASE_PRINT,
108 CASE_PRINT,
109 /*	8		9		:		;	*/
110 CASE_PRINT,
111 CASE_PRINT,
112 CASE_PRINT,
113 CASE_PRINT,
114 /*	<		=		>		?	*/
115 CASE_PRINT,
116 CASE_PRINT,
117 CASE_PRINT,
118 CASE_PRINT,
119 /*	@		A		B		C	*/
120 CASE_PRINT,
121 CASE_PRINT,
122 CASE_PRINT,
123 CASE_PRINT,
124 /*	D		E		F		G	*/
125 CASE_PRINT,
126 CASE_PRINT,
127 CASE_PRINT,
128 CASE_PRINT,
129 /*	H		I		J		K	*/
130 CASE_PRINT,
131 CASE_PRINT,
132 CASE_PRINT,
133 CASE_PRINT,
134 /*	L		M		N		O	*/
135 CASE_PRINT,
136 CASE_PRINT,
137 CASE_PRINT,
138 CASE_PRINT,
139 /*	P		Q		R		S	*/
140 CASE_PRINT,
141 CASE_PRINT,
142 CASE_PRINT,
143 CASE_PRINT,
144 /*	T		U		V		W	*/
145 CASE_PRINT,
146 CASE_PRINT,
147 CASE_PRINT,
148 CASE_PRINT,
149 /*	X		Y		Z		[	*/
150 CASE_PRINT,
151 CASE_PRINT,
152 CASE_PRINT,
153 CASE_PRINT,
154 /*	\		]		^		_	*/
155 CASE_PRINT,
156 CASE_PRINT,
157 CASE_PRINT,
158 CASE_PRINT,
159 /*	`		a		b		c	*/
160 CASE_PRINT,
161 CASE_PRINT,
162 CASE_PRINT,
163 CASE_PRINT,
164 /*	d		e		f		g	*/
165 CASE_PRINT,
166 CASE_PRINT,
167 CASE_PRINT,
168 CASE_PRINT,
169 /*	h		i		j		k	*/
170 CASE_PRINT,
171 CASE_PRINT,
172 CASE_PRINT,
173 CASE_PRINT,
174 /*	l		m		n		o	*/
175 CASE_PRINT,
176 CASE_PRINT,
177 CASE_PRINT,
178 CASE_PRINT,
179 /*	p		q		r		s	*/
180 CASE_PRINT,
181 CASE_PRINT,
182 CASE_PRINT,
183 CASE_PRINT,
184 /*	t		u		v		w	*/
185 CASE_PRINT,
186 CASE_PRINT,
187 CASE_PRINT,
188 CASE_PRINT,
189 /*	x		y		z		{	*/
190 CASE_PRINT,
191 CASE_PRINT,
192 CASE_PRINT,
193 CASE_PRINT,
194 /*	|		}		~		DEL	*/
195 CASE_PRINT,
196 CASE_PRINT,
197 CASE_PRINT,
198 CASE_IGNORE,
199 /*      0x80            0x81            0x82            0x83    */
200 CASE_UTF8_INSTRING,
201 CASE_UTF8_INSTRING,
202 CASE_UTF8_INSTRING,
203 CASE_UTF8_INSTRING,
204 /*      0x84            0x85            0x86            0x87    */
205 CASE_UTF8_INSTRING,
206 CASE_UTF8_INSTRING,
207 CASE_UTF8_INSTRING,
208 CASE_UTF8_INSTRING,
209 /*      0x88            0x89            0x8a            0x8b    */
210 CASE_UTF8_INSTRING,
211 CASE_UTF8_INSTRING,
212 CASE_UTF8_INSTRING,
213 CASE_UTF8_INSTRING,
214 /*      0x8c            0x8d            0x8e            0x8f    */
215 CASE_UTF8_INSTRING,
216 CASE_UTF8_INSTRING,
217 CASE_UTF8_INSTRING,
218 CASE_UTF8_INSTRING,
219 /*      0x90            0x91            0x92            0x93    */
220 CASE_UTF8_INSTRING,
221 CASE_UTF8_INSTRING,
222 CASE_UTF8_INSTRING,
223 CASE_UTF8_INSTRING,
224 /*      0x94            0x95            0x96            0x97    */
225 CASE_UTF8_INSTRING,
226 CASE_UTF8_INSTRING,
227 CASE_UTF8_INSTRING,
228 CASE_UTF8_INSTRING,
229 /*      0x99            0x99            0x9a            0x9b    */
230 CASE_UTF8_INSTRING,
231 CASE_UTF8_INSTRING,
232 CASE_UTF8_INSTRING,
233 CASE_UTF8_INSTRING,
234 /*      0x9c            0x9d            0x9e            0x9f    */
235 CASE_UTF8_INSTRING,
236 CASE_UTF8_INSTRING,
237 CASE_UTF8_INSTRING,
238 CASE_UTF8_INSTRING,
239 /*      0xa0		0xa1		0xa2		0xa3	*/
240 CASE_UTF8_INSTRING,
241 CASE_UTF8_INSTRING,
242 CASE_UTF8_INSTRING,
243 CASE_UTF8_INSTRING,
244 /*      0xa4		0xa5		0xa6		0xa7	*/
245 CASE_UTF8_INSTRING,
246 CASE_UTF8_INSTRING,
247 CASE_UTF8_INSTRING,
248 CASE_UTF8_INSTRING,
249 /*      0xa8		0xa9		0xaa		0xab	*/
250 CASE_UTF8_INSTRING,
251 CASE_UTF8_INSTRING,
252 CASE_UTF8_INSTRING,
253 CASE_UTF8_INSTRING,
254 /*      0xac		0xad		0xae		0xaf	*/
255 CASE_UTF8_INSTRING,
256 CASE_UTF8_INSTRING,
257 CASE_UTF8_INSTRING,
258 CASE_UTF8_INSTRING,
259 /*      0xb0		0xb1		0xb2		0xb3	*/
260 CASE_UTF8_INSTRING,
261 CASE_UTF8_INSTRING,
262 CASE_UTF8_INSTRING,
263 CASE_UTF8_INSTRING,
264 /*      0xb4		0xb5		0xb6		0xb7	*/
265 CASE_UTF8_INSTRING,
266 CASE_UTF8_INSTRING,
267 CASE_UTF8_INSTRING,
268 CASE_UTF8_INSTRING,
269 /*      0xb8		0xb9		0xba		0xbb	*/
270 CASE_UTF8_INSTRING,
271 CASE_UTF8_INSTRING,
272 CASE_UTF8_INSTRING,
273 CASE_UTF8_INSTRING,
274 /*      0xbc		0xbd		0xbe		0xbf	*/
275 CASE_UTF8_INSTRING,
276 CASE_UTF8_INSTRING,
277 CASE_UTF8_INSTRING,
278 CASE_UTF8_INSTRING,
279 /*      0xc0		0xc1		0xc2		0xc3	*/
280 CASE_UTF8_2BYTE,
281 CASE_UTF8_2BYTE,
282 CASE_UTF8_2BYTE,
283 CASE_UTF8_2BYTE,
284 /*      0xc4		0xc5		0xc6		0xc7	*/
285 CASE_UTF8_2BYTE,
286 CASE_UTF8_2BYTE,
287 CASE_UTF8_2BYTE,
288 CASE_UTF8_2BYTE,
289 /*      0xc8		0xc9		0xca		0xcb	*/
290 CASE_UTF8_2BYTE,
291 CASE_UTF8_2BYTE,
292 CASE_UTF8_2BYTE,
293 CASE_UTF8_2BYTE,
294 /*      0xcc		0xcd		0xce		0xcf	*/
295 CASE_UTF8_2BYTE,
296 CASE_UTF8_2BYTE,
297 CASE_UTF8_2BYTE,
298 CASE_UTF8_2BYTE,
299 /*      0xd0		0xd1		0xd2		0xd3	*/
300 CASE_UTF8_2BYTE,
301 CASE_UTF8_2BYTE,
302 CASE_UTF8_2BYTE,
303 CASE_UTF8_2BYTE,
304 /*      0xd4		0xd5		0xd6		0xd7	*/
305 CASE_UTF8_2BYTE,
306 CASE_UTF8_2BYTE,
307 CASE_UTF8_2BYTE,
308 CASE_UTF8_2BYTE,
309 /*      0xd8		0xd9		0xda		0xdb	*/
310 CASE_UTF8_2BYTE,
311 CASE_UTF8_2BYTE,
312 CASE_UTF8_2BYTE,
313 CASE_UTF8_2BYTE,
314 /*      0xdc		0xdd		0xde		0xdf	*/
315 CASE_UTF8_2BYTE,
316 CASE_UTF8_2BYTE,
317 CASE_UTF8_2BYTE,
318 CASE_UTF8_2BYTE,
319 /*      0xe0		0xe1		0xe2		0xe3	*/
320 CASE_UTF8_3BYTE,
321 CASE_UTF8_3BYTE,
322 CASE_UTF8_3BYTE,
323 CASE_UTF8_3BYTE,
324 /*      0xe4		0xe5		0xe6		0xe7	*/
325 CASE_UTF8_3BYTE,
326 CASE_UTF8_3BYTE,
327 CASE_UTF8_3BYTE,
328 CASE_UTF8_3BYTE,
329 /*      0xe8		0xe9		0xea		0xeb	*/
330 CASE_UTF8_3BYTE,
331 CASE_UTF8_3BYTE,
332 CASE_UTF8_3BYTE,
333 CASE_UTF8_3BYTE,
334 /*      0xec		0xed		0xee		0xef	*/
335 CASE_UTF8_3BYTE,
336 CASE_UTF8_3BYTE,
337 CASE_UTF8_3BYTE,
338 CASE_UTF8_3BYTE,
339 /*      0xf0		0xf1		0xf2		0xf3	*/
340 CASE_UTF8_3BYTE,
341 CASE_UTF8_3BYTE,
342 CASE_UTF8_3BYTE,
343 CASE_UTF8_3BYTE,
344 /*      0xf4		0xf5		0xf6		0xf7	*/
345 CASE_UTF8_3BYTE,
346 CASE_UTF8_3BYTE,
347 CASE_UTF8_3BYTE,
348 CASE_UTF8_3BYTE,
349 /*      0xf8		0xf9		0xfa		0xfb	*/
350 CASE_UTF8_3BYTE,
351 CASE_UTF8_3BYTE,
352 CASE_UTF8_3BYTE,
353 CASE_UTF8_3BYTE,
354 /*      0xfc		0xfd		0xfe		0xff	*/
355 CASE_UTF8_3BYTE,
356 CASE_UTF8_3BYTE,
357 CASE_UTF8_3BYTE,
358 CASE_UTF8_3BYTE,
359 };
360 
361 // #pragma mark charset 96 table
362 int gCS96GroundTable[] =
363 {
364 /*	NUL		SOH		STX		ETX	*/
365 CASE_IGNORE,
366 CASE_IGNORE,
367 CASE_IGNORE,
368 CASE_IGNORE,
369 /*	EOT		ENQ		ACK		BEL	*/
370 CASE_IGNORE,
371 CASE_IGNORE,
372 CASE_IGNORE,
373 CASE_BELL,
374 /*	BS		HT		NL		VT	*/
375 CASE_BS,
376 CASE_TAB,
377 CASE_LF,
378 CASE_LF, /* CASE_UP*/
379 /*	NP		CR		SO		SI	*/
380 CASE_LF, /* CASE_IGNORE*/
381 CASE_CR,
382 CASE_SO,
383 CASE_SI,
384 /*	DLE		DC1		DC2		DC3	*/
385 CASE_IGNORE,
386 CASE_IGNORE,
387 CASE_IGNORE,
388 CASE_IGNORE,
389 /*	DC4		NAK		SYN		ETB	*/
390 CASE_IGNORE,
391 CASE_IGNORE,
392 CASE_IGNORE,
393 CASE_IGNORE,
394 /*	CAN		EM		SUB		ESC	*/
395 CASE_IGNORE,
396 CASE_IGNORE,
397 CASE_IGNORE,
398 CASE_ESC,
399 /*	FS		GS		RS		US	*/
400 CASE_IGNORE,
401 CASE_IGNORE,
402 CASE_IGNORE,
403 CASE_IGNORE,
404 /*	SP		!		"		#	*/
405 CASE_PRINT_CS96,
406 CASE_PRINT_CS96,
407 CASE_PRINT_CS96,
408 CASE_PRINT_CS96,
409 /*	$		%		&		'	*/
410 CASE_PRINT_CS96,
411 CASE_PRINT_CS96,
412 CASE_PRINT_CS96,
413 CASE_PRINT_CS96,
414 /*	(		)		*		+	*/
415 CASE_PRINT_CS96,
416 CASE_PRINT_CS96,
417 CASE_PRINT_CS96,
418 CASE_PRINT_CS96,
419 /*	,		-		.		/	*/
420 CASE_PRINT_CS96,
421 CASE_PRINT_CS96,
422 CASE_PRINT_CS96,
423 CASE_PRINT_CS96,
424 /*	0		1		2		3	*/
425 CASE_PRINT_CS96,
426 CASE_PRINT_CS96,
427 CASE_PRINT_CS96,
428 CASE_PRINT_CS96,
429 /*	4		5		6		7	*/
430 CASE_PRINT_CS96,
431 CASE_PRINT_CS96,
432 CASE_PRINT_CS96,
433 CASE_PRINT_CS96,
434 /*	8		9		:		;	*/
435 CASE_PRINT_CS96,
436 CASE_PRINT_CS96,
437 CASE_PRINT_CS96,
438 CASE_PRINT_CS96,
439 /*	<		=		>		?	*/
440 CASE_PRINT_CS96,
441 CASE_PRINT_CS96,
442 CASE_PRINT_CS96,
443 CASE_PRINT_CS96,
444 /*	@		A		B		C	*/
445 CASE_PRINT_CS96,
446 CASE_PRINT_CS96,
447 CASE_PRINT_CS96,
448 CASE_PRINT_CS96,
449 /*	D		E		F		G	*/
450 CASE_PRINT_CS96,
451 CASE_PRINT_CS96,
452 CASE_PRINT_CS96,
453 CASE_PRINT_CS96,
454 /*	H		I		J		K	*/
455 CASE_PRINT_CS96,
456 CASE_PRINT_CS96,
457 CASE_PRINT_CS96,
458 CASE_PRINT_CS96,
459 /*	L		M		N		O	*/
460 CASE_PRINT_CS96,
461 CASE_PRINT_CS96,
462 CASE_PRINT_CS96,
463 CASE_PRINT_CS96,
464 /*	P		Q		R		S	*/
465 CASE_PRINT_CS96,
466 CASE_PRINT_CS96,
467 CASE_PRINT_CS96,
468 CASE_PRINT_CS96,
469 /*	T		U		V		W	*/
470 CASE_PRINT_CS96,
471 CASE_PRINT_CS96,
472 CASE_PRINT_CS96,
473 CASE_PRINT_CS96,
474 /*	X		Y		Z		[	*/
475 CASE_PRINT_CS96,
476 CASE_PRINT_CS96,
477 CASE_PRINT_CS96,
478 CASE_PRINT_CS96,
479 /*	\		]		^		_	*/
480 CASE_PRINT_CS96,
481 CASE_PRINT_CS96,
482 CASE_PRINT_CS96,
483 CASE_PRINT_CS96,
484 /*	`		a		b		c	*/
485 CASE_PRINT_CS96,
486 CASE_PRINT_CS96,
487 CASE_PRINT_CS96,
488 CASE_PRINT_CS96,
489 /*	d		e		f		g	*/
490 CASE_PRINT_CS96,
491 CASE_PRINT_CS96,
492 CASE_PRINT_CS96,
493 CASE_PRINT_CS96,
494 /*	h		i		j		k	*/
495 CASE_PRINT_CS96,
496 CASE_PRINT_CS96,
497 CASE_PRINT_CS96,
498 CASE_PRINT_CS96,
499 /*	l		m		n		o	*/
500 CASE_PRINT_CS96,
501 CASE_PRINT_CS96,
502 CASE_PRINT_CS96,
503 CASE_PRINT_CS96,
504 /*	p		q		r		s	*/
505 CASE_PRINT_CS96,
506 CASE_PRINT_CS96,
507 CASE_PRINT_CS96,
508 CASE_PRINT_CS96,
509 /*	t		u		v		w	*/
510 CASE_PRINT_CS96,
511 CASE_PRINT_CS96,
512 CASE_PRINT_CS96,
513 CASE_PRINT_CS96,
514 /*	x		y		z		{	*/
515 CASE_PRINT_CS96,
516 CASE_PRINT_CS96,
517 CASE_PRINT_CS96,
518 CASE_PRINT_CS96,
519 /*	|		}		~		DEL	*/
520 CASE_PRINT_CS96,
521 CASE_PRINT_CS96,
522 CASE_PRINT_CS96,
523 CASE_PRINT_CS96,
524 /*      0x80            0x81            0x82            0x83    */
525 CASE_IGNORE,
526 CASE_IGNORE,
527 CASE_IGNORE,
528 CASE_IGNORE,
529 /*      0x84            0x85            0x86            0x87    */
530 CASE_IGNORE,
531 CASE_IGNORE,
532 CASE_IGNORE,
533 CASE_IGNORE,
534 /*      0x88            0x89            0x8a            0x8b    */
535 CASE_IGNORE,
536 CASE_IGNORE,
537 CASE_IGNORE,
538 CASE_IGNORE,
539 /*      0x8c            0x8d            0x8e            0x8f    */
540 CASE_IGNORE,
541 CASE_IGNORE,
542 CASE_IGNORE,
543 CASE_IGNORE,
544 /*      0x90            0x91            0x92            0x93    */
545 CASE_IGNORE,
546 CASE_IGNORE,
547 CASE_IGNORE,
548 CASE_IGNORE,
549 /*      0x94            0x95            0x96            0x97    */
550 CASE_IGNORE,
551 CASE_IGNORE,
552 CASE_IGNORE,
553 CASE_IGNORE,
554 /*      0x99            0x99            0x9a            0x9b    */
555 CASE_IGNORE,
556 CASE_IGNORE,
557 CASE_IGNORE,
558 CASE_IGNORE,
559 /*      0x9c            0x9d            0x9e            0x9f    */
560 CASE_IGNORE,
561 CASE_IGNORE,
562 CASE_IGNORE,
563 CASE_IGNORE,
564 /*      0xa0		0xa1		0xa2		0xa3	*/
565 CASE_IGNORE,
566 CASE_IGNORE,
567 CASE_IGNORE,
568 CASE_IGNORE,
569 /*      0xa4		0xa5		0xa6		0xa7	*/
570 CASE_IGNORE,
571 CASE_IGNORE,
572 CASE_IGNORE,
573 CASE_IGNORE,
574 /*      0xa8		0xa9		0xaa		0xab	*/
575 CASE_IGNORE,
576 CASE_IGNORE,
577 CASE_IGNORE,
578 CASE_IGNORE,
579 /*      0xac		0xad		0xae		0xaf	*/
580 CASE_IGNORE,
581 CASE_IGNORE,
582 CASE_IGNORE,
583 CASE_IGNORE,
584 /*      0xb0		0xb1		0xb2		0xb3	*/
585 CASE_IGNORE,
586 CASE_IGNORE,
587 CASE_IGNORE,
588 CASE_IGNORE,
589 /*      0xb4		0xb5		0xb6		0xb7	*/
590 CASE_IGNORE,
591 CASE_IGNORE,
592 CASE_IGNORE,
593 CASE_IGNORE,
594 /*      0xb8		0xb9		0xba		0xbb	*/
595 CASE_IGNORE,
596 CASE_IGNORE,
597 CASE_IGNORE,
598 CASE_IGNORE,
599 /*      0xbc		0xbd		0xbe		0xbf	*/
600 CASE_IGNORE,
601 CASE_IGNORE,
602 CASE_IGNORE,
603 CASE_IGNORE,
604 /*      0xc0		0xc1		0xc2		0xc3	*/
605 CASE_IGNORE,
606 CASE_IGNORE,
607 CASE_IGNORE,
608 CASE_IGNORE,
609 /*      0xc4		0xc5		0xc6		0xc7	*/
610 CASE_IGNORE,
611 CASE_IGNORE,
612 CASE_IGNORE,
613 CASE_IGNORE,
614 /*      0xc8		0xc9		0xca		0xcb	*/
615 CASE_IGNORE,
616 CASE_IGNORE,
617 CASE_IGNORE,
618 CASE_IGNORE,
619 /*      0xcc		0xcd		0xce		0xcf	*/
620 CASE_IGNORE,
621 CASE_IGNORE,
622 CASE_IGNORE,
623 CASE_IGNORE,
624 /*      0xd0		0xd1		0xd2		0xd3	*/
625 CASE_IGNORE,
626 CASE_IGNORE,
627 CASE_IGNORE,
628 CASE_IGNORE,
629 /*      0xd4		0xd5		0xd6		0xd7	*/
630 CASE_IGNORE,
631 CASE_IGNORE,
632 CASE_IGNORE,
633 CASE_IGNORE,
634 /*      0xd8		0xd9		0xda		0xdb	*/
635 CASE_IGNORE,
636 CASE_IGNORE,
637 CASE_IGNORE,
638 CASE_IGNORE,
639 /*      0xdc		0xdd		0xde		0xdf	*/
640 CASE_IGNORE,
641 CASE_IGNORE,
642 CASE_IGNORE,
643 CASE_IGNORE,
644 /*      0xe0		0xe1		0xe2		0xe3	*/
645 CASE_IGNORE,
646 CASE_IGNORE,
647 CASE_IGNORE,
648 CASE_IGNORE,
649 /*      0xe4		0xe5		0xe6		0xe7	*/
650 CASE_IGNORE,
651 CASE_IGNORE,
652 CASE_IGNORE,
653 CASE_IGNORE,
654 /*      0xe8		0xe9		0xea		0xeb	*/
655 CASE_IGNORE,
656 CASE_IGNORE,
657 CASE_IGNORE,
658 CASE_IGNORE,
659 /*      0xec		0xed		0xee		0xef	*/
660 CASE_IGNORE,
661 CASE_IGNORE,
662 CASE_IGNORE,
663 CASE_IGNORE,
664 /*      0xf0		0xf1		0xf2		0xf3	*/
665 CASE_IGNORE,
666 CASE_IGNORE,
667 CASE_IGNORE,
668 CASE_IGNORE,
669 /*      0xf4		0xf5		0xf6		0xf7	*/
670 CASE_IGNORE,
671 CASE_IGNORE,
672 CASE_IGNORE,
673 CASE_IGNORE,
674 /*      0xf8		0xf9		0xfa		0xfb	*/
675 CASE_IGNORE,
676 CASE_IGNORE,
677 CASE_IGNORE,
678 CASE_IGNORE,
679 /*      0xfc		0xfd		0xfe		0xff	*/
680 CASE_IGNORE,
681 CASE_IGNORE,
682 CASE_IGNORE,
683 CASE_IGNORE,
684 };
685 
686 // #pragma mark ISO8859 table
687 int gISO8859GroundTable[] =
688 {
689 /*	NUL		SOH		STX		ETX	*/
690 CASE_IGNORE,
691 CASE_IGNORE,
692 CASE_IGNORE,
693 CASE_IGNORE,
694 /*	EOT		ENQ		ACK		BEL	*/
695 CASE_IGNORE,
696 CASE_IGNORE,
697 CASE_IGNORE,
698 CASE_BELL,
699 /*	BS		HT		NL		VT	*/
700 CASE_BS,
701 CASE_TAB,
702 CASE_LF,
703 CASE_LF, /*CASE_UP,*/
704 /*	NP		CR		SO		SI	*/
705 CASE_LF, /*CASE_IGNORE,*/
706 CASE_CR,
707 CASE_SO,
708 CASE_SI,
709 /*	DLE		DC1		DC2		DC3	*/
710 CASE_IGNORE,
711 CASE_IGNORE,
712 CASE_IGNORE,
713 CASE_IGNORE,
714 /*	DC4		NAK		SYN		ETB	*/
715 CASE_IGNORE,
716 CASE_IGNORE,
717 CASE_IGNORE,
718 CASE_IGNORE,
719 /*	CAN		EM		SUB		ESC	*/
720 CASE_IGNORE,
721 CASE_IGNORE,
722 CASE_IGNORE,
723 CASE_ESC,
724 /*	FS		GS		RS		US	*/
725 CASE_IGNORE,
726 CASE_IGNORE,
727 CASE_IGNORE,
728 CASE_IGNORE,
729 /*	SP		!		"		#	*/
730 CASE_PRINT,
731 CASE_PRINT,
732 CASE_PRINT,
733 CASE_PRINT,
734 /*	$		%		&		'	*/
735 CASE_PRINT,
736 CASE_PRINT,
737 CASE_PRINT,
738 CASE_PRINT,
739 /*	(		)		*		+	*/
740 CASE_PRINT,
741 CASE_PRINT,
742 CASE_PRINT,
743 CASE_PRINT,
744 /*	,		-		.		/	*/
745 CASE_PRINT,
746 CASE_PRINT,
747 CASE_PRINT,
748 CASE_PRINT,
749 /*	0		1		2		3	*/
750 CASE_PRINT,
751 CASE_PRINT,
752 CASE_PRINT,
753 CASE_PRINT,
754 /*	4		5		6		7	*/
755 CASE_PRINT,
756 CASE_PRINT,
757 CASE_PRINT,
758 CASE_PRINT,
759 /*	8		9		:		;	*/
760 CASE_PRINT,
761 CASE_PRINT,
762 CASE_PRINT,
763 CASE_PRINT,
764 /*	<		=		>		?	*/
765 CASE_PRINT,
766 CASE_PRINT,
767 CASE_PRINT,
768 CASE_PRINT,
769 /*	@		A		B		C	*/
770 CASE_PRINT,
771 CASE_PRINT,
772 CASE_PRINT,
773 CASE_PRINT,
774 /*	D		E		F		G	*/
775 CASE_PRINT,
776 CASE_PRINT,
777 CASE_PRINT,
778 CASE_PRINT,
779 /*	H		I		J		K	*/
780 CASE_PRINT,
781 CASE_PRINT,
782 CASE_PRINT,
783 CASE_PRINT,
784 /*	L		M		N		O	*/
785 CASE_PRINT,
786 CASE_PRINT,
787 CASE_PRINT,
788 CASE_PRINT,
789 /*	P		Q		R		S	*/
790 CASE_PRINT,
791 CASE_PRINT,
792 CASE_PRINT,
793 CASE_PRINT,
794 /*	T		U		V		W	*/
795 CASE_PRINT,
796 CASE_PRINT,
797 CASE_PRINT,
798 CASE_PRINT,
799 /*	X		Y		Z		[	*/
800 CASE_PRINT,
801 CASE_PRINT,
802 CASE_PRINT,
803 CASE_PRINT,
804 /*	\		]		^		_	*/
805 CASE_PRINT,
806 CASE_PRINT,
807 CASE_PRINT,
808 CASE_PRINT,
809 /*	`		a		b		c	*/
810 CASE_PRINT,
811 CASE_PRINT,
812 CASE_PRINT,
813 CASE_PRINT,
814 /*	d		e		f		g	*/
815 CASE_PRINT,
816 CASE_PRINT,
817 CASE_PRINT,
818 CASE_PRINT,
819 /*	h		i		j		k	*/
820 CASE_PRINT,
821 CASE_PRINT,
822 CASE_PRINT,
823 CASE_PRINT,
824 /*	l		m		n		o	*/
825 CASE_PRINT,
826 CASE_PRINT,
827 CASE_PRINT,
828 CASE_PRINT,
829 /*	p		q		r		s	*/
830 CASE_PRINT,
831 CASE_PRINT,
832 CASE_PRINT,
833 CASE_PRINT,
834 /*	t		u		v		w	*/
835 CASE_PRINT,
836 CASE_PRINT,
837 CASE_PRINT,
838 CASE_PRINT,
839 /*	x		y		z		{	*/
840 CASE_PRINT,
841 CASE_PRINT,
842 CASE_PRINT,
843 CASE_PRINT,
844 /*	|		}		~		DEL	*/
845 CASE_PRINT,
846 CASE_PRINT,
847 CASE_PRINT,
848 CASE_PRINT,
849 /*      0x80            0x81            0x82            0x83    */
850 CASE_IGNORE,
851 CASE_IGNORE,
852 CASE_IGNORE,
853 CASE_IGNORE,
854 /*      0x84            0x85            0x86            0x87    */
855 CASE_IGNORE,
856 CASE_IGNORE,
857 CASE_IGNORE,
858 CASE_IGNORE,
859 /*      0x88            0x89            0x8a            0x8b    */
860 CASE_IGNORE,
861 CASE_IGNORE,
862 CASE_IGNORE,
863 CASE_IGNORE,
864 /*      0x8c            0x8d            0x8e            0x8f    */
865 CASE_IGNORE,
866 CASE_IGNORE,
867 CASE_SS2,
868 CASE_SS3,
869 /*      0x90            0x91            0x92            0x93    */
870 CASE_IGNORE,
871 CASE_IGNORE,
872 CASE_IGNORE,
873 CASE_IGNORE,
874 /*      0x94            0x95            0x96            0x97    */
875 CASE_IGNORE,
876 CASE_IGNORE,
877 CASE_IGNORE,
878 CASE_IGNORE,
879 /*      0x99            0x99            0x9a            0x9b    */
880 CASE_IGNORE,
881 CASE_IGNORE,
882 CASE_IGNORE,
883 CASE_CSI_STATE,
884 /*      0x9c            0x9d            0x9e            0x9f    */
885 CASE_IGNORE,
886 CASE_IGNORE,
887 CASE_IGNORE,
888 CASE_IGNORE,
889 /*      nobreakspace    exclamdown      cent            sterling        */
890 CASE_PRINT_GR,
891 CASE_PRINT_GR,
892 CASE_PRINT_GR,
893 CASE_PRINT_GR,
894 /*      currency        yen             brokenbar       section         */
895 CASE_PRINT_GR,
896 CASE_PRINT_GR,
897 CASE_PRINT_GR,
898 CASE_PRINT_GR,
899 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
900 CASE_PRINT_GR,
901 CASE_PRINT_GR,
902 CASE_PRINT_GR,
903 CASE_PRINT_GR,
904 /*      notsign         hyphen          registered      macron          */
905 CASE_PRINT_GR,
906 CASE_PRINT_GR,
907 CASE_PRINT_GR,
908 CASE_PRINT_GR,
909 /*      degree          plusminus       twosuperior     threesuperior   */
910 CASE_PRINT_GR,
911 CASE_PRINT_GR,
912 CASE_PRINT_GR,
913 CASE_PRINT_GR,
914 /*      acute           mu              paragraph       periodcentered  */
915 CASE_PRINT_GR,
916 CASE_PRINT_GR,
917 CASE_PRINT_GR,
918 CASE_PRINT_GR,
919 /*      cedilla         onesuperior     masculine       guillemotright  */
920 CASE_PRINT_GR,
921 CASE_PRINT_GR,
922 CASE_PRINT_GR,
923 CASE_PRINT_GR,
924 /*      onequarter      onehalf         threequarters   questiondown    */
925 CASE_PRINT_GR,
926 CASE_PRINT_GR,
927 CASE_PRINT_GR,
928 CASE_PRINT_GR,
929 /*      Agrave          Aacute          Acircumflex     Atilde          */
930 CASE_PRINT_GR,
931 CASE_PRINT_GR,
932 CASE_PRINT_GR,
933 CASE_PRINT_GR,
934 /*      Adiaeresis      Aring           AE              Ccedilla        */
935 CASE_PRINT_GR,
936 CASE_PRINT_GR,
937 CASE_PRINT_GR,
938 CASE_PRINT_GR,
939 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
940 CASE_PRINT_GR,
941 CASE_PRINT_GR,
942 CASE_PRINT_GR,
943 CASE_PRINT_GR,
944 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
945 CASE_PRINT_GR,
946 CASE_PRINT_GR,
947 CASE_PRINT_GR,
948 CASE_PRINT_GR,
949 /*      Eth             Ntilde          Ograve          Oacute          */
950 CASE_PRINT_GR,
951 CASE_PRINT_GR,
952 CASE_PRINT_GR,
953 CASE_PRINT_GR,
954 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
955 CASE_PRINT_GR,
956 CASE_PRINT_GR,
957 CASE_PRINT_GR,
958 CASE_PRINT_GR,
959 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
960 CASE_PRINT_GR,
961 CASE_PRINT_GR,
962 CASE_PRINT_GR,
963 CASE_PRINT_GR,
964 /*      Udiaeresis      Yacute          Thorn           ssharp          */
965 CASE_PRINT_GR,
966 CASE_PRINT_GR,
967 CASE_PRINT_GR,
968 CASE_PRINT_GR,
969 /*      agrave          aacute          acircumflex     atilde          */
970 CASE_PRINT_GR,
971 CASE_PRINT_GR,
972 CASE_PRINT_GR,
973 CASE_PRINT_GR,
974 /*      adiaeresis      aring           ae              ccedilla        */
975 CASE_PRINT_GR,
976 CASE_PRINT_GR,
977 CASE_PRINT_GR,
978 CASE_PRINT_GR,
979 /*      egrave          eacute          ecircumflex     ediaeresis      */
980 CASE_PRINT_GR,
981 CASE_PRINT_GR,
982 CASE_PRINT_GR,
983 CASE_PRINT_GR,
984 /*      igrave          iacute          icircumflex     idiaeresis      */
985 CASE_PRINT_GR,
986 CASE_PRINT_GR,
987 CASE_PRINT_GR,
988 CASE_PRINT_GR,
989 /*      eth             ntilde          ograve          oacute          */
990 CASE_PRINT_GR,
991 CASE_PRINT_GR,
992 CASE_PRINT_GR,
993 CASE_PRINT_GR,
994 /*      ocircumflex     otilde          odiaeresis      division        */
995 CASE_PRINT_GR,
996 CASE_PRINT_GR,
997 CASE_PRINT_GR,
998 CASE_PRINT_GR,
999 /*      oslash          ugrave          uacute          ucircumflex     */
1000 CASE_PRINT_GR,
1001 CASE_PRINT_GR,
1002 CASE_PRINT_GR,
1003 CASE_PRINT_GR,
1004 /*      udiaeresis      yacute          thorn           ydiaeresis      */
1005 CASE_PRINT_GR,
1006 CASE_PRINT_GR,
1007 CASE_PRINT_GR,
1008 CASE_PRINT_GR,
1009 };
1010 
1011 // #pragma mark ESC [ - CSI table
1012 int gCsiTable[] =
1013 {
1014 /*	NUL		SOH		STX		ETX	*/
1015 CASE_IGNORE,
1016 CASE_IGNORE,
1017 CASE_IGNORE,
1018 CASE_IGNORE,
1019 /*	EOT		ENQ		ACK		BEL	*/
1020 CASE_IGNORE,
1021 CASE_IGNORE,
1022 CASE_IGNORE,
1023 CASE_BELL,
1024 /*	BS		HT		NL		VT	*/
1025 CASE_BS,
1026 CASE_TAB,
1027 CASE_VMOT,
1028 CASE_VMOT,
1029 /*	NP		CR		SO		SI	*/
1030 CASE_VMOT,
1031 CASE_CR,
1032 CASE_SO,
1033 CASE_SI,
1034 /*	DLE		DC1		DC2		DC3	*/
1035 CASE_IGNORE,
1036 CASE_IGNORE,
1037 CASE_IGNORE,
1038 CASE_IGNORE,
1039 /*	DC4		NAK		SYN		ETB	*/
1040 CASE_IGNORE,
1041 CASE_IGNORE,
1042 CASE_IGNORE,
1043 CASE_IGNORE,
1044 /*	CAN		EM		SUB		ESC	*/
1045 CASE_IGNORE,
1046 CASE_IGNORE,
1047 CASE_IGNORE,
1048 CASE_ESC,
1049 /*	FS		GS		RS		US	*/
1050 CASE_IGNORE,
1051 CASE_IGNORE,
1052 CASE_IGNORE,
1053 CASE_IGNORE,
1054 /*	SP		!		"		#	*/
1055 CASE_ESC_IGNORE,
1056 CASE_ESC_IGNORE,
1057 CASE_ESC_IGNORE,
1058 CASE_ESC_IGNORE,
1059 /*	$		%		&		'	*/
1060 CASE_ESC_IGNORE,
1061 CASE_ESC_IGNORE,
1062 CASE_ESC_IGNORE,
1063 CASE_ESC_IGNORE,
1064 /*	(		)		*		+	*/
1065 CASE_ESC_IGNORE,
1066 CASE_ESC_IGNORE,
1067 CASE_ESC_IGNORE,
1068 CASE_ESC_IGNORE,
1069 /*	,		-		.		/	*/
1070 CASE_ESC_IGNORE,
1071 CASE_ESC_IGNORE,
1072 CASE_ESC_IGNORE,
1073 CASE_ESC_IGNORE,
1074 /*	0		1		2		3	*/
1075 CASE_ESC_DIGIT,
1076 CASE_ESC_DIGIT,
1077 CASE_ESC_DIGIT,
1078 CASE_ESC_DIGIT,
1079 /*	4		5		6		7	*/
1080 CASE_ESC_DIGIT,
1081 CASE_ESC_DIGIT,
1082 CASE_ESC_DIGIT,
1083 CASE_ESC_DIGIT,
1084 /*	8		9		:		;	*/
1085 CASE_ESC_DIGIT,
1086 CASE_ESC_DIGIT,
1087 CASE_IGNORE,
1088 CASE_ESC_SEMI,
1089 /*	<		=		>		?	*/
1090 CASE_IGNORE,
1091 CASE_IGNORE,
1092 CASE_IGNORE,
1093 CASE_DEC_STATE,
1094 /*	@		A		B		C	*/
1095 CASE_ICH,
1096 CASE_CUU,
1097 CASE_CUD,
1098 CASE_CUF,
1099 /*	D		E		F		G	*/
1100 CASE_CUB,
1101 CASE_GROUND_STATE,
1102 CASE_GROUND_STATE,
1103 CASE_HPA,
1104 /*	H		I		J		K	*/
1105 CASE_CUP,
1106 CASE_GROUND_STATE,
1107 CASE_ED,
1108 CASE_EL,
1109 /*	L		M		N		O	*/
1110 CASE_IL,
1111 CASE_DL,
1112 CASE_GROUND_STATE,
1113 CASE_GROUND_STATE,
1114 /*	P		Q		R		S	*/
1115 CASE_DCH,
1116 CASE_GROUND_STATE,
1117 CASE_GROUND_STATE,
1118 CASE_SU,
1119 /*	T		U		V		W	*/
1120 CASE_SD,
1121 CASE_GROUND_STATE,
1122 CASE_GROUND_STATE,
1123 CASE_GROUND_STATE,
1124 /*	X		Y		Z		[	*/
1125 CASE_ECH,
1126 CASE_GROUND_STATE,
1127 CASE_GROUND_STATE,
1128 CASE_GROUND_STATE,
1129 /*	\		]		^		_	*/
1130 CASE_GROUND_STATE,
1131 CASE_GROUND_STATE,
1132 CASE_GROUND_STATE,
1133 CASE_GROUND_STATE,
1134 /*	`		a		b		c	*/
1135 CASE_GROUND_STATE,
1136 CASE_GROUND_STATE,
1137 CASE_GROUND_STATE,
1138 CASE_GROUND_STATE,
1139 /*	d		e		f		g	*/
1140 CASE_VPA,
1141 CASE_GROUND_STATE,
1142 CASE_CUP,
1143 CASE_GROUND_STATE,
1144 /*	h		i		j		k	*/
1145 CASE_SET,
1146 CASE_GROUND_STATE,
1147 CASE_GROUND_STATE,
1148 CASE_GROUND_STATE,
1149 /*	l		m		n		o	*/
1150 CASE_RST,
1151 CASE_SGR,
1152 CASE_CPR,
1153 CASE_GROUND_STATE,
1154 /*	p		q		r		s	*/
1155 CASE_GROUND_STATE,
1156 CASE_GROUND_STATE,
1157 CASE_DECSTBM,
1158 CASE_GROUND_STATE,
1159 /*	t		u		v		w	*/
1160 CASE_GROUND_STATE,
1161 CASE_GROUND_STATE,
1162 CASE_GROUND_STATE,
1163 CASE_GROUND_STATE,
1164 /*	x		y		z		{	*/
1165 CASE_DECREQTPARM,
1166 CASE_GROUND_STATE,
1167 CASE_GROUND_STATE,
1168 CASE_GROUND_STATE,
1169 /*	|		}		~		DEL	*/
1170 CASE_GROUND_STATE,
1171 CASE_GROUND_STATE,
1172 CASE_GROUND_STATE,
1173 CASE_GROUND_STATE,
1174 /*      0x80            0x81            0x82            0x83    */
1175 CASE_IGNORE,
1176 CASE_IGNORE,
1177 CASE_IGNORE,
1178 CASE_IGNORE,
1179 /*      0x84            0x85            0x86            0x87    */
1180 CASE_IGNORE,
1181 CASE_IGNORE,
1182 CASE_IGNORE,
1183 CASE_IGNORE,
1184 /*      0x88            0x89            0x8a            0x8b    */
1185 CASE_IGNORE,
1186 CASE_IGNORE,
1187 CASE_IGNORE,
1188 CASE_IGNORE,
1189 /*      0x8c            0x8d            0x8e            0x8f    */
1190 CASE_IGNORE,
1191 CASE_IGNORE,
1192 CASE_IGNORE,
1193 CASE_IGNORE,
1194 /*      0x90            0x91            0x92            0x93    */
1195 CASE_IGNORE,
1196 CASE_IGNORE,
1197 CASE_IGNORE,
1198 CASE_IGNORE,
1199 /*      0x94            0x95            0x96            0x97    */
1200 CASE_IGNORE,
1201 CASE_IGNORE,
1202 CASE_IGNORE,
1203 CASE_IGNORE,
1204 /*      0x99            0x99            0x9a            0x9b    */
1205 CASE_IGNORE,
1206 CASE_IGNORE,
1207 CASE_IGNORE,
1208 CASE_IGNORE,
1209 /*      0x9c            0x9d            0x9e            0x9f    */
1210 CASE_IGNORE,
1211 CASE_IGNORE,
1212 CASE_IGNORE,
1213 CASE_IGNORE,
1214 /*      nobreakspace    exclamdown      cent            sterling        */
1215 CASE_GROUND_STATE,
1216 CASE_GROUND_STATE,
1217 CASE_GROUND_STATE,
1218 CASE_GROUND_STATE,
1219 /*      currency        yen             brokenbar       section         */
1220 CASE_GROUND_STATE,
1221 CASE_GROUND_STATE,
1222 CASE_GROUND_STATE,
1223 CASE_GROUND_STATE,
1224 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
1225 CASE_GROUND_STATE,
1226 CASE_GROUND_STATE,
1227 CASE_GROUND_STATE,
1228 CASE_GROUND_STATE,
1229 /*      notsign         hyphen          registered      macron          */
1230 CASE_GROUND_STATE,
1231 CASE_GROUND_STATE,
1232 CASE_GROUND_STATE,
1233 CASE_GROUND_STATE,
1234 /*      degree          plusminus       twosuperior     threesuperior   */
1235 CASE_GROUND_STATE,
1236 CASE_GROUND_STATE,
1237 CASE_GROUND_STATE,
1238 CASE_GROUND_STATE,
1239 /*      acute           mu              paragraph       periodcentered  */
1240 CASE_GROUND_STATE,
1241 CASE_GROUND_STATE,
1242 CASE_GROUND_STATE,
1243 CASE_GROUND_STATE,
1244 /*      cedilla         onesuperior     masculine       guillemotright  */
1245 CASE_GROUND_STATE,
1246 CASE_GROUND_STATE,
1247 CASE_GROUND_STATE,
1248 CASE_GROUND_STATE,
1249 /*      onequarter      onehalf         threequarters   questiondown    */
1250 CASE_GROUND_STATE,
1251 CASE_GROUND_STATE,
1252 CASE_GROUND_STATE,
1253 CASE_GROUND_STATE,
1254 /*      Agrave          Aacute          Acircumflex     Atilde          */
1255 CASE_GROUND_STATE,
1256 CASE_GROUND_STATE,
1257 CASE_GROUND_STATE,
1258 CASE_GROUND_STATE,
1259 /*      Adiaeresis      Aring           AE              Ccedilla        */
1260 CASE_GROUND_STATE,
1261 CASE_GROUND_STATE,
1262 CASE_GROUND_STATE,
1263 CASE_GROUND_STATE,
1264 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
1265 CASE_GROUND_STATE,
1266 CASE_GROUND_STATE,
1267 CASE_GROUND_STATE,
1268 CASE_GROUND_STATE,
1269 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
1270 CASE_GROUND_STATE,
1271 CASE_GROUND_STATE,
1272 CASE_GROUND_STATE,
1273 CASE_GROUND_STATE,
1274 /*      Eth             Ntilde          Ograve          Oacute          */
1275 CASE_GROUND_STATE,
1276 CASE_GROUND_STATE,
1277 CASE_GROUND_STATE,
1278 CASE_GROUND_STATE,
1279 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
1280 CASE_GROUND_STATE,
1281 CASE_GROUND_STATE,
1282 CASE_GROUND_STATE,
1283 CASE_GROUND_STATE,
1284 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
1285 CASE_GROUND_STATE,
1286 CASE_GROUND_STATE,
1287 CASE_GROUND_STATE,
1288 CASE_GROUND_STATE,
1289 /*      Udiaeresis      Yacute          Thorn           ssharp          */
1290 CASE_GROUND_STATE,
1291 CASE_GROUND_STATE,
1292 CASE_GROUND_STATE,
1293 CASE_GROUND_STATE,
1294 /*      agrave          aacute          acircumflex     atilde          */
1295 CASE_GROUND_STATE,
1296 CASE_GROUND_STATE,
1297 CASE_GROUND_STATE,
1298 CASE_GROUND_STATE,
1299 /*      adiaeresis      aring           ae              ccedilla        */
1300 CASE_GROUND_STATE,
1301 CASE_GROUND_STATE,
1302 CASE_GROUND_STATE,
1303 CASE_GROUND_STATE,
1304 /*      egrave          eacute          ecircumflex     ediaeresis      */
1305 CASE_GROUND_STATE,
1306 CASE_GROUND_STATE,
1307 CASE_GROUND_STATE,
1308 CASE_GROUND_STATE,
1309 /*      igrave          iacute          icircumflex     idiaeresis      */
1310 CASE_GROUND_STATE,
1311 CASE_GROUND_STATE,
1312 CASE_GROUND_STATE,
1313 CASE_GROUND_STATE,
1314 /*      eth             ntilde          ograve          oacute          */
1315 CASE_GROUND_STATE,
1316 CASE_GROUND_STATE,
1317 CASE_GROUND_STATE,
1318 CASE_GROUND_STATE,
1319 /*      ocircumflex     otilde          odiaeresis      division        */
1320 CASE_GROUND_STATE,
1321 CASE_GROUND_STATE,
1322 CASE_GROUND_STATE,
1323 CASE_GROUND_STATE,
1324 /*      oslash          ugrave          uacute          ucircumflex     */
1325 CASE_GROUND_STATE,
1326 CASE_GROUND_STATE,
1327 CASE_GROUND_STATE,
1328 CASE_GROUND_STATE,
1329 /*      udiaeresis      yacute          thorn           ydiaeresis      */
1330 CASE_GROUND_STATE,
1331 CASE_GROUND_STATE,
1332 CASE_GROUND_STATE,
1333 CASE_GROUND_STATE,
1334 };
1335 
1336 // #pragma mark ESC [ ? - DEC table
1337 int gDecTable[] =
1338 {
1339 /*	NUL		SOH		STX		ETX	*/
1340 CASE_IGNORE,
1341 CASE_IGNORE,
1342 CASE_IGNORE,
1343 CASE_IGNORE,
1344 /*	EOT		ENQ		ACK		BEL	*/
1345 CASE_IGNORE,
1346 CASE_IGNORE,
1347 CASE_IGNORE,
1348 CASE_BELL,
1349 /*	BS		HT		NL		VT	*/
1350 CASE_BS,
1351 CASE_TAB,
1352 CASE_VMOT,
1353 CASE_VMOT,
1354 /*	NP		CR		SO		SI	*/
1355 CASE_VMOT,
1356 CASE_CR,
1357 CASE_SO,
1358 CASE_SI,
1359 /*	DLE		DC1		DC2		DC3	*/
1360 CASE_IGNORE,
1361 CASE_IGNORE,
1362 CASE_IGNORE,
1363 CASE_IGNORE,
1364 /*	DC4		NAK		SYN		ETB	*/
1365 CASE_IGNORE,
1366 CASE_IGNORE,
1367 CASE_IGNORE,
1368 CASE_IGNORE,
1369 /*	CAN		EM		SUB		ESC	*/
1370 CASE_IGNORE,
1371 CASE_IGNORE,
1372 CASE_IGNORE,
1373 CASE_ESC,
1374 /*	FS		GS		RS		US	*/
1375 CASE_IGNORE,
1376 CASE_IGNORE,
1377 CASE_IGNORE,
1378 CASE_IGNORE,
1379 /*	SP		!		"		#	*/
1380 CASE_ESC_IGNORE,
1381 CASE_ESC_IGNORE,
1382 CASE_ESC_IGNORE,
1383 CASE_ESC_IGNORE,
1384 /*	$		%		&		'	*/
1385 CASE_ESC_IGNORE,
1386 CASE_ESC_IGNORE,
1387 CASE_ESC_IGNORE,
1388 CASE_ESC_IGNORE,
1389 /*	(		)		*		+	*/
1390 CASE_ESC_IGNORE,
1391 CASE_ESC_IGNORE,
1392 CASE_ESC_IGNORE,
1393 CASE_ESC_IGNORE,
1394 /*	,		-		.		/	*/
1395 CASE_ESC_IGNORE,
1396 CASE_ESC_IGNORE,
1397 CASE_ESC_IGNORE,
1398 CASE_ESC_IGNORE,
1399 /*	0		1		2		3	*/
1400 CASE_ESC_DIGIT,
1401 CASE_ESC_DIGIT,
1402 CASE_ESC_DIGIT,
1403 CASE_ESC_DIGIT,
1404 /*	4		5		6		7	*/
1405 CASE_ESC_DIGIT,
1406 CASE_ESC_DIGIT,
1407 CASE_ESC_DIGIT,
1408 CASE_ESC_DIGIT,
1409 /*	8		9		:		;	*/
1410 CASE_ESC_DIGIT,
1411 CASE_ESC_DIGIT,
1412 CASE_IGNORE,
1413 CASE_ESC_SEMI,
1414 /*	<		=		>		?	*/
1415 CASE_GROUND_STATE,
1416 CASE_GROUND_STATE,
1417 CASE_GROUND_STATE,
1418 CASE_GROUND_STATE,
1419 /*	@		A		B		C	*/
1420 CASE_GROUND_STATE,
1421 CASE_GROUND_STATE,
1422 CASE_GROUND_STATE,
1423 CASE_GROUND_STATE,
1424 /*	D		E		F		G	*/
1425 CASE_GROUND_STATE,
1426 #ifdef STATUSLINE
1427 CASE_ERASE_STATUS,
1428 CASE_FROM_STATUS,
1429 #else /* !STATUSLINE */
1430 CASE_GROUND_STATE,
1431 CASE_GROUND_STATE,
1432 #endif /* !STATUSLINE */
1433 CASE_GROUND_STATE,
1434 /*	H		I		J		K	*/
1435 #ifdef STATUSLINE
1436 CASE_HIDE_STATUS,
1437 #else /* !STATUSLINE */
1438 CASE_GROUND_STATE,
1439 #endif /* !STATUSLINE */
1440 CASE_GROUND_STATE,
1441 CASE_GROUND_STATE,
1442 CASE_GROUND_STATE,
1443 /*	L		M		N		O	*/
1444 CASE_GROUND_STATE,
1445 CASE_GROUND_STATE,
1446 CASE_GROUND_STATE,
1447 CASE_GROUND_STATE,
1448 /*	P		Q		R		S	*/
1449 CASE_GROUND_STATE,
1450 CASE_GROUND_STATE,
1451 CASE_GROUND_STATE,
1452 #ifdef STATUSLINE
1453 CASE_SHOW_STATUS,
1454 #else /* !STATUSLINE */
1455 CASE_GROUND_STATE,
1456 #endif /* !STATUSLINE */
1457 /*	T		U		V		W	*/
1458 #ifdef STATUSLINE
1459 CASE_TO_STATUS,
1460 #else /* !STATUSLINE */
1461 CASE_GROUND_STATE,
1462 #endif /* !STATUSLINE */
1463 CASE_GROUND_STATE,
1464 CASE_GROUND_STATE,
1465 CASE_GROUND_STATE,
1466 /*	X		Y		Z		[	*/
1467 CASE_GROUND_STATE,
1468 CASE_GROUND_STATE,
1469 CASE_GROUND_STATE,
1470 CASE_GROUND_STATE,
1471 /*	\		]		^		_	*/
1472 CASE_GROUND_STATE,
1473 CASE_GROUND_STATE,
1474 CASE_GROUND_STATE,
1475 CASE_GROUND_STATE,
1476 /*	`		a		b		c	*/
1477 CASE_GROUND_STATE,
1478 CASE_GROUND_STATE,
1479 CASE_GROUND_STATE,
1480 CASE_GROUND_STATE,
1481 /*	d		e		f		g	*/
1482 CASE_GROUND_STATE,
1483 CASE_GROUND_STATE,
1484 CASE_GROUND_STATE,
1485 CASE_GROUND_STATE,
1486 /*	h		i		j		k	*/
1487 CASE_DECSET,
1488 CASE_GROUND_STATE,
1489 CASE_GROUND_STATE,
1490 CASE_GROUND_STATE,
1491 /*	l		m		n		o	*/
1492 CASE_DECRST,
1493 CASE_GROUND_STATE,
1494 CASE_GROUND_STATE,
1495 CASE_GROUND_STATE,
1496 /*	p		q		r		s	*/
1497 CASE_GROUND_STATE,
1498 CASE_GROUND_STATE,
1499 CASE_GROUND_STATE,
1500 CASE_GROUND_STATE,
1501 /*	t		u		v		w	*/
1502 CASE_GROUND_STATE,
1503 CASE_GROUND_STATE,
1504 CASE_GROUND_STATE,
1505 CASE_GROUND_STATE,
1506 /*	x		y		z		{	*/
1507 CASE_GROUND_STATE,
1508 CASE_GROUND_STATE,
1509 CASE_GROUND_STATE,
1510 CASE_GROUND_STATE,
1511 /*	|		}		~		DEL	*/
1512 CASE_GROUND_STATE,
1513 CASE_GROUND_STATE,
1514 CASE_GROUND_STATE,
1515 CASE_GROUND_STATE,
1516 /*      0x80            0x81            0x82            0x83    */
1517 CASE_IGNORE,
1518 CASE_IGNORE,
1519 CASE_IGNORE,
1520 CASE_IGNORE,
1521 /*      0x84            0x85            0x86            0x87    */
1522 CASE_IGNORE,
1523 CASE_IGNORE,
1524 CASE_IGNORE,
1525 CASE_IGNORE,
1526 /*      0x88            0x89            0x8a            0x8b    */
1527 CASE_IGNORE,
1528 CASE_IGNORE,
1529 CASE_IGNORE,
1530 CASE_IGNORE,
1531 /*      0x8c            0x8d            0x8e            0x8f    */
1532 CASE_IGNORE,
1533 CASE_IGNORE,
1534 CASE_IGNORE,
1535 CASE_IGNORE,
1536 /*      0x90            0x91            0x92            0x93    */
1537 CASE_IGNORE,
1538 CASE_IGNORE,
1539 CASE_IGNORE,
1540 CASE_IGNORE,
1541 /*      0x94            0x95            0x96            0x97    */
1542 CASE_IGNORE,
1543 CASE_IGNORE,
1544 CASE_IGNORE,
1545 CASE_IGNORE,
1546 /*      0x99            0x99            0x9a            0x9b    */
1547 CASE_IGNORE,
1548 CASE_IGNORE,
1549 CASE_IGNORE,
1550 CASE_IGNORE,
1551 /*      0x9c            0x9d            0x9e            0x9f    */
1552 CASE_IGNORE,
1553 CASE_IGNORE,
1554 CASE_IGNORE,
1555 CASE_IGNORE,
1556 /*      nobreakspace    exclamdown      cent            sterling        */
1557 CASE_GROUND_STATE,
1558 CASE_GROUND_STATE,
1559 CASE_GROUND_STATE,
1560 CASE_GROUND_STATE,
1561 /*      currency        yen             brokenbar       section         */
1562 CASE_GROUND_STATE,
1563 CASE_GROUND_STATE,
1564 CASE_GROUND_STATE,
1565 CASE_GROUND_STATE,
1566 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
1567 CASE_GROUND_STATE,
1568 CASE_GROUND_STATE,
1569 CASE_GROUND_STATE,
1570 CASE_GROUND_STATE,
1571 /*      notsign         hyphen          registered      macron          */
1572 CASE_GROUND_STATE,
1573 CASE_GROUND_STATE,
1574 CASE_GROUND_STATE,
1575 CASE_GROUND_STATE,
1576 /*      degree          plusminus       twosuperior     threesuperior   */
1577 CASE_GROUND_STATE,
1578 CASE_GROUND_STATE,
1579 CASE_GROUND_STATE,
1580 CASE_GROUND_STATE,
1581 /*      acute           mu              paragraph       periodcentered  */
1582 CASE_GROUND_STATE,
1583 CASE_GROUND_STATE,
1584 CASE_GROUND_STATE,
1585 CASE_GROUND_STATE,
1586 /*      cedilla         onesuperior     masculine       guillemotright  */
1587 CASE_GROUND_STATE,
1588 CASE_GROUND_STATE,
1589 CASE_GROUND_STATE,
1590 CASE_GROUND_STATE,
1591 /*      onequarter      onehalf         threequarters   questiondown    */
1592 CASE_GROUND_STATE,
1593 CASE_GROUND_STATE,
1594 CASE_GROUND_STATE,
1595 CASE_GROUND_STATE,
1596 /*      Agrave          Aacute          Acircumflex     Atilde          */
1597 CASE_GROUND_STATE,
1598 CASE_GROUND_STATE,
1599 CASE_GROUND_STATE,
1600 CASE_GROUND_STATE,
1601 /*      Adiaeresis      Aring           AE              Ccedilla        */
1602 CASE_GROUND_STATE,
1603 CASE_GROUND_STATE,
1604 CASE_GROUND_STATE,
1605 CASE_GROUND_STATE,
1606 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
1607 CASE_GROUND_STATE,
1608 CASE_GROUND_STATE,
1609 CASE_GROUND_STATE,
1610 CASE_GROUND_STATE,
1611 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
1612 CASE_GROUND_STATE,
1613 CASE_GROUND_STATE,
1614 CASE_GROUND_STATE,
1615 CASE_GROUND_STATE,
1616 /*      Eth             Ntilde          Ograve          Oacute          */
1617 CASE_GROUND_STATE,
1618 CASE_GROUND_STATE,
1619 CASE_GROUND_STATE,
1620 CASE_GROUND_STATE,
1621 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
1622 CASE_GROUND_STATE,
1623 CASE_GROUND_STATE,
1624 CASE_GROUND_STATE,
1625 CASE_GROUND_STATE,
1626 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
1627 CASE_GROUND_STATE,
1628 CASE_GROUND_STATE,
1629 CASE_GROUND_STATE,
1630 CASE_GROUND_STATE,
1631 /*      Udiaeresis      Yacute          Thorn           ssharp          */
1632 CASE_GROUND_STATE,
1633 CASE_GROUND_STATE,
1634 CASE_GROUND_STATE,
1635 CASE_GROUND_STATE,
1636 /*      agrave          aacute          acircumflex     atilde          */
1637 CASE_GROUND_STATE,
1638 CASE_GROUND_STATE,
1639 CASE_GROUND_STATE,
1640 CASE_GROUND_STATE,
1641 /*      adiaeresis      aring           ae              ccedilla        */
1642 CASE_GROUND_STATE,
1643 CASE_GROUND_STATE,
1644 CASE_GROUND_STATE,
1645 CASE_GROUND_STATE,
1646 /*      egrave          eacute          ecircumflex     ediaeresis      */
1647 CASE_GROUND_STATE,
1648 CASE_GROUND_STATE,
1649 CASE_GROUND_STATE,
1650 CASE_GROUND_STATE,
1651 /*      igrave          iacute          icircumflex     idiaeresis      */
1652 CASE_GROUND_STATE,
1653 CASE_GROUND_STATE,
1654 CASE_GROUND_STATE,
1655 CASE_GROUND_STATE,
1656 /*      eth             ntilde          ograve          oacute          */
1657 CASE_GROUND_STATE,
1658 CASE_GROUND_STATE,
1659 CASE_GROUND_STATE,
1660 CASE_GROUND_STATE,
1661 /*      ocircumflex     otilde          odiaeresis      division        */
1662 CASE_GROUND_STATE,
1663 CASE_GROUND_STATE,
1664 CASE_GROUND_STATE,
1665 CASE_GROUND_STATE,
1666 /*      oslash          ugrave          uacute          ucircumflex     */
1667 CASE_GROUND_STATE,
1668 CASE_GROUND_STATE,
1669 CASE_GROUND_STATE,
1670 CASE_GROUND_STATE,
1671 /*      udiaeresis      yacute          thorn           ydiaeresis      */
1672 CASE_GROUND_STATE,
1673 CASE_GROUND_STATE,
1674 CASE_GROUND_STATE,
1675 CASE_GROUND_STATE,
1676 };
1677 
1678 // #pragma mark CASE_ESC_IGNORE table
1679 int gEscIgnoreTable[] =
1680 {
1681 /*	NUL		SOH		STX		ETX	*/
1682 CASE_IGNORE,
1683 CASE_IGNORE,
1684 CASE_IGNORE,
1685 CASE_IGNORE,
1686 /*	EOT		ENQ		ACK		BEL	*/
1687 CASE_IGNORE,
1688 CASE_IGNORE,
1689 CASE_IGNORE,
1690 CASE_BELL,
1691 /*	BS		HT		NL		VT	*/
1692 CASE_BS,
1693 CASE_TAB,
1694 CASE_VMOT,
1695 CASE_VMOT,
1696 /*	NP		CR		SO		SI	*/
1697 CASE_VMOT,
1698 CASE_CR,
1699 CASE_SO,
1700 CASE_SI,
1701 /*	DLE		DC1		DC2		DC3	*/
1702 CASE_IGNORE,
1703 CASE_IGNORE,
1704 CASE_IGNORE,
1705 CASE_IGNORE,
1706 /*	DC4		NAK		SYN		ETB	*/
1707 CASE_IGNORE,
1708 CASE_IGNORE,
1709 CASE_IGNORE,
1710 CASE_IGNORE,
1711 /*	CAN		EM		SUB		ESC	*/
1712 CASE_IGNORE,
1713 CASE_IGNORE,
1714 CASE_IGNORE,
1715 CASE_ESC,
1716 /*	FS		GS		RS		US	*/
1717 CASE_IGNORE,
1718 CASE_IGNORE,
1719 CASE_IGNORE,
1720 CASE_IGNORE,
1721 /*	SP		!		"		#	*/
1722 CASE_IGNORE,
1723 CASE_IGNORE,
1724 CASE_IGNORE,
1725 CASE_IGNORE,
1726 /*	$		%		&		'	*/
1727 CASE_IGNORE,
1728 CASE_IGNORE,
1729 CASE_IGNORE,
1730 CASE_IGNORE,
1731 /*	(		)		*		+	*/
1732 CASE_IGNORE,
1733 CASE_IGNORE,
1734 CASE_IGNORE,
1735 CASE_IGNORE,
1736 /*	,
1737 	-		.		/	*/
1738 CASE_IGNORE,
1739 CASE_IGNORE,
1740 CASE_IGNORE,
1741 CASE_IGNORE,
1742 /*	0		1		2		3	*/
1743 CASE_GROUND_STATE,
1744 CASE_GROUND_STATE,
1745 CASE_GROUND_STATE,
1746 CASE_GROUND_STATE,
1747 /*	4		5		6		7	*/
1748 CASE_GROUND_STATE,
1749 CASE_GROUND_STATE,
1750 CASE_GROUND_STATE,
1751 CASE_GROUND_STATE,
1752 /*	8		9		:		;	*/
1753 CASE_GROUND_STATE,
1754 CASE_GROUND_STATE,
1755 CASE_GROUND_STATE,
1756 CASE_GROUND_STATE,
1757 /*	<		=		>		?	*/
1758 CASE_GROUND_STATE,
1759 CASE_GROUND_STATE,
1760 CASE_GROUND_STATE,
1761 CASE_GROUND_STATE,
1762 /*	@		A		B		C	*/
1763 CASE_GROUND_STATE,
1764 CASE_GROUND_STATE,
1765 CASE_GROUND_STATE,
1766 CASE_GROUND_STATE,
1767 /*	D		E		F		G	*/
1768 CASE_GROUND_STATE,
1769 CASE_GROUND_STATE,
1770 CASE_GROUND_STATE,
1771 CASE_GROUND_STATE,
1772 /*	H		I		J		K	*/
1773 CASE_GROUND_STATE,
1774 CASE_GROUND_STATE,
1775 CASE_GROUND_STATE,
1776 CASE_GROUND_STATE,
1777 /*	L		M		N		O	*/
1778 CASE_GROUND_STATE,
1779 CASE_GROUND_STATE,
1780 CASE_GROUND_STATE,
1781 CASE_GROUND_STATE,
1782 /*	P		Q		R		S	*/
1783 CASE_GROUND_STATE,
1784 CASE_GROUND_STATE,
1785 CASE_GROUND_STATE,
1786 CASE_GROUND_STATE,
1787 /*	T		U		V		W	*/
1788 CASE_GROUND_STATE,
1789 CASE_GROUND_STATE,
1790 CASE_GROUND_STATE,
1791 CASE_GROUND_STATE,
1792 /*	X		Y		Z		[	*/
1793 CASE_GROUND_STATE,
1794 CASE_GROUND_STATE,
1795 CASE_GROUND_STATE,
1796 CASE_GROUND_STATE,
1797 /*	\		]		^		_	*/
1798 CASE_GROUND_STATE,
1799 CASE_GROUND_STATE,
1800 CASE_GROUND_STATE,
1801 CASE_GROUND_STATE,
1802 /*	`		a		b		c	*/
1803 CASE_GROUND_STATE,
1804 CASE_GROUND_STATE,
1805 CASE_GROUND_STATE,
1806 CASE_GROUND_STATE,
1807 /*	d		e		f		g	*/
1808 CASE_GROUND_STATE,
1809 CASE_GROUND_STATE,
1810 CASE_GROUND_STATE,
1811 CASE_GROUND_STATE,
1812 /*	h		i		j		k	*/
1813 CASE_GROUND_STATE,
1814 CASE_GROUND_STATE,
1815 CASE_GROUND_STATE,
1816 CASE_GROUND_STATE,
1817 /*	l		m		n		o	*/
1818 CASE_GROUND_STATE,
1819 CASE_GROUND_STATE,
1820 CASE_GROUND_STATE,
1821 CASE_GROUND_STATE,
1822 /*	p		q		r		s	*/
1823 CASE_GROUND_STATE,
1824 CASE_GROUND_STATE,
1825 CASE_GROUND_STATE,
1826 CASE_GROUND_STATE,
1827 /*	t		u		v		w	*/
1828 CASE_GROUND_STATE,
1829 CASE_GROUND_STATE,
1830 CASE_GROUND_STATE,
1831 CASE_GROUND_STATE,
1832 /*	x		y		z		{	*/
1833 CASE_GROUND_STATE,
1834 CASE_GROUND_STATE,
1835 CASE_GROUND_STATE,
1836 CASE_GROUND_STATE,
1837 /*	|		}		~		DEL	*/
1838 CASE_GROUND_STATE,
1839 CASE_GROUND_STATE,
1840 CASE_GROUND_STATE,
1841 CASE_GROUND_STATE,
1842 /*      0x80            0x81            0x82            0x83    */
1843 CASE_IGNORE,
1844 CASE_IGNORE,
1845 CASE_IGNORE,
1846 CASE_IGNORE,
1847 /*      0x84            0x85            0x86            0x87    */
1848 CASE_IGNORE,
1849 CASE_IGNORE,
1850 CASE_IGNORE,
1851 CASE_IGNORE,
1852 /*      0x88            0x89            0x8a            0x8b    */
1853 CASE_IGNORE,
1854 CASE_IGNORE,
1855 CASE_IGNORE,
1856 CASE_IGNORE,
1857 /*      0x8c            0x8d            0x8e            0x8f    */
1858 CASE_IGNORE,
1859 CASE_IGNORE,
1860 CASE_IGNORE,
1861 CASE_IGNORE,
1862 /*      0x90            0x91            0x92            0x93    */
1863 CASE_IGNORE,
1864 CASE_IGNORE,
1865 CASE_IGNORE,
1866 CASE_IGNORE,
1867 /*      0x94            0x95            0x96            0x97    */
1868 CASE_IGNORE,
1869 CASE_IGNORE,
1870 CASE_IGNORE,
1871 CASE_IGNORE,
1872 /*      0x99            0x99            0x9a            0x9b    */
1873 CASE_IGNORE,
1874 CASE_IGNORE,
1875 CASE_IGNORE,
1876 CASE_IGNORE,
1877 /*      0x9c            0x9d            0x9e            0x9f    */
1878 CASE_IGNORE,
1879 CASE_IGNORE,
1880 CASE_IGNORE,
1881 CASE_IGNORE,
1882 /*      nobreakspace    exclamdown      cent            sterling        */
1883 CASE_GROUND_STATE,
1884 CASE_GROUND_STATE,
1885 CASE_GROUND_STATE,
1886 CASE_GROUND_STATE,
1887 /*      currency        yen             brokenbar       section         */
1888 CASE_GROUND_STATE,
1889 CASE_GROUND_STATE,
1890 CASE_GROUND_STATE,
1891 CASE_GROUND_STATE,
1892 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
1893 CASE_GROUND_STATE,
1894 CASE_GROUND_STATE,
1895 CASE_GROUND_STATE,
1896 CASE_GROUND_STATE,
1897 /*      notsign         hyphen          registered      macron          */
1898 CASE_GROUND_STATE,
1899 CASE_GROUND_STATE,
1900 CASE_GROUND_STATE,
1901 CASE_GROUND_STATE,
1902 /*      degree          plusminus       twosuperior     threesuperior   */
1903 CASE_GROUND_STATE,
1904 CASE_GROUND_STATE,
1905 CASE_GROUND_STATE,
1906 CASE_GROUND_STATE,
1907 /*      acute           mu              paragraph       periodcentered  */
1908 CASE_GROUND_STATE,
1909 CASE_GROUND_STATE,
1910 CASE_GROUND_STATE,
1911 CASE_GROUND_STATE,
1912 /*      cedilla         onesuperior     masculine       guillemotright  */
1913 CASE_GROUND_STATE,
1914 CASE_GROUND_STATE,
1915 CASE_GROUND_STATE,
1916 CASE_GROUND_STATE,
1917 /*      onequarter      onehalf         threequarters   questiondown    */
1918 CASE_GROUND_STATE,
1919 CASE_GROUND_STATE,
1920 CASE_GROUND_STATE,
1921 CASE_GROUND_STATE,
1922 /*      Agrave          Aacute          Acircumflex     Atilde          */
1923 CASE_GROUND_STATE,
1924 CASE_GROUND_STATE,
1925 CASE_GROUND_STATE,
1926 CASE_GROUND_STATE,
1927 /*      Adiaeresis      Aring           AE              Ccedilla        */
1928 CASE_GROUND_STATE,
1929 CASE_GROUND_STATE,
1930 CASE_GROUND_STATE,
1931 CASE_GROUND_STATE,
1932 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
1933 CASE_GROUND_STATE,
1934 CASE_GROUND_STATE,
1935 CASE_GROUND_STATE,
1936 CASE_GROUND_STATE,
1937 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
1938 CASE_GROUND_STATE,
1939 CASE_GROUND_STATE,
1940 CASE_GROUND_STATE,
1941 CASE_GROUND_STATE,
1942 /*      Eth             Ntilde          Ograve          Oacute          */
1943 CASE_GROUND_STATE,
1944 CASE_GROUND_STATE,
1945 CASE_GROUND_STATE,
1946 CASE_GROUND_STATE,
1947 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
1948 CASE_GROUND_STATE,
1949 CASE_GROUND_STATE,
1950 CASE_GROUND_STATE,
1951 CASE_GROUND_STATE,
1952 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
1953 CASE_GROUND_STATE,
1954 CASE_GROUND_STATE,
1955 CASE_GROUND_STATE,
1956 CASE_GROUND_STATE,
1957 /*      Udiaeresis      Yacute          Thorn           ssharp          */
1958 CASE_GROUND_STATE,
1959 CASE_GROUND_STATE,
1960 CASE_GROUND_STATE,
1961 CASE_GROUND_STATE,
1962 /*      agrave          aacute          acircumflex     atilde          */
1963 CASE_GROUND_STATE,
1964 CASE_GROUND_STATE,
1965 CASE_GROUND_STATE,
1966 CASE_GROUND_STATE,
1967 /*      adiaeresis      aring           ae              ccedilla        */
1968 CASE_GROUND_STATE,
1969 CASE_GROUND_STATE,
1970 CASE_GROUND_STATE,
1971 CASE_GROUND_STATE,
1972 /*      egrave          eacute          ecircumflex     ediaeresis      */
1973 CASE_GROUND_STATE,
1974 CASE_GROUND_STATE,
1975 CASE_GROUND_STATE,
1976 CASE_GROUND_STATE,
1977 /*      igrave          iacute          icircumflex     idiaeresis      */
1978 CASE_GROUND_STATE,
1979 CASE_GROUND_STATE,
1980 CASE_GROUND_STATE,
1981 CASE_GROUND_STATE,
1982 /*      eth             ntilde          ograve          oacute          */
1983 CASE_GROUND_STATE,
1984 CASE_GROUND_STATE,
1985 CASE_GROUND_STATE,
1986 CASE_GROUND_STATE,
1987 /*      ocircumflex     otilde          odiaeresis      division        */
1988 CASE_GROUND_STATE,
1989 CASE_GROUND_STATE,
1990 CASE_GROUND_STATE,
1991 CASE_GROUND_STATE,
1992 /*      oslash          ugrave          uacute          ucircumflex     */
1993 CASE_GROUND_STATE,
1994 CASE_GROUND_STATE,
1995 CASE_GROUND_STATE,
1996 CASE_GROUND_STATE,
1997 /*      udiaeresis      yacute          thorn           ydiaeresis      */
1998 CASE_GROUND_STATE,
1999 CASE_GROUND_STATE,
2000 CASE_GROUND_STATE,
2001 CASE_GROUND_STATE,
2002 };
2003 
2004 // #pragma mark ESC table
2005 int gEscTable[] =
2006 {
2007 /*	NUL		SOH		STX		ETX	*/
2008 CASE_IGNORE,
2009 CASE_IGNORE,
2010 CASE_IGNORE,
2011 CASE_IGNORE,
2012 /*	EOT		ENQ		ACK		BEL	*/
2013 CASE_IGNORE,
2014 CASE_IGNORE,
2015 CASE_IGNORE,
2016 CASE_BELL,
2017 /*	BS		HT		NL		VT	*/
2018 CASE_BS,
2019 CASE_TAB,
2020 CASE_LF,
2021 CASE_LF, /*CASE_UP,*/
2022 /*	NP		CR		SO		SI	*/
2023 CASE_LF, /*CASE_IGNORE,*/
2024 CASE_CR,
2025 CASE_SO,
2026 CASE_SI,
2027 /*	DLE		DC1		DC2		DC3	*/
2028 CASE_IGNORE,
2029 CASE_IGNORE,
2030 CASE_IGNORE,
2031 CASE_IGNORE,
2032 /*	DC4		NAK		SYN		ETB	*/
2033 CASE_IGNORE,
2034 CASE_IGNORE,
2035 CASE_IGNORE,
2036 CASE_IGNORE,
2037 /*	CAN		EM		SUB		ESC	*/
2038 CASE_IGNORE,
2039 CASE_IGNORE,
2040 CASE_IGNORE,
2041 CASE_ESC,
2042 /*	FS		GS		RS		US	*/
2043 CASE_IGNORE,
2044 CASE_IGNORE,
2045 CASE_IGNORE,
2046 CASE_IGNORE,
2047 /*	SP		!		"		#	*/
2048 CASE_ESC_IGNORE,
2049 CASE_ESC_IGNORE,
2050 CASE_ESC_IGNORE,
2051 CASE_SCR_STATE,
2052 /*	$		%		&		'	*/
2053 #ifdef USE_ISO2022
2054 CASE_MBCS,
2055 #else /* !USE_ISO2022 */
2056 CASE_ESC_IGNORE,
2057 #endif /* !USE_ISO2022 */
2058 CASE_ESC_IGNORE,
2059 CASE_ESC_IGNORE,
2060 CASE_ESC_IGNORE,
2061 /*	(		)		*		+	*/
2062 #ifdef USE_ISO2022
2063 CASE_SCS_STATE,
2064 CASE_SCS_STATE,
2065 CASE_SCS_STATE,
2066 CASE_SCS_STATE,
2067 #else /* !USE_ISO2022 */
2068 CASE_SCS0_STATE,
2069 CASE_SCS1_STATE,
2070 CASE_SCS2_STATE,
2071 CASE_SCS3_STATE,
2072 #endif /* !USE_ISO2022 */
2073 /*	,		-		.		/	*/
2074 #ifdef USE_ISO2022
2075 CASE_SCS_STATE,	/* not defined in ISO2022 but used in Mule */
2076 CASE_SCS_STATE,
2077 CASE_SCS_STATE,
2078 CASE_SCS_STATE,
2079 #else /* !USE_ISO2022 */
2080 CASE_ESC_IGNORE,
2081 CASE_ESC_IGNORE,
2082 CASE_ESC_IGNORE,
2083 CASE_ESC_IGNORE,
2084 #endif /* !USE_ISO2022 */
2085 /*	0		1		2		3	*/
2086 CASE_GROUND_STATE,
2087 CASE_GROUND_STATE,
2088 CASE_GROUND_STATE,
2089 CASE_GROUND_STATE,
2090 /*	4		5		6		7	*/
2091 CASE_GROUND_STATE,
2092 CASE_GROUND_STATE,
2093 CASE_GROUND_STATE,
2094 CASE_DECSC,
2095 /*	8		9		:		;	*/
2096 CASE_DECRC,
2097 CASE_GROUND_STATE,
2098 CASE_GROUND_STATE,
2099 CASE_GROUND_STATE,
2100 /*	<		=		>		?	*/
2101 CASE_GROUND_STATE,
2102 CASE_GROUND_STATE,
2103 CASE_GROUND_STATE,
2104 CASE_GROUND_STATE,
2105 /*	@		A		B		C	*/
2106 CASE_GROUND_STATE,
2107 CASE_GROUND_STATE,
2108 CASE_GROUND_STATE,
2109 CASE_GROUND_STATE,
2110 /*	D		E		F		G	*/
2111 CASE_GROUND_STATE,
2112 CASE_GROUND_STATE,
2113 CASE_GROUND_STATE,
2114 CASE_GROUND_STATE,
2115 /*	H		I		J		K	*/
2116 CASE_HTS,
2117 CASE_GROUND_STATE,
2118 CASE_GROUND_STATE,
2119 CASE_GROUND_STATE,
2120 /*	L		M		N		O	*/
2121 CASE_GROUND_STATE,
2122 CASE_RI,
2123 CASE_SS2,
2124 CASE_SS3,
2125 /*	P		Q		R		S	*/
2126 CASE_IGNORE_STATE,
2127 CASE_GROUND_STATE,
2128 CASE_GROUND_STATE,
2129 CASE_GROUND_STATE,
2130 /*	T		U		V		W	*/
2131 CASE_XTERM_TITLE,
2132 CASE_GROUND_STATE,
2133 CASE_GROUND_STATE,
2134 CASE_GROUND_STATE,
2135 /*	X		Y		Z		[	*/
2136 CASE_GROUND_STATE,
2137 CASE_GROUND_STATE,
2138 CASE_GROUND_STATE,
2139 CASE_CSI_STATE,
2140 /*	\		]		^		_	*/
2141 CASE_GROUND_STATE,
2142 CASE_OSC,
2143 CASE_IGNORE_STATE,
2144 CASE_IGNORE_STATE,
2145 /*	`		a		b		c	*/
2146 CASE_GROUND_STATE,
2147 CASE_GROUND_STATE,
2148 CASE_GROUND_STATE,
2149 CASE_RIS,
2150 /*	d		e		f		g	*/
2151 CASE_GROUND_STATE,
2152 CASE_GROUND_STATE,
2153 CASE_GROUND_STATE,
2154 CASE_GROUND_STATE,
2155 /*	h		i		j		k	*/
2156 CASE_GROUND_STATE,
2157 CASE_GROUND_STATE,
2158 CASE_GROUND_STATE,
2159 CASE_GROUND_STATE,
2160 /*	l		m		n		o	*/
2161 CASE_GROUND_STATE,
2162 CASE_GROUND_STATE,
2163 CASE_LS2,
2164 CASE_LS3,
2165 /*	p		q		r		s	*/
2166 CASE_GROUND_STATE,
2167 CASE_GROUND_STATE,
2168 CASE_GROUND_STATE,
2169 CASE_GROUND_STATE,
2170 /*	t		u		v		w	*/
2171 CASE_GROUND_STATE,
2172 CASE_GROUND_STATE,
2173 CASE_GROUND_STATE,
2174 CASE_GROUND_STATE,
2175 /*	x		y		z		{	*/
2176 CASE_GROUND_STATE,
2177 CASE_GROUND_STATE,
2178 CASE_GROUND_STATE,
2179 CASE_GROUND_STATE,
2180 /*	|		}		~		DEL	*/
2181 CASE_LS3R,
2182 CASE_LS2R,
2183 CASE_LS1R,
2184 CASE_GROUND_STATE,
2185 /*      0x80            0x81            0x82            0x83    */
2186 CASE_IGNORE,
2187 CASE_IGNORE,
2188 CASE_IGNORE,
2189 CASE_IGNORE,
2190 /*      0x84            0x85            0x86            0x87    */
2191 CASE_IGNORE,
2192 CASE_IGNORE,
2193 CASE_IGNORE,
2194 CASE_IGNORE,
2195 /*      0x88            0x89            0x8a            0x8b    */
2196 CASE_IGNORE,
2197 CASE_IGNORE,
2198 CASE_IGNORE,
2199 CASE_IGNORE,
2200 /*      0x8c            0x8d            0x8e            0x8f    */
2201 CASE_IGNORE,
2202 CASE_IGNORE,
2203 CASE_IGNORE,
2204 CASE_IGNORE,
2205 /*      0x90            0x91            0x92            0x93    */
2206 CASE_IGNORE,
2207 CASE_IGNORE,
2208 CASE_IGNORE,
2209 CASE_IGNORE,
2210 /*      0x94            0x95            0x96            0x97    */
2211 CASE_IGNORE,
2212 CASE_IGNORE,
2213 CASE_IGNORE,
2214 CASE_IGNORE,
2215 /*      0x99            0x99            0x9a            0x9b    */
2216 CASE_IGNORE,
2217 CASE_IGNORE,
2218 CASE_IGNORE,
2219 CASE_IGNORE,
2220 /*      0x9c            0x9d            0x9e            0x9f    */
2221 CASE_IGNORE,
2222 CASE_IGNORE,
2223 CASE_IGNORE,
2224 CASE_IGNORE,
2225 /*      nobreakspace    exclamdown      cent            sterling        */
2226 CASE_GROUND_STATE,
2227 CASE_GROUND_STATE,
2228 CASE_GROUND_STATE,
2229 CASE_GROUND_STATE,
2230 /*      currency        yen             brokenbar       section         */
2231 CASE_GROUND_STATE,
2232 CASE_GROUND_STATE,
2233 CASE_GROUND_STATE,
2234 CASE_GROUND_STATE,
2235 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
2236 CASE_GROUND_STATE,
2237 CASE_GROUND_STATE,
2238 CASE_GROUND_STATE,
2239 CASE_GROUND_STATE,
2240 /*      notsign         hyphen          registered      macron          */
2241 CASE_GROUND_STATE,
2242 CASE_GROUND_STATE,
2243 CASE_GROUND_STATE,
2244 CASE_GROUND_STATE,
2245 /*      degree          plusminus       twosuperior     threesuperior   */
2246 CASE_GROUND_STATE,
2247 CASE_GROUND_STATE,
2248 CASE_GROUND_STATE,
2249 CASE_GROUND_STATE,
2250 /*      acute           mu              paragraph       periodcentered  */
2251 CASE_GROUND_STATE,
2252 CASE_GROUND_STATE,
2253 CASE_GROUND_STATE,
2254 CASE_GROUND_STATE,
2255 /*      cedilla         onesuperior     masculine       guillemotright  */
2256 CASE_GROUND_STATE,
2257 CASE_GROUND_STATE,
2258 CASE_GROUND_STATE,
2259 CASE_GROUND_STATE,
2260 /*      onequarter      onehalf         threequarters   questiondown    */
2261 CASE_GROUND_STATE,
2262 CASE_GROUND_STATE,
2263 CASE_GROUND_STATE,
2264 CASE_GROUND_STATE,
2265 /*      Agrave          Aacute          Acircumflex     Atilde          */
2266 CASE_GROUND_STATE,
2267 CASE_GROUND_STATE,
2268 CASE_GROUND_STATE,
2269 CASE_GROUND_STATE,
2270 /*      Adiaeresis      Aring           AE              Ccedilla        */
2271 CASE_GROUND_STATE,
2272 CASE_GROUND_STATE,
2273 CASE_GROUND_STATE,
2274 CASE_GROUND_STATE,
2275 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
2276 CASE_GROUND_STATE,
2277 CASE_GROUND_STATE,
2278 CASE_GROUND_STATE,
2279 CASE_GROUND_STATE,
2280 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
2281 CASE_GROUND_STATE,
2282 CASE_GROUND_STATE,
2283 CASE_GROUND_STATE,
2284 CASE_GROUND_STATE,
2285 /*      Eth             Ntilde          Ograve          Oacute          */
2286 CASE_GROUND_STATE,
2287 CASE_GROUND_STATE,
2288 CASE_GROUND_STATE,
2289 CASE_GROUND_STATE,
2290 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
2291 CASE_GROUND_STATE,
2292 CASE_GROUND_STATE,
2293 CASE_GROUND_STATE,
2294 CASE_GROUND_STATE,
2295 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
2296 CASE_GROUND_STATE,
2297 CASE_GROUND_STATE,
2298 CASE_GROUND_STATE,
2299 CASE_GROUND_STATE,
2300 /*      Udiaeresis      Yacute          Thorn           ssharp          */
2301 CASE_GROUND_STATE,
2302 CASE_GROUND_STATE,
2303 CASE_GROUND_STATE,
2304 CASE_GROUND_STATE,
2305 /*      agrave          aacute          acircumflex     atilde          */
2306 CASE_GROUND_STATE,
2307 CASE_GROUND_STATE,
2308 CASE_GROUND_STATE,
2309 CASE_GROUND_STATE,
2310 /*      adiaeresis      aring           ae              ccedilla        */
2311 CASE_GROUND_STATE,
2312 CASE_GROUND_STATE,
2313 CASE_GROUND_STATE,
2314 CASE_GROUND_STATE,
2315 /*      egrave          eacute          ecircumflex     ediaeresis      */
2316 CASE_GROUND_STATE,
2317 CASE_GROUND_STATE,
2318 CASE_GROUND_STATE,
2319 CASE_GROUND_STATE,
2320 /*      igrave          iacute          icircumflex     idiaeresis      */
2321 CASE_GROUND_STATE,
2322 CASE_GROUND_STATE,
2323 CASE_GROUND_STATE,
2324 CASE_GROUND_STATE,
2325 /*      eth             ntilde          ograve          oacute          */
2326 CASE_GROUND_STATE,
2327 CASE_GROUND_STATE,
2328 CASE_GROUND_STATE,
2329 CASE_GROUND_STATE,
2330 /*      ocircumflex     otilde          odiaeresis      division        */
2331 CASE_GROUND_STATE,
2332 CASE_GROUND_STATE,
2333 CASE_GROUND_STATE,
2334 CASE_GROUND_STATE,
2335 /*      oslash          ugrave          uacute          ucircumflex     */
2336 CASE_GROUND_STATE,
2337 CASE_GROUND_STATE,
2338 CASE_GROUND_STATE,
2339 CASE_GROUND_STATE,
2340 /*      udiaeresis      yacute          thorn           ydiaeresis      */
2341 CASE_GROUND_STATE,
2342 CASE_GROUND_STATE,
2343 CASE_GROUND_STATE,
2344 CASE_GROUND_STATE,
2345 };
2346 
2347 // #pragma mark CASE_IGNORE_ESC table
2348 int gIesTable[] =
2349 {
2350 /*	NUL		SOH		STX		ETX	*/
2351 CASE_IGNORE_STATE,
2352 CASE_IGNORE_STATE,
2353 CASE_IGNORE_STATE,
2354 CASE_IGNORE_STATE,
2355 /*	EOT		ENQ		ACK		BEL	*/
2356 CASE_IGNORE_STATE,
2357 CASE_IGNORE_STATE,
2358 CASE_IGNORE_STATE,
2359 CASE_IGNORE_STATE,
2360 /*	BS		HT		NL		VT	*/
2361 CASE_IGNORE_STATE,
2362 CASE_IGNORE_STATE,
2363 CASE_IGNORE_STATE,
2364 CASE_IGNORE_STATE,
2365 /*	NP		CR		SO		SI	*/
2366 CASE_IGNORE_STATE,
2367 CASE_IGNORE_STATE,
2368 CASE_IGNORE_STATE,
2369 CASE_IGNORE_STATE,
2370 /*	DLE		DC1		DC2		DC3	*/
2371 CASE_IGNORE_STATE,
2372 CASE_IGNORE_STATE,
2373 CASE_IGNORE_STATE,
2374 CASE_IGNORE_STATE,
2375 /*	DC4		NAK		SYN		ETB	*/
2376 CASE_IGNORE_STATE,
2377 CASE_IGNORE_STATE,
2378 CASE_IGNORE_STATE,
2379 CASE_IGNORE_STATE,
2380 /*	CAN		EM		SUB		ESC	*/
2381 CASE_IGNORE_STATE,
2382 CASE_IGNORE_STATE,
2383 CASE_IGNORE_STATE,
2384 CASE_IGNORE_STATE,
2385 /*	FS		GS		RS		US	*/
2386 CASE_IGNORE_STATE,
2387 CASE_IGNORE_STATE,
2388 CASE_IGNORE_STATE,
2389 CASE_IGNORE_STATE,
2390 /*	SP		!		"		#	*/
2391 CASE_IGNORE_STATE,
2392 CASE_IGNORE_STATE,
2393 CASE_IGNORE_STATE,
2394 CASE_IGNORE_STATE,
2395 /*	$		%		&		'	*/
2396 CASE_IGNORE_STATE,
2397 CASE_IGNORE_STATE,
2398 CASE_IGNORE_STATE,
2399 CASE_IGNORE_STATE,
2400 /*	(		)		*		+	*/
2401 CASE_IGNORE_STATE,
2402 CASE_IGNORE_STATE,
2403 CASE_IGNORE_STATE,
2404 CASE_IGNORE_STATE,
2405 /*	,		-		.		/	*/
2406 CASE_IGNORE_STATE,
2407 CASE_IGNORE_STATE,
2408 CASE_IGNORE_STATE,
2409 CASE_IGNORE_STATE,
2410 /*	0		1		2		3	*/
2411 CASE_IGNORE_STATE,
2412 CASE_IGNORE_STATE,
2413 CASE_IGNORE_STATE,
2414 CASE_IGNORE_STATE,
2415 /*	4		5		6		7	*/
2416 CASE_IGNORE_STATE,
2417 CASE_IGNORE_STATE,
2418 CASE_IGNORE_STATE,
2419 CASE_IGNORE_STATE,
2420 /*	8		9		:		;	*/
2421 CASE_IGNORE_STATE,
2422 CASE_IGNORE_STATE,
2423 CASE_IGNORE_STATE,
2424 CASE_IGNORE_STATE,
2425 /*	<		=		>		?	*/
2426 CASE_IGNORE_STATE,
2427 CASE_IGNORE_STATE,
2428 CASE_IGNORE_STATE,
2429 CASE_IGNORE_STATE,
2430 /*	@		A		B		C	*/
2431 CASE_IGNORE_STATE,
2432 CASE_IGNORE_STATE,
2433 CASE_IGNORE_STATE,
2434 CASE_IGNORE_STATE,
2435 /*	D		E		F		G	*/
2436 CASE_IGNORE_STATE,
2437 CASE_IGNORE_STATE,
2438 CASE_IGNORE_STATE,
2439 CASE_IGNORE_STATE,
2440 /*	H		I		J		K	*/
2441 CASE_IGNORE_STATE,
2442 CASE_IGNORE_STATE,
2443 CASE_IGNORE_STATE,
2444 CASE_IGNORE_STATE,
2445 /*	L		M		N		O	*/
2446 CASE_IGNORE_STATE,
2447 CASE_IGNORE_STATE,
2448 CASE_IGNORE_STATE,
2449 CASE_IGNORE_STATE,
2450 /*	P		Q		R		S	*/
2451 CASE_IGNORE_STATE,
2452 CASE_IGNORE_STATE,
2453 CASE_IGNORE_STATE,
2454 CASE_IGNORE_STATE,
2455 /*	T		U		V		W	*/
2456 CASE_IGNORE_STATE,
2457 CASE_IGNORE_STATE,
2458 CASE_IGNORE_STATE,
2459 CASE_IGNORE_STATE,
2460 /*	X		Y		Z		[	*/
2461 CASE_IGNORE_STATE,
2462 CASE_IGNORE_STATE,
2463 CASE_IGNORE_STATE,
2464 CASE_IGNORE_STATE,
2465 /*	\		]		^		_	*/
2466 CASE_GROUND_STATE,
2467 CASE_IGNORE_STATE,
2468 CASE_IGNORE_STATE,
2469 CASE_IGNORE_STATE,
2470 /*	`		a		b		c	*/
2471 CASE_IGNORE_STATE,
2472 CASE_IGNORE_STATE,
2473 CASE_IGNORE_STATE,
2474 CASE_IGNORE_STATE,
2475 /*	d		e		f		g	*/
2476 CASE_IGNORE_STATE,
2477 CASE_IGNORE_STATE,
2478 CASE_IGNORE_STATE,
2479 CASE_IGNORE_STATE,
2480 /*	h		i		j		k	*/
2481 CASE_IGNORE_STATE,
2482 CASE_IGNORE_STATE,
2483 CASE_IGNORE_STATE,
2484 CASE_IGNORE_STATE,
2485 /*	l		m		n		o	*/
2486 CASE_IGNORE_STATE,
2487 CASE_IGNORE_STATE,
2488 CASE_IGNORE_STATE,
2489 CASE_IGNORE_STATE,
2490 /*	p		q		r		s	*/
2491 CASE_IGNORE_STATE,
2492 CASE_IGNORE_STATE,
2493 CASE_IGNORE_STATE,
2494 CASE_IGNORE_STATE,
2495 /*	t		u		v		w	*/
2496 CASE_IGNORE_STATE,
2497 CASE_IGNORE_STATE,
2498 CASE_IGNORE_STATE,
2499 CASE_IGNORE_STATE,
2500 /*	x		y		z		{	*/
2501 CASE_IGNORE_STATE,
2502 CASE_IGNORE_STATE,
2503 CASE_IGNORE_STATE,
2504 CASE_IGNORE_STATE,
2505 /*	|		}		~		DEL	*/
2506 CASE_IGNORE_STATE,
2507 CASE_IGNORE_STATE,
2508 CASE_IGNORE_STATE,
2509 CASE_IGNORE_STATE,
2510 /*      0x80            0x81            0x82            0x83    */
2511 CASE_IGNORE,
2512 CASE_IGNORE,
2513 CASE_IGNORE,
2514 CASE_IGNORE,
2515 /*      0x84            0x85            0x86            0x87    */
2516 CASE_IGNORE,
2517 CASE_IGNORE,
2518 CASE_IGNORE,
2519 CASE_IGNORE,
2520 /*      0x88            0x89            0x8a            0x8b    */
2521 CASE_IGNORE,
2522 CASE_IGNORE,
2523 CASE_IGNORE,
2524 CASE_IGNORE,
2525 /*      0x8c            0x8d            0x8e            0x8f    */
2526 CASE_IGNORE,
2527 CASE_IGNORE,
2528 CASE_IGNORE,
2529 CASE_IGNORE,
2530 /*      0x90            0x91            0x92            0x93    */
2531 CASE_IGNORE,
2532 CASE_IGNORE,
2533 CASE_IGNORE,
2534 CASE_IGNORE,
2535 /*      0x94            0x95            0x96            0x97    */
2536 CASE_IGNORE,
2537 CASE_IGNORE,
2538 CASE_IGNORE,
2539 CASE_IGNORE,
2540 /*      0x99            0x99            0x9a            0x9b    */
2541 CASE_IGNORE,
2542 CASE_IGNORE,
2543 CASE_IGNORE,
2544 CASE_IGNORE,
2545 /*      0x9c            0x9d            0x9e            0x9f    */
2546 CASE_IGNORE,
2547 CASE_IGNORE,
2548 CASE_IGNORE,
2549 CASE_IGNORE,
2550 /*      nobreakspace    exclamdown      cent            sterling        */
2551 CASE_GROUND_STATE,
2552 CASE_GROUND_STATE,
2553 CASE_GROUND_STATE,
2554 CASE_GROUND_STATE,
2555 /*      currency        yen             brokenbar       section         */
2556 CASE_GROUND_STATE,
2557 CASE_GROUND_STATE,
2558 CASE_GROUND_STATE,
2559 CASE_GROUND_STATE,
2560 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
2561 CASE_GROUND_STATE,
2562 CASE_GROUND_STATE,
2563 CASE_GROUND_STATE,
2564 CASE_GROUND_STATE,
2565 /*      notsign         hyphen          registered      macron          */
2566 CASE_GROUND_STATE,
2567 CASE_GROUND_STATE,
2568 CASE_GROUND_STATE,
2569 CASE_GROUND_STATE,
2570 /*      degree          plusminus       twosuperior     threesuperior   */
2571 CASE_GROUND_STATE,
2572 CASE_GROUND_STATE,
2573 CASE_GROUND_STATE,
2574 CASE_GROUND_STATE,
2575 /*      acute           mu              paragraph       periodcentered  */
2576 CASE_GROUND_STATE,
2577 CASE_GROUND_STATE,
2578 CASE_GROUND_STATE,
2579 CASE_GROUND_STATE,
2580 /*      cedilla         onesuperior     masculine       guillemotright  */
2581 CASE_GROUND_STATE,
2582 CASE_GROUND_STATE,
2583 CASE_GROUND_STATE,
2584 CASE_GROUND_STATE,
2585 /*      onequarter      onehalf         threequarters   questiondown    */
2586 CASE_GROUND_STATE,
2587 CASE_GROUND_STATE,
2588 CASE_GROUND_STATE,
2589 CASE_GROUND_STATE,
2590 /*      Agrave          Aacute          Acircumflex     Atilde          */
2591 CASE_GROUND_STATE,
2592 CASE_GROUND_STATE,
2593 CASE_GROUND_STATE,
2594 CASE_GROUND_STATE,
2595 /*      Adiaeresis      Aring           AE              Ccedilla        */
2596 CASE_GROUND_STATE,
2597 CASE_GROUND_STATE,
2598 CASE_GROUND_STATE,
2599 CASE_GROUND_STATE,
2600 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
2601 CASE_GROUND_STATE,
2602 CASE_GROUND_STATE,
2603 CASE_GROUND_STATE,
2604 CASE_GROUND_STATE,
2605 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
2606 CASE_GROUND_STATE,
2607 CASE_GROUND_STATE,
2608 CASE_GROUND_STATE,
2609 CASE_GROUND_STATE,
2610 /*      Eth             Ntilde          Ograve          Oacute          */
2611 CASE_GROUND_STATE,
2612 CASE_GROUND_STATE,
2613 CASE_GROUND_STATE,
2614 CASE_GROUND_STATE,
2615 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
2616 CASE_GROUND_STATE,
2617 CASE_GROUND_STATE,
2618 CASE_GROUND_STATE,
2619 CASE_GROUND_STATE,
2620 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
2621 CASE_GROUND_STATE,
2622 CASE_GROUND_STATE,
2623 CASE_GROUND_STATE,
2624 CASE_GROUND_STATE,
2625 /*      Udiaeresis      Yacute          Thorn           ssharp          */
2626 CASE_GROUND_STATE,
2627 CASE_GROUND_STATE,
2628 CASE_GROUND_STATE,
2629 CASE_GROUND_STATE,
2630 /*      agrave          aacute          acircumflex     atilde          */
2631 CASE_GROUND_STATE,
2632 CASE_GROUND_STATE,
2633 CASE_GROUND_STATE,
2634 CASE_GROUND_STATE,
2635 /*      adiaeresis      aring           ae              ccedilla        */
2636 CASE_GROUND_STATE,
2637 CASE_GROUND_STATE,
2638 CASE_GROUND_STATE,
2639 CASE_GROUND_STATE,
2640 /*      egrave          eacute          ecircumflex     ediaeresis      */
2641 CASE_GROUND_STATE,
2642 CASE_GROUND_STATE,
2643 CASE_GROUND_STATE,
2644 CASE_GROUND_STATE,
2645 /*      igrave          iacute          icircumflex     idiaeresis      */
2646 CASE_GROUND_STATE,
2647 CASE_GROUND_STATE,
2648 CASE_GROUND_STATE,
2649 CASE_GROUND_STATE,
2650 /*      eth             ntilde          ograve          oacute          */
2651 CASE_GROUND_STATE,
2652 CASE_GROUND_STATE,
2653 CASE_GROUND_STATE,
2654 CASE_GROUND_STATE,
2655 /*      ocircumflex     otilde          odiaeresis      division        */
2656 CASE_GROUND_STATE,
2657 CASE_GROUND_STATE,
2658 CASE_GROUND_STATE,
2659 CASE_GROUND_STATE,
2660 /*      oslash          ugrave          uacute          ucircumflex     */
2661 CASE_GROUND_STATE,
2662 CASE_GROUND_STATE,
2663 CASE_GROUND_STATE,
2664 CASE_GROUND_STATE,
2665 /*      udiaeresis      yacute          thorn           ydiaeresis      */
2666 CASE_GROUND_STATE,
2667 CASE_GROUND_STATE,
2668 CASE_GROUND_STATE,
2669 CASE_GROUND_STATE,
2670 };
2671 
2672 // #pragma mark CASE_IGNORE_STATE table
2673 int gIgnoreTable[] =
2674 {
2675 /*	NUL		SOH		STX		ETX	*/
2676 CASE_IGNORE,
2677 CASE_IGNORE,
2678 CASE_IGNORE,
2679 CASE_IGNORE,
2680 /*	EOT		ENQ		ACK		BEL	*/
2681 CASE_IGNORE,
2682 CASE_IGNORE,
2683 CASE_IGNORE,
2684 CASE_IGNORE,
2685 /*	BS		HT		NL		VT	*/
2686 CASE_IGNORE,
2687 CASE_IGNORE,
2688 CASE_IGNORE,
2689 CASE_IGNORE,
2690 /*	NP		CR		SO		SI	*/
2691 CASE_IGNORE,
2692 CASE_IGNORE,
2693 CASE_IGNORE,
2694 CASE_IGNORE,
2695 /*	DLE		DC1		DC2		DC3	*/
2696 CASE_IGNORE,
2697 CASE_IGNORE,
2698 CASE_IGNORE,
2699 CASE_IGNORE,
2700 /*	DC4		NAK		SYN		ETB	*/
2701 CASE_IGNORE,
2702 CASE_IGNORE,
2703 CASE_IGNORE,
2704 CASE_IGNORE,
2705 /*	CAN		EM		SUB		ESC	*/
2706 CASE_GROUND_STATE,
2707 CASE_IGNORE,
2708 CASE_GROUND_STATE,
2709 CASE_IGNORE_ESC,
2710 /*	FS		GS		RS		US	*/
2711 CASE_IGNORE,
2712 CASE_IGNORE,
2713 CASE_IGNORE,
2714 CASE_IGNORE,
2715 /*	SP		!		"		#	*/
2716 CASE_IGNORE,
2717 CASE_IGNORE,
2718 CASE_IGNORE,
2719 CASE_IGNORE,
2720 /*	$		%		&		'	*/
2721 CASE_IGNORE,
2722 CASE_IGNORE,
2723 CASE_IGNORE,
2724 CASE_IGNORE,
2725 /*	(		)		*		+	*/
2726 CASE_IGNORE,
2727 CASE_IGNORE,
2728 CASE_IGNORE,
2729 CASE_IGNORE,
2730 /*	,		-		.		/	*/
2731 CASE_IGNORE,
2732 CASE_IGNORE,
2733 CASE_IGNORE,
2734 CASE_IGNORE,
2735 /*	0		1		2		3	*/
2736 CASE_IGNORE,
2737 CASE_IGNORE,
2738 CASE_IGNORE,
2739 CASE_IGNORE,
2740 /*	4		5		6		7	*/
2741 CASE_IGNORE,
2742 CASE_IGNORE,
2743 CASE_IGNORE,
2744 CASE_IGNORE,
2745 /*	8		9		:		;	*/
2746 CASE_IGNORE,
2747 CASE_IGNORE,
2748 CASE_IGNORE,
2749 CASE_IGNORE,
2750 /*	<		=		>		?	*/
2751 CASE_IGNORE,
2752 CASE_IGNORE,
2753 CASE_IGNORE,
2754 CASE_IGNORE,
2755 /*	@		A		B		C	*/
2756 CASE_IGNORE,
2757 CASE_IGNORE,
2758 CASE_IGNORE,
2759 CASE_IGNORE,
2760 /*	D		E		F		G	*/
2761 CASE_IGNORE,
2762 CASE_IGNORE,
2763 CASE_IGNORE,
2764 CASE_IGNORE,
2765 /*	H		I		J		K	*/
2766 CASE_IGNORE,
2767 CASE_IGNORE,
2768 CASE_IGNORE,
2769 CASE_IGNORE,
2770 /*	L		M		N		O	*/
2771 CASE_IGNORE,
2772 CASE_IGNORE,
2773 CASE_IGNORE,
2774 CASE_IGNORE,
2775 /*	P		Q		R		S	*/
2776 CASE_IGNORE,
2777 CASE_IGNORE,
2778 CASE_IGNORE,
2779 CASE_IGNORE,
2780 /*	T		U		V		W	*/
2781 CASE_IGNORE,
2782 CASE_IGNORE,
2783 CASE_IGNORE,
2784 CASE_IGNORE,
2785 /*	X		Y		Z		[	*/
2786 CASE_IGNORE,
2787 CASE_IGNORE,
2788 CASE_IGNORE,
2789 CASE_IGNORE,
2790 /*	\		]		^		_	*/
2791 CASE_IGNORE,
2792 CASE_IGNORE,
2793 CASE_IGNORE,
2794 CASE_IGNORE,
2795 /*	`		a		b		c	*/
2796 CASE_IGNORE,
2797 CASE_IGNORE,
2798 CASE_IGNORE,
2799 CASE_IGNORE,
2800 /*	d		e		f		g	*/
2801 CASE_IGNORE,
2802 CASE_IGNORE,
2803 CASE_IGNORE,
2804 CASE_IGNORE,
2805 /*	h		i		j		k	*/
2806 CASE_IGNORE,
2807 CASE_IGNORE,
2808 CASE_IGNORE,
2809 CASE_IGNORE,
2810 /*	l		m		n		o	*/
2811 CASE_IGNORE,
2812 CASE_IGNORE,
2813 CASE_IGNORE,
2814 CASE_IGNORE,
2815 /*	p		q		r		s	*/
2816 CASE_IGNORE,
2817 CASE_IGNORE,
2818 CASE_IGNORE,
2819 CASE_IGNORE,
2820 /*	t		u		v		w	*/
2821 CASE_IGNORE,
2822 CASE_IGNORE,
2823 CASE_IGNORE,
2824 CASE_IGNORE,
2825 /*	x		y		z		{	*/
2826 CASE_IGNORE,
2827 CASE_IGNORE,
2828 CASE_IGNORE,
2829 CASE_IGNORE,
2830 /*	|		}		~		DEL	*/
2831 CASE_IGNORE,
2832 CASE_IGNORE,
2833 CASE_IGNORE,
2834 CASE_IGNORE,
2835 /*      0x80            0x81            0x82            0x83    */
2836 CASE_IGNORE,
2837 CASE_IGNORE,
2838 CASE_IGNORE,
2839 CASE_IGNORE,
2840 /*      0x84            0x85            0x86            0x87    */
2841 CASE_IGNORE,
2842 CASE_IGNORE,
2843 CASE_IGNORE,
2844 CASE_IGNORE,
2845 /*      0x88            0x89            0x8a            0x8b    */
2846 CASE_IGNORE,
2847 CASE_IGNORE,
2848 CASE_IGNORE,
2849 CASE_IGNORE,
2850 /*      0x8c            0x8d            0x8e            0x8f    */
2851 CASE_IGNORE,
2852 CASE_IGNORE,
2853 CASE_IGNORE,
2854 CASE_IGNORE,
2855 /*      0x90            0x91            0x92            0x93    */
2856 CASE_IGNORE,
2857 CASE_IGNORE,
2858 CASE_IGNORE,
2859 CASE_IGNORE,
2860 /*      0x94            0x95            0x96            0x97    */
2861 CASE_IGNORE,
2862 CASE_IGNORE,
2863 CASE_IGNORE,
2864 CASE_IGNORE,
2865 /*      0x99            0x99            0x9a            0x9b    */
2866 CASE_IGNORE,
2867 CASE_IGNORE,
2868 CASE_IGNORE,
2869 CASE_IGNORE,
2870 /*      0x9c            0x9d            0x9e            0x9f    */
2871 CASE_IGNORE,
2872 CASE_IGNORE,
2873 CASE_IGNORE,
2874 CASE_IGNORE,
2875 /*      nobreakspace    exclamdown      cent            sterling        */
2876 CASE_GROUND_STATE,
2877 CASE_GROUND_STATE,
2878 CASE_GROUND_STATE,
2879 CASE_GROUND_STATE,
2880 /*      currency        yen             brokenbar       section         */
2881 CASE_GROUND_STATE,
2882 CASE_GROUND_STATE,
2883 CASE_GROUND_STATE,
2884 CASE_GROUND_STATE,
2885 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
2886 CASE_GROUND_STATE,
2887 CASE_GROUND_STATE,
2888 CASE_GROUND_STATE,
2889 CASE_GROUND_STATE,
2890 /*      notsign         hyphen          registered      macron          */
2891 CASE_GROUND_STATE,
2892 CASE_GROUND_STATE,
2893 CASE_GROUND_STATE,
2894 CASE_GROUND_STATE,
2895 /*      degree          plusminus       twosuperior     threesuperior   */
2896 CASE_GROUND_STATE,
2897 CASE_GROUND_STATE,
2898 CASE_GROUND_STATE,
2899 CASE_GROUND_STATE,
2900 /*      acute           mu              paragraph       periodcentered  */
2901 CASE_GROUND_STATE,
2902 CASE_GROUND_STATE,
2903 CASE_GROUND_STATE,
2904 CASE_GROUND_STATE,
2905 /*      cedilla         onesuperior     masculine       guillemotright  */
2906 CASE_GROUND_STATE,
2907 CASE_GROUND_STATE,
2908 CASE_GROUND_STATE,
2909 CASE_GROUND_STATE,
2910 /*      onequarter      onehalf         threequarters   questiondown    */
2911 CASE_GROUND_STATE,
2912 CASE_GROUND_STATE,
2913 CASE_GROUND_STATE,
2914 CASE_GROUND_STATE,
2915 /*      Agrave          Aacute          Acircumflex     Atilde          */
2916 CASE_GROUND_STATE,
2917 CASE_GROUND_STATE,
2918 CASE_GROUND_STATE,
2919 CASE_GROUND_STATE,
2920 /*      Adiaeresis      Aring           AE              Ccedilla        */
2921 CASE_GROUND_STATE,
2922 CASE_GROUND_STATE,
2923 CASE_GROUND_STATE,
2924 CASE_GROUND_STATE,
2925 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
2926 CASE_GROUND_STATE,
2927 CASE_GROUND_STATE,
2928 CASE_GROUND_STATE,
2929 CASE_GROUND_STATE,
2930 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
2931 CASE_GROUND_STATE,
2932 CASE_GROUND_STATE,
2933 CASE_GROUND_STATE,
2934 CASE_GROUND_STATE,
2935 /*      Eth             Ntilde          Ograve          Oacute          */
2936 CASE_GROUND_STATE,
2937 CASE_GROUND_STATE,
2938 CASE_GROUND_STATE,
2939 CASE_GROUND_STATE,
2940 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
2941 CASE_GROUND_STATE,
2942 CASE_GROUND_STATE,
2943 CASE_GROUND_STATE,
2944 CASE_GROUND_STATE,
2945 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
2946 CASE_GROUND_STATE,
2947 CASE_GROUND_STATE,
2948 CASE_GROUND_STATE,
2949 CASE_GROUND_STATE,
2950 /*      Udiaeresis      Yacute          Thorn           ssharp          */
2951 CASE_GROUND_STATE,
2952 CASE_GROUND_STATE,
2953 CASE_GROUND_STATE,
2954 CASE_GROUND_STATE,
2955 /*      agrave          aacute          acircumflex     atilde          */
2956 CASE_GROUND_STATE,
2957 CASE_GROUND_STATE,
2958 CASE_GROUND_STATE,
2959 CASE_GROUND_STATE,
2960 /*      adiaeresis      aring           ae              ccedilla        */
2961 CASE_GROUND_STATE,
2962 CASE_GROUND_STATE,
2963 CASE_GROUND_STATE,
2964 CASE_GROUND_STATE,
2965 /*      egrave          eacute          ecircumflex     ediaeresis      */
2966 CASE_GROUND_STATE,
2967 CASE_GROUND_STATE,
2968 CASE_GROUND_STATE,
2969 CASE_GROUND_STATE,
2970 /*      igrave          iacute          icircumflex     idiaeresis      */
2971 CASE_GROUND_STATE,
2972 CASE_GROUND_STATE,
2973 CASE_GROUND_STATE,
2974 CASE_GROUND_STATE,
2975 /*      eth             ntilde          ograve          oacute          */
2976 CASE_GROUND_STATE,
2977 CASE_GROUND_STATE,
2978 CASE_GROUND_STATE,
2979 CASE_GROUND_STATE,
2980 /*      ocircumflex     otilde          odiaeresis      division        */
2981 CASE_GROUND_STATE,
2982 CASE_GROUND_STATE,
2983 CASE_GROUND_STATE,
2984 CASE_GROUND_STATE,
2985 /*      oslash          ugrave          uacute          ucircumflex     */
2986 CASE_GROUND_STATE,
2987 CASE_GROUND_STATE,
2988 CASE_GROUND_STATE,
2989 CASE_GROUND_STATE,
2990 /*      udiaeresis      yacute          thorn           ydiaeresis      */
2991 CASE_GROUND_STATE,
2992 CASE_GROUND_STATE,
2993 CASE_GROUND_STATE,
2994 CASE_GROUND_STATE,
2995 };
2996 
2997 // #pragma mark ESC # - SCR table
2998 int gScrTable[] =
2999 {
3000 /*	NUL		SOH		STX		ETX	*/
3001 CASE_IGNORE,
3002 CASE_IGNORE,
3003 CASE_IGNORE,
3004 CASE_IGNORE,
3005 /*	EOT		ENQ		ACK		BEL	*/
3006 CASE_IGNORE,
3007 CASE_IGNORE,
3008 CASE_IGNORE,
3009 CASE_BELL,
3010 /*	BS		HT		NL		VT	*/
3011 CASE_BS,
3012 CASE_TAB,
3013 CASE_VMOT,
3014 CASE_VMOT,
3015 /*	NP		CR		SO		SI	*/
3016 CASE_VMOT,
3017 CASE_CR,
3018 CASE_SO,
3019 CASE_SI,
3020 /*	DLE		DC1		DC2		DC3	*/
3021 CASE_IGNORE,
3022 CASE_IGNORE,
3023 CASE_IGNORE,
3024 CASE_IGNORE,
3025 /*	DC4		NAK		SYN		ETB	*/
3026 CASE_IGNORE,
3027 CASE_IGNORE,
3028 CASE_IGNORE,
3029 CASE_IGNORE,
3030 /*	CAN		EM		SUB		ESC	*/
3031 CASE_IGNORE,
3032 CASE_IGNORE,
3033 CASE_IGNORE,
3034 CASE_ESC,
3035 /*	FS		GS		RS		US	*/
3036 CASE_IGNORE,
3037 CASE_IGNORE,
3038 CASE_IGNORE,
3039 CASE_IGNORE,
3040 /*	SP		!		"		#	*/
3041 CASE_ESC_IGNORE,
3042 CASE_ESC_IGNORE,
3043 CASE_ESC_IGNORE,
3044 CASE_ESC_IGNORE,
3045 /*	$		%		&		'	*/
3046 CASE_ESC_IGNORE,
3047 CASE_ESC_IGNORE,
3048 CASE_ESC_IGNORE,
3049 CASE_ESC_IGNORE,
3050 /*	(		)		*		+	*/
3051 CASE_ESC_IGNORE,
3052 CASE_ESC_IGNORE,
3053 CASE_ESC_IGNORE,
3054 CASE_ESC_IGNORE,
3055 /*	,		-		.		/	*/
3056 CASE_ESC_IGNORE,
3057 CASE_ESC_IGNORE,
3058 CASE_ESC_IGNORE,
3059 CASE_ESC_IGNORE,
3060 /*	0		1		2		3	*/
3061 CASE_GROUND_STATE,
3062 CASE_GROUND_STATE,
3063 CASE_GROUND_STATE,
3064 CASE_GROUND_STATE,
3065 /*	4		5		6		7	*/
3066 CASE_GROUND_STATE,
3067 CASE_GROUND_STATE,
3068 CASE_GROUND_STATE,
3069 CASE_GROUND_STATE,
3070 /*	8		9		:		;	*/
3071 CASE_DECALN,
3072 CASE_GROUND_STATE,
3073 CASE_GROUND_STATE,
3074 CASE_GROUND_STATE,
3075 /*	<		=		>		?	*/
3076 CASE_GROUND_STATE,
3077 CASE_GROUND_STATE,
3078 CASE_GROUND_STATE,
3079 CASE_GROUND_STATE,
3080 /*	@		A		B		C	*/
3081 CASE_GROUND_STATE,
3082 CASE_GROUND_STATE,
3083 CASE_GROUND_STATE,
3084 CASE_GROUND_STATE,
3085 /*	D		E		F		G	*/
3086 CASE_GROUND_STATE,
3087 CASE_GROUND_STATE,
3088 CASE_GROUND_STATE,
3089 CASE_GROUND_STATE,
3090 /*	H		I		J		K	*/
3091 CASE_GROUND_STATE,
3092 CASE_GROUND_STATE,
3093 CASE_GROUND_STATE,
3094 CASE_GROUND_STATE,
3095 /*	L		M		N		O	*/
3096 CASE_GROUND_STATE,
3097 CASE_GROUND_STATE,
3098 CASE_GROUND_STATE,
3099 CASE_GROUND_STATE,
3100 /*	P		Q		R		S	*/
3101 CASE_GROUND_STATE,
3102 CASE_GROUND_STATE,
3103 CASE_GROUND_STATE,
3104 CASE_GROUND_STATE,
3105 /*	T		U		V		W	*/
3106 CASE_GROUND_STATE,
3107 CASE_GROUND_STATE,
3108 CASE_GROUND_STATE,
3109 CASE_GROUND_STATE,
3110 /*	X		Y		Z		[	*/
3111 CASE_GROUND_STATE,
3112 CASE_GROUND_STATE,
3113 CASE_GROUND_STATE,
3114 CASE_GROUND_STATE,
3115 /*	\		]		^		_	*/
3116 CASE_GROUND_STATE,
3117 CASE_GROUND_STATE,
3118 CASE_GROUND_STATE,
3119 CASE_GROUND_STATE,
3120 /*	`		a		b		c	*/
3121 CASE_GROUND_STATE,
3122 CASE_GROUND_STATE,
3123 CASE_GROUND_STATE,
3124 CASE_GROUND_STATE,
3125 /*	d		e		f		g	*/
3126 CASE_GROUND_STATE,
3127 CASE_GROUND_STATE,
3128 CASE_GROUND_STATE,
3129 CASE_GROUND_STATE,
3130 /*	h		i		j		k	*/
3131 CASE_GROUND_STATE,
3132 CASE_GROUND_STATE,
3133 CASE_GROUND_STATE,
3134 CASE_GROUND_STATE,
3135 /*	l		m		n		o	*/
3136 CASE_GROUND_STATE,
3137 CASE_GROUND_STATE,
3138 CASE_GROUND_STATE,
3139 CASE_GROUND_STATE,
3140 /*	p		q		r		s	*/
3141 CASE_GROUND_STATE,
3142 CASE_GROUND_STATE,
3143 CASE_GROUND_STATE,
3144 CASE_GROUND_STATE,
3145 /*	t		u		v		w	*/
3146 CASE_GROUND_STATE,
3147 CASE_GROUND_STATE,
3148 CASE_GROUND_STATE,
3149 CASE_GROUND_STATE,
3150 /*	x		y		z		{	*/
3151 CASE_GROUND_STATE,
3152 CASE_GROUND_STATE,
3153 CASE_GROUND_STATE,
3154 CASE_GROUND_STATE,
3155 /*	|		}		~		DEL	*/
3156 CASE_GROUND_STATE,
3157 CASE_GROUND_STATE,
3158 CASE_GROUND_STATE,
3159 CASE_GROUND_STATE,
3160 /*      0x80            0x81            0x82            0x83    */
3161 CASE_IGNORE,
3162 CASE_IGNORE,
3163 CASE_IGNORE,
3164 CASE_IGNORE,
3165 /*      0x84            0x85            0x86            0x87    */
3166 CASE_IGNORE,
3167 CASE_IGNORE,
3168 CASE_IGNORE,
3169 CASE_IGNORE,
3170 /*      0x88            0x89            0x8a            0x8b    */
3171 CASE_IGNORE,
3172 CASE_IGNORE,
3173 CASE_IGNORE,
3174 CASE_IGNORE,
3175 /*      0x8c            0x8d            0x8e            0x8f    */
3176 CASE_IGNORE,
3177 CASE_IGNORE,
3178 CASE_IGNORE,
3179 CASE_IGNORE,
3180 /*      0x90            0x91            0x92            0x93    */
3181 CASE_IGNORE,
3182 CASE_IGNORE,
3183 CASE_IGNORE,
3184 CASE_IGNORE,
3185 /*      0x94            0x95            0x96            0x97    */
3186 CASE_IGNORE,
3187 CASE_IGNORE,
3188 CASE_IGNORE,
3189 CASE_IGNORE,
3190 /*      0x99            0x99            0x9a            0x9b    */
3191 CASE_IGNORE,
3192 CASE_IGNORE,
3193 CASE_IGNORE,
3194 CASE_IGNORE,
3195 /*      0x9c            0x9d            0x9e            0x9f    */
3196 CASE_IGNORE,
3197 CASE_IGNORE,
3198 CASE_IGNORE,
3199 CASE_IGNORE,
3200 /*      nobreakspace    exclamdown      cent            sterling        */
3201 CASE_GROUND_STATE,
3202 CASE_GROUND_STATE,
3203 CASE_GROUND_STATE,
3204 CASE_GROUND_STATE,
3205 /*      currency        yen             brokenbar       section         */
3206 CASE_GROUND_STATE,
3207 CASE_GROUND_STATE,
3208 CASE_GROUND_STATE,
3209 CASE_GROUND_STATE,
3210 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
3211 CASE_GROUND_STATE,
3212 CASE_GROUND_STATE,
3213 CASE_GROUND_STATE,
3214 CASE_GROUND_STATE,
3215 /*      notsign         hyphen          registered      macron          */
3216 CASE_GROUND_STATE,
3217 CASE_GROUND_STATE,
3218 CASE_GROUND_STATE,
3219 CASE_GROUND_STATE,
3220 /*      degree          plusminus       twosuperior     threesuperior   */
3221 CASE_GROUND_STATE,
3222 CASE_GROUND_STATE,
3223 CASE_GROUND_STATE,
3224 CASE_GROUND_STATE,
3225 /*      acute           mu              paragraph       periodcentered  */
3226 CASE_GROUND_STATE,
3227 CASE_GROUND_STATE,
3228 CASE_GROUND_STATE,
3229 CASE_GROUND_STATE,
3230 /*      cedilla         onesuperior     masculine       guillemotright  */
3231 CASE_GROUND_STATE,
3232 CASE_GROUND_STATE,
3233 CASE_GROUND_STATE,
3234 CASE_GROUND_STATE,
3235 /*      onequarter      onehalf         threequarters   questiondown    */
3236 CASE_GROUND_STATE,
3237 CASE_GROUND_STATE,
3238 CASE_GROUND_STATE,
3239 CASE_GROUND_STATE,
3240 /*      Agrave          Aacute          Acircumflex     Atilde          */
3241 CASE_GROUND_STATE,
3242 CASE_GROUND_STATE,
3243 CASE_GROUND_STATE,
3244 CASE_GROUND_STATE,
3245 /*      Adiaeresis      Aring           AE              Ccedilla        */
3246 CASE_GROUND_STATE,
3247 CASE_GROUND_STATE,
3248 CASE_GROUND_STATE,
3249 CASE_GROUND_STATE,
3250 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
3251 CASE_GROUND_STATE,
3252 CASE_GROUND_STATE,
3253 CASE_GROUND_STATE,
3254 CASE_GROUND_STATE,
3255 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
3256 CASE_GROUND_STATE,
3257 CASE_GROUND_STATE,
3258 CASE_GROUND_STATE,
3259 CASE_GROUND_STATE,
3260 /*      Eth             Ntilde          Ograve          Oacute          */
3261 CASE_GROUND_STATE,
3262 CASE_GROUND_STATE,
3263 CASE_GROUND_STATE,
3264 CASE_GROUND_STATE,
3265 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
3266 CASE_GROUND_STATE,
3267 CASE_GROUND_STATE,
3268 CASE_GROUND_STATE,
3269 CASE_GROUND_STATE,
3270 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
3271 CASE_GROUND_STATE,
3272 CASE_GROUND_STATE,
3273 CASE_GROUND_STATE,
3274 CASE_GROUND_STATE,
3275 /*      Udiaeresis      Yacute          Thorn           ssharp          */
3276 CASE_GROUND_STATE,
3277 CASE_GROUND_STATE,
3278 CASE_GROUND_STATE,
3279 CASE_GROUND_STATE,
3280 /*      agrave          aacute          acircumflex     atilde          */
3281 CASE_GROUND_STATE,
3282 CASE_GROUND_STATE,
3283 CASE_GROUND_STATE,
3284 CASE_GROUND_STATE,
3285 /*      adiaeresis      aring           ae              ccedilla        */
3286 CASE_GROUND_STATE,
3287 CASE_GROUND_STATE,
3288 CASE_GROUND_STATE,
3289 CASE_GROUND_STATE,
3290 /*      egrave          eacute          ecircumflex     ediaeresis      */
3291 CASE_GROUND_STATE,
3292 CASE_GROUND_STATE,
3293 CASE_GROUND_STATE,
3294 CASE_GROUND_STATE,
3295 /*      igrave          iacute          icircumflex     idiaeresis      */
3296 CASE_GROUND_STATE,
3297 CASE_GROUND_STATE,
3298 CASE_GROUND_STATE,
3299 CASE_GROUND_STATE,
3300 /*      eth             ntilde          ograve          oacute          */
3301 CASE_GROUND_STATE,
3302 CASE_GROUND_STATE,
3303 CASE_GROUND_STATE,
3304 CASE_GROUND_STATE,
3305 /*      ocircumflex     otilde          odiaeresis      division        */
3306 CASE_GROUND_STATE,
3307 CASE_GROUND_STATE,
3308 CASE_GROUND_STATE,
3309 CASE_GROUND_STATE,
3310 /*      oslash          ugrave          uacute          ucircumflex     */
3311 CASE_GROUND_STATE,
3312 CASE_GROUND_STATE,
3313 CASE_GROUND_STATE,
3314 CASE_GROUND_STATE,
3315 /*      udiaeresis      yacute          thorn           ydiaeresis      */
3316 CASE_GROUND_STATE,
3317 CASE_GROUND_STATE,
3318 CASE_GROUND_STATE,
3319 CASE_GROUND_STATE,
3320 };
3321 
3322 // #pragma mark ESC ( - SCS table
3323 int gScsTable[] =
3324 {
3325 /*	NUL		SOH		STX		ETX	*/
3326 CASE_IGNORE,
3327 CASE_IGNORE,
3328 CASE_IGNORE,
3329 CASE_IGNORE,
3330 /*	EOT		ENQ		ACK		BEL	*/
3331 CASE_IGNORE,
3332 CASE_IGNORE,
3333 CASE_IGNORE,
3334 CASE_BELL,
3335 /*	BS		HT		NL		VT	*/
3336 CASE_BS,
3337 CASE_TAB,
3338 CASE_VMOT,
3339 CASE_VMOT,
3340 /*	NP		CR		SO		SI	*/
3341 CASE_VMOT,
3342 CASE_CR,
3343 CASE_SO,
3344 CASE_SI,
3345 /*	DLE		DC1		DC2		DC3	*/
3346 CASE_IGNORE,
3347 CASE_IGNORE,
3348 CASE_IGNORE,
3349 CASE_IGNORE,
3350 /*	DC4		NAK		SYN		ETB	*/
3351 CASE_IGNORE,
3352 CASE_IGNORE,
3353 CASE_IGNORE,
3354 CASE_IGNORE,
3355 /*	CAN		EM		SUB		ESC	*/
3356 CASE_IGNORE,
3357 CASE_IGNORE,
3358 CASE_IGNORE,
3359 CASE_ESC,
3360 /*	FS		GS		RS		US	*/
3361 CASE_IGNORE,
3362 CASE_IGNORE,
3363 CASE_IGNORE,
3364 CASE_IGNORE,
3365 /*	SP		!		"		#	*/
3366 CASE_ESC_IGNORE,
3367 CASE_ESC_IGNORE,
3368 CASE_ESC_IGNORE,
3369 CASE_ESC_IGNORE,
3370 /*	$		%		&		'	*/
3371 CASE_ESC_IGNORE,
3372 CASE_ESC_IGNORE,
3373 CASE_ESC_IGNORE,
3374 CASE_ESC_IGNORE,
3375 /*	(		)		*		+	*/
3376 CASE_ESC_IGNORE,
3377 CASE_ESC_IGNORE,
3378 CASE_ESC_IGNORE,
3379 CASE_ESC_IGNORE,
3380 /*	,		-		.		/	*/
3381 CASE_ESC_IGNORE,
3382 CASE_ESC_IGNORE,
3383 CASE_ESC_IGNORE,
3384 CASE_ESC_IGNORE,
3385 #ifdef USE_ISO2022
3386 /*	0		1		2		3	*/
3387 CASE_GSETS,
3388 CASE_GSETS,
3389 CASE_GSETS,
3390 CASE_GSETS,
3391 /*	4		5		6		7	*/
3392 CASE_GSETS,
3393 CASE_GSETS,
3394 CASE_GSETS,
3395 CASE_GSETS,
3396 /*	8		9		:		;	*/
3397 CASE_GSETS,
3398 CASE_GSETS,
3399 CASE_GSETS,
3400 CASE_GSETS,
3401 /*	<		=		>		?	*/
3402 CASE_GSETS,
3403 CASE_GSETS,
3404 CASE_GSETS,
3405 CASE_GSETS,
3406 /*	@		A		B		C	*/
3407 CASE_GSETS,
3408 CASE_GSETS,
3409 CASE_GSETS,
3410 CASE_GSETS,
3411 /*	D		E		F		G	*/
3412 CASE_GSETS,
3413 CASE_GSETS,
3414 CASE_GSETS,
3415 CASE_GSETS,
3416 /*	H		I		J		K	*/
3417 CASE_GSETS,
3418 CASE_GSETS,
3419 CASE_GSETS,
3420 CASE_GSETS,
3421 /*	L		M		N		O	*/
3422 CASE_GSETS,
3423 CASE_GSETS,
3424 CASE_GSETS,
3425 CASE_GSETS,
3426 /*	P		Q		R		S	*/
3427 CASE_GSETS,
3428 CASE_GSETS,
3429 CASE_GSETS,
3430 CASE_GSETS,
3431 /*	T		U		V		W	*/
3432 CASE_GSETS,
3433 CASE_GSETS,
3434 CASE_GSETS,
3435 CASE_GSETS,
3436 /*	X		Y		Z		[	*/
3437 CASE_GSETS,
3438 CASE_GSETS,
3439 CASE_GSETS,
3440 CASE_GSETS,
3441 /*	\		]		^		_	*/
3442 CASE_GSETS,
3443 CASE_GSETS,
3444 CASE_GSETS,
3445 CASE_GSETS,
3446 /*	`		a		b		c	*/
3447 CASE_GSETS,
3448 CASE_GSETS,
3449 CASE_GSETS,
3450 CASE_GSETS,
3451 /*	d		e		f		g	*/
3452 CASE_GSETS,
3453 CASE_GSETS,
3454 CASE_GSETS,
3455 CASE_GSETS,
3456 /*	h		i		j		k	*/
3457 CASE_GSETS,
3458 CASE_GSETS,
3459 CASE_GSETS,
3460 CASE_GSETS,
3461 /*	l		m		n		o	*/
3462 CASE_GSETS,
3463 CASE_GSETS,
3464 CASE_GSETS,
3465 CASE_GROUND_STATE, /* GSET('p') >= 0x40 (MBCS flag) */
3466 /*	p		q		r		s	*/
3467 CASE_GROUND_STATE,
3468 CASE_GROUND_STATE,
3469 CASE_GROUND_STATE,
3470 CASE_GROUND_STATE,
3471 /*	t		u		v		w	*/
3472 CASE_GROUND_STATE,
3473 CASE_GROUND_STATE,
3474 CASE_GROUND_STATE,
3475 CASE_GROUND_STATE,
3476 /*	x		y		z		{	*/
3477 CASE_GROUND_STATE,
3478 CASE_GROUND_STATE,
3479 CASE_GROUND_STATE,
3480 CASE_GROUND_STATE,
3481 /*	|		}		~		DEL	*/
3482 CASE_GROUND_STATE,
3483 CASE_GROUND_STATE,
3484 CASE_GROUND_STATE, /* empty character set */
3485 CASE_GROUND_STATE,
3486 #else /* !USE_ISO2022 */
3487 /*	0		1		2		3	*/
3488 CASE_GSETS,
3489 CASE_GSETS,
3490 CASE_GSETS,
3491 CASE_GROUND_STATE,
3492 /*	4		5		6		7	*/
3493 CASE_GROUND_STATE,
3494 CASE_GROUND_STATE,
3495 CASE_GROUND_STATE,
3496 CASE_GROUND_STATE,
3497 /*	8		9		:		;	*/
3498 CASE_GROUND_STATE,
3499 CASE_GROUND_STATE,
3500 CASE_GROUND_STATE,
3501 CASE_GROUND_STATE,
3502 /*	<		=		>		?	*/
3503 CASE_GROUND_STATE,
3504 CASE_GROUND_STATE,
3505 CASE_GROUND_STATE,
3506 CASE_GROUND_STATE,
3507 /*	@		A		B		C	*/
3508 CASE_GROUND_STATE,
3509 CASE_GSETS,
3510 CASE_GSETS,
3511 CASE_GROUND_STATE,
3512 /*	D		E		F		G	*/
3513 CASE_GROUND_STATE,
3514 CASE_GROUND_STATE,
3515 CASE_GROUND_STATE,
3516 CASE_GROUND_STATE,
3517 /*	H		I		J		K	*/
3518 CASE_GROUND_STATE,
3519 CASE_GROUND_STATE,
3520 CASE_GROUND_STATE,
3521 CASE_GROUND_STATE,
3522 /*	L		M		N		O	*/
3523 CASE_GROUND_STATE,
3524 CASE_GROUND_STATE,
3525 CASE_GROUND_STATE,
3526 CASE_GROUND_STATE,
3527 /*	P		Q		R		S	*/
3528 CASE_GROUND_STATE,
3529 CASE_GROUND_STATE,
3530 CASE_GROUND_STATE,
3531 CASE_GROUND_STATE,
3532 /*	T		U		V		W	*/
3533 CASE_GROUND_STATE,
3534 CASE_GROUND_STATE,
3535 CASE_GROUND_STATE,
3536 CASE_GROUND_STATE,
3537 /*	X		Y		Z		[	*/
3538 CASE_GROUND_STATE,
3539 CASE_GROUND_STATE,
3540 CASE_GROUND_STATE,
3541 CASE_GROUND_STATE,
3542 /*	\		]		^		_	*/
3543 CASE_GROUND_STATE,
3544 CASE_GROUND_STATE,
3545 CASE_GROUND_STATE,
3546 CASE_GROUND_STATE,
3547 /*	`		a		b		c	*/
3548 CASE_GROUND_STATE,
3549 CASE_GROUND_STATE,
3550 CASE_GROUND_STATE,
3551 CASE_GROUND_STATE,
3552 /*	d		e		f		g	*/
3553 CASE_GROUND_STATE,
3554 CASE_GROUND_STATE,
3555 CASE_GROUND_STATE,
3556 CASE_GROUND_STATE,
3557 /*	h		i		j		k	*/
3558 CASE_GROUND_STATE,
3559 CASE_GROUND_STATE,
3560 CASE_GROUND_STATE,
3561 CASE_GROUND_STATE,
3562 /*	l		m		n		o	*/
3563 CASE_GROUND_STATE,
3564 CASE_GROUND_STATE,
3565 CASE_GROUND_STATE,
3566 CASE_GROUND_STATE,
3567 /*	p		q		r		s	*/
3568 CASE_GROUND_STATE,
3569 CASE_GROUND_STATE,
3570 CASE_GROUND_STATE,
3571 CASE_GROUND_STATE,
3572 /*	t		u		v		w	*/
3573 CASE_GROUND_STATE,
3574 CASE_GROUND_STATE,
3575 CASE_GROUND_STATE,
3576 CASE_GROUND_STATE,
3577 /*	x		y		z		{	*/
3578 CASE_GROUND_STATE,
3579 CASE_GROUND_STATE,
3580 CASE_GROUND_STATE,
3581 CASE_GROUND_STATE,
3582 /*	|		}		~		DEL	*/
3583 CASE_GROUND_STATE,
3584 CASE_GROUND_STATE,
3585 CASE_GROUND_STATE,
3586 CASE_GROUND_STATE,
3587 #endif /* !USE_ISO2022 */
3588 /*      0x80            0x81            0x82            0x83    */
3589 CASE_IGNORE,
3590 CASE_IGNORE,
3591 CASE_IGNORE,
3592 CASE_IGNORE,
3593 /*      0x84            0x85            0x86            0x87    */
3594 CASE_IGNORE,
3595 CASE_IGNORE,
3596 CASE_IGNORE,
3597 CASE_IGNORE,
3598 /*      0x88            0x89            0x8a            0x8b    */
3599 CASE_IGNORE,
3600 CASE_IGNORE,
3601 CASE_IGNORE,
3602 CASE_IGNORE,
3603 /*      0x8c            0x8d            0x8e            0x8f    */
3604 CASE_IGNORE,
3605 CASE_IGNORE,
3606 CASE_IGNORE,
3607 CASE_IGNORE,
3608 /*      0x90            0x91            0x92            0x93    */
3609 CASE_IGNORE,
3610 CASE_IGNORE,
3611 CASE_IGNORE,
3612 CASE_IGNORE,
3613 /*      0x94            0x95            0x96            0x97    */
3614 CASE_IGNORE,
3615 CASE_IGNORE,
3616 CASE_IGNORE,
3617 CASE_IGNORE,
3618 /*      0x99            0x99            0x9a            0x9b    */
3619 CASE_IGNORE,
3620 CASE_IGNORE,
3621 CASE_IGNORE,
3622 CASE_IGNORE,
3623 /*      0x9c            0x9d            0x9e            0x9f    */
3624 CASE_IGNORE,
3625 CASE_IGNORE,
3626 CASE_IGNORE,
3627 CASE_IGNORE,
3628 /*      nobreakspace    exclamdown      cent            sterling        */
3629 CASE_GROUND_STATE,
3630 CASE_GROUND_STATE,
3631 CASE_GROUND_STATE,
3632 CASE_GROUND_STATE,
3633 /*      currency        yen             brokenbar       section         */
3634 CASE_GROUND_STATE,
3635 CASE_GROUND_STATE,
3636 CASE_GROUND_STATE,
3637 CASE_GROUND_STATE,
3638 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
3639 CASE_GROUND_STATE,
3640 CASE_GROUND_STATE,
3641 CASE_GROUND_STATE,
3642 CASE_GROUND_STATE,
3643 /*      notsign         hyphen          registered      macron          */
3644 CASE_GROUND_STATE,
3645 CASE_GROUND_STATE,
3646 CASE_GROUND_STATE,
3647 CASE_GROUND_STATE,
3648 /*      degree          plusminus       twosuperior     threesuperior   */
3649 CASE_GROUND_STATE,
3650 CASE_GROUND_STATE,
3651 CASE_GROUND_STATE,
3652 CASE_GROUND_STATE,
3653 /*      acute           mu              paragraph       periodcentered  */
3654 CASE_GROUND_STATE,
3655 CASE_GROUND_STATE,
3656 CASE_GROUND_STATE,
3657 CASE_GROUND_STATE,
3658 /*      cedilla         onesuperior     masculine       guillemotright  */
3659 CASE_GROUND_STATE,
3660 CASE_GROUND_STATE,
3661 CASE_GROUND_STATE,
3662 CASE_GROUND_STATE,
3663 /*      onequarter      onehalf         threequarters   questiondown    */
3664 CASE_GROUND_STATE,
3665 CASE_GROUND_STATE,
3666 CASE_GROUND_STATE,
3667 CASE_GROUND_STATE,
3668 /*      Agrave          Aacute          Acircumflex     Atilde          */
3669 CASE_GROUND_STATE,
3670 CASE_GROUND_STATE,
3671 CASE_GROUND_STATE,
3672 CASE_GROUND_STATE,
3673 /*      Adiaeresis      Aring           AE              Ccedilla        */
3674 CASE_GROUND_STATE,
3675 CASE_GROUND_STATE,
3676 CASE_GROUND_STATE,
3677 CASE_GROUND_STATE,
3678 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
3679 CASE_GROUND_STATE,
3680 CASE_GROUND_STATE,
3681 CASE_GROUND_STATE,
3682 CASE_GROUND_STATE,
3683 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
3684 CASE_GROUND_STATE,
3685 CASE_GROUND_STATE,
3686 CASE_GROUND_STATE,
3687 CASE_GROUND_STATE,
3688 /*      Eth             Ntilde          Ograve          Oacute          */
3689 CASE_GROUND_STATE,
3690 CASE_GROUND_STATE,
3691 CASE_GROUND_STATE,
3692 CASE_GROUND_STATE,
3693 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
3694 CASE_GROUND_STATE,
3695 CASE_GROUND_STATE,
3696 CASE_GROUND_STATE,
3697 CASE_GROUND_STATE,
3698 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
3699 CASE_GROUND_STATE,
3700 CASE_GROUND_STATE,
3701 CASE_GROUND_STATE,
3702 CASE_GROUND_STATE,
3703 /*      Udiaeresis      Yacute          Thorn           ssharp          */
3704 CASE_GROUND_STATE,
3705 CASE_GROUND_STATE,
3706 CASE_GROUND_STATE,
3707 CASE_GROUND_STATE,
3708 /*      agrave          aacute          acircumflex     atilde          */
3709 CASE_GROUND_STATE,
3710 CASE_GROUND_STATE,
3711 CASE_GROUND_STATE,
3712 CASE_GROUND_STATE,
3713 /*      adiaeresis      aring           ae              ccedilla        */
3714 CASE_GROUND_STATE,
3715 CASE_GROUND_STATE,
3716 CASE_GROUND_STATE,
3717 CASE_GROUND_STATE,
3718 /*      egrave          eacute          ecircumflex     ediaeresis      */
3719 CASE_GROUND_STATE,
3720 CASE_GROUND_STATE,
3721 CASE_GROUND_STATE,
3722 CASE_GROUND_STATE,
3723 /*      igrave          iacute          icircumflex     idiaeresis      */
3724 CASE_GROUND_STATE,
3725 CASE_GROUND_STATE,
3726 CASE_GROUND_STATE,
3727 CASE_GROUND_STATE,
3728 /*      eth             ntilde          ograve          oacute          */
3729 CASE_GROUND_STATE,
3730 CASE_GROUND_STATE,
3731 CASE_GROUND_STATE,
3732 CASE_GROUND_STATE,
3733 /*      ocircumflex     otilde          odiaeresis      division        */
3734 CASE_GROUND_STATE,
3735 CASE_GROUND_STATE,
3736 CASE_GROUND_STATE,
3737 CASE_GROUND_STATE,
3738 /*      oslash          ugrave          uacute          ucircumflex     */
3739 CASE_GROUND_STATE,
3740 CASE_GROUND_STATE,
3741 CASE_GROUND_STATE,
3742 CASE_GROUND_STATE,
3743 /*      udiaeresis      yacute          thorn           ydiaeresis      */
3744 CASE_GROUND_STATE,
3745 CASE_GROUND_STATE,
3746 CASE_GROUND_STATE,
3747 CASE_GROUND_STATE,
3748 };
3749 
3750 #ifdef USE_MBCS
3751 // #pragma mark MBCS table
3752 int gMbcsTable[] = {
3753 /*	NUL		SOH		STX		ETX	*/
3754 CASE_IGNORE,
3755 CASE_IGNORE,
3756 CASE_IGNORE,
3757 CASE_IGNORE,
3758 /*	EOT		ENQ		ACK		BEL	*/
3759 CASE_IGNORE,
3760 CASE_IGNORE,
3761 CASE_IGNORE,
3762 CASE_BELL,
3763 /*	BS		HT		NL		VT	*/
3764 CASE_BS,
3765 CASE_TAB,
3766 CASE_VMOT,
3767 CASE_VMOT,
3768 /*	NP		CR		SO		SI	*/
3769 CASE_VMOT,
3770 CASE_CR,
3771 CASE_SO,
3772 CASE_SI,
3773 /*	DLE		DC1		DC2		DC3	*/
3774 CASE_IGNORE,
3775 CASE_IGNORE,
3776 CASE_IGNORE,
3777 CASE_IGNORE,
3778 /*	DC4		NAK		SYN		ETB	*/
3779 CASE_IGNORE,
3780 CASE_IGNORE,
3781 CASE_IGNORE,
3782 CASE_IGNORE,
3783 /*	CAN		EM		SUB		ESC	*/
3784 CASE_IGNORE,
3785 CASE_IGNORE,
3786 CASE_IGNORE,
3787 CASE_ESC,
3788 /*	FS		GS		RS		US	*/
3789 CASE_IGNORE,
3790 CASE_IGNORE,
3791 CASE_IGNORE,
3792 CASE_IGNORE,
3793 /*	SP		!		"		#	*/
3794 CASE_ESC_IGNORE,
3795 CASE_ESC_IGNORE,
3796 CASE_ESC_IGNORE,
3797 CASE_ESC_IGNORE,
3798 /*	$		%		&		'	*/
3799 CASE_ESC_IGNORE,
3800 CASE_ESC_IGNORE,
3801 CASE_ESC_IGNORE,
3802 CASE_ESC_IGNORE,
3803 /*	(		)		*		+	*/
3804 CASE_IGNORE, /*CASE_SCS_STATE,*/
3805 CASE_SCS_STATE,
3806 CASE_SCS_STATE,
3807 CASE_SCS_STATE,
3808 /*	,		-		.		/	*/
3809 CASE_ESC_IGNORE,
3810 CASE_SCS_STATE,
3811 CASE_SCS_STATE,
3812 CASE_SCS_STATE,
3813 /*	0		1		2		3	*/
3814 CASE_GROUND_STATE,
3815 CASE_GROUND_STATE,
3816 CASE_GROUND_STATE,
3817 CASE_GROUND_STATE,
3818 /*	4		5		6		7	*/
3819 CASE_GROUND_STATE,
3820 CASE_GROUND_STATE,
3821 CASE_GROUND_STATE,
3822 CASE_GROUND_STATE,
3823 /*	8		9		:		;	*/
3824 CASE_GROUND_STATE,
3825 CASE_GROUND_STATE,
3826 CASE_GROUND_STATE,
3827 CASE_GROUND_STATE,
3828 /*	<		=		>		?	*/
3829 CASE_GROUND_STATE,
3830 CASE_GROUND_STATE,
3831 CASE_GROUND_STATE,
3832 CASE_GROUND_STATE,
3833 /*	@		A		B		C	*/
3834 CASE_GSETS,	/* ESC-$-@ (JIS-78) */
3835 CASE_GSETS,	/* ESC-$-A (GB) */
3836 CASE_GSETS,	/* ESC-$-B (JIS-83) */
3837 CASE_GROUND_STATE,
3838 /*	D		E		F		G	*/
3839 CASE_GROUND_STATE,
3840 CASE_GROUND_STATE,
3841 CASE_GROUND_STATE,
3842 CASE_GROUND_STATE,
3843 /*	H		I		J		K	*/
3844 CASE_GROUND_STATE,
3845 CASE_GROUND_STATE,
3846 CASE_GROUND_STATE,
3847 CASE_GROUND_STATE,
3848 /*	L		M		N		O	*/
3849 CASE_GROUND_STATE,
3850 CASE_GROUND_STATE,
3851 CASE_GROUND_STATE,
3852 CASE_GROUND_STATE,
3853 /*	P		Q		R		S	*/
3854 CASE_IGNORE_STATE,
3855 CASE_GROUND_STATE,
3856 CASE_GROUND_STATE,
3857 CASE_GROUND_STATE,
3858 /*	T		U		V		W	*/
3859 CASE_GROUND_STATE,
3860 CASE_GROUND_STATE,
3861 CASE_GROUND_STATE,
3862 CASE_GROUND_STATE,
3863 /*	X		Y		Z		[	*/
3864 CASE_GROUND_STATE,
3865 CASE_GROUND_STATE,
3866 CASE_GROUND_STATE,
3867 CASE_GROUND_STATE,
3868 /*	\		]		^		_	*/
3869 CASE_GROUND_STATE,
3870 CASE_GROUND_STATE,
3871 CASE_IGNORE_STATE,
3872 CASE_IGNORE_STATE,
3873 /*	`		a		b		c	*/
3874 CASE_GROUND_STATE,
3875 CASE_GROUND_STATE,
3876 CASE_GROUND_STATE,
3877 CASE_GROUND_STATE,
3878 /*	d		e		f		g	*/
3879 CASE_GROUND_STATE,
3880 CASE_GROUND_STATE,
3881 CASE_GROUND_STATE,
3882 CASE_GROUND_STATE,
3883 /*	h		i		j		k	*/
3884 CASE_GROUND_STATE,
3885 CASE_GROUND_STATE,
3886 CASE_GROUND_STATE,
3887 CASE_GROUND_STATE,
3888 /*	l		m		n		o	*/
3889 CASE_GROUND_STATE,
3890 CASE_GROUND_STATE,
3891 CASE_GROUND_STATE,
3892 CASE_GROUND_STATE,
3893 /*	p		q		r		s	*/
3894 CASE_GROUND_STATE,
3895 CASE_GROUND_STATE,
3896 CASE_GROUND_STATE,
3897 CASE_GROUND_STATE,
3898 /*	t		u		v		w	*/
3899 CASE_GROUND_STATE,
3900 CASE_GROUND_STATE,
3901 CASE_GROUND_STATE,
3902 CASE_GROUND_STATE,
3903 /*	x		y		z		{	*/
3904 CASE_GROUND_STATE,
3905 CASE_GROUND_STATE,
3906 CASE_GROUND_STATE,
3907 CASE_GROUND_STATE,
3908 /*	|		}		~		DEL	*/
3909 CASE_GROUND_STATE,
3910 CASE_GROUND_STATE,
3911 CASE_GROUND_STATE,
3912 CASE_GROUND_STATE,
3913 /*      0x80            0x81            0x82            0x83    */
3914 CASE_IGNORE,
3915 CASE_IGNORE,
3916 CASE_IGNORE,
3917 CASE_IGNORE,
3918 /*      0x84            0x85            0x86            0x87    */
3919 CASE_IGNORE,
3920 CASE_IGNORE,
3921 CASE_IGNORE,
3922 CASE_IGNORE,
3923 /*      0x88            0x89            0x8a            0x8b    */
3924 CASE_IGNORE,
3925 CASE_IGNORE,
3926 CASE_IGNORE,
3927 CASE_IGNORE,
3928 /*      0x8c            0x8d            0x8e            0x8f    */
3929 CASE_IGNORE,
3930 CASE_IGNORE,
3931 CASE_IGNORE,
3932 CASE_IGNORE,
3933 /*      0x90            0x91            0x92            0x93    */
3934 CASE_IGNORE,
3935 CASE_IGNORE,
3936 CASE_IGNORE,
3937 CASE_IGNORE,
3938 /*      0x94            0x95            0x96            0x97    */
3939 CASE_IGNORE,
3940 CASE_IGNORE,
3941 CASE_IGNORE,
3942 CASE_IGNORE,
3943 /*      0x99            0x99            0x9a            0x9b    */
3944 CASE_IGNORE,
3945 CASE_IGNORE,
3946 CASE_IGNORE,
3947 CASE_IGNORE,
3948 /*      0x9c            0x9d            0x9e            0x9f    */
3949 CASE_IGNORE,
3950 CASE_IGNORE,
3951 CASE_IGNORE,
3952 CASE_IGNORE,
3953 /*      nobreakspace    exclamdown      cent            sterling        */
3954 CASE_GROUND_STATE,
3955 CASE_GROUND_STATE,
3956 CASE_GROUND_STATE,
3957 CASE_GROUND_STATE,
3958 /*      currency        yen             brokenbar       section         */
3959 CASE_GROUND_STATE,
3960 CASE_GROUND_STATE,
3961 CASE_GROUND_STATE,
3962 CASE_GROUND_STATE,
3963 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
3964 CASE_GROUND_STATE,
3965 CASE_GROUND_STATE,
3966 CASE_GROUND_STATE,
3967 CASE_GROUND_STATE,
3968 /*      notsign         hyphen          registered      macron          */
3969 CASE_GROUND_STATE,
3970 CASE_GROUND_STATE,
3971 CASE_GROUND_STATE,
3972 CASE_GROUND_STATE,
3973 /*      degree          plusminus       twosuperior     threesuperior   */
3974 CASE_GROUND_STATE,
3975 CASE_GROUND_STATE,
3976 CASE_GROUND_STATE,
3977 CASE_GROUND_STATE,
3978 /*      acute           mu              paragraph       periodcentered  */
3979 CASE_GROUND_STATE,
3980 CASE_GROUND_STATE,
3981 CASE_GROUND_STATE,
3982 CASE_GROUND_STATE,
3983 /*      cedilla         onesuperior     masculine       guillemotright  */
3984 CASE_GROUND_STATE,
3985 CASE_GROUND_STATE,
3986 CASE_GROUND_STATE,
3987 CASE_GROUND_STATE,
3988 /*      onequarter      onehalf         threequarters   questiondown    */
3989 CASE_GROUND_STATE,
3990 CASE_GROUND_STATE,
3991 CASE_GROUND_STATE,
3992 CASE_GROUND_STATE,
3993 /*      Agrave          Aacute          Acircumflex     Atilde          */
3994 CASE_GROUND_STATE,
3995 CASE_GROUND_STATE,
3996 CASE_GROUND_STATE,
3997 CASE_GROUND_STATE,
3998 /*      Adiaeresis      Aring           AE              Ccedilla        */
3999 CASE_GROUND_STATE,
4000 CASE_GROUND_STATE,
4001 CASE_GROUND_STATE,
4002 CASE_GROUND_STATE,
4003 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
4004 CASE_GROUND_STATE,
4005 CASE_GROUND_STATE,
4006 CASE_GROUND_STATE,
4007 CASE_GROUND_STATE,
4008 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
4009 CASE_GROUND_STATE,
4010 CASE_GROUND_STATE,
4011 CASE_GROUND_STATE,
4012 CASE_GROUND_STATE,
4013 /*      Eth             Ntilde          Ograve          Oacute          */
4014 CASE_GROUND_STATE,
4015 CASE_GROUND_STATE,
4016 CASE_GROUND_STATE,
4017 CASE_GROUND_STATE,
4018 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
4019 CASE_GROUND_STATE,
4020 CASE_GROUND_STATE,
4021 CASE_GROUND_STATE,
4022 CASE_GROUND_STATE,
4023 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
4024 CASE_GROUND_STATE,
4025 CASE_GROUND_STATE,
4026 CASE_GROUND_STATE,
4027 CASE_GROUND_STATE,
4028 /*      Udiaeresis      Yacute          Thorn           ssharp          */
4029 CASE_GROUND_STATE,
4030 CASE_GROUND_STATE,
4031 CASE_GROUND_STATE,
4032 CASE_GROUND_STATE,
4033 /*      agrave          aacute          acircumflex     atilde          */
4034 CASE_GROUND_STATE,
4035 CASE_GROUND_STATE,
4036 CASE_GROUND_STATE,
4037 CASE_GROUND_STATE,
4038 /*      adiaeresis      aring           ae              ccedilla        */
4039 CASE_GROUND_STATE,
4040 CASE_GROUND_STATE,
4041 CASE_GROUND_STATE,
4042 CASE_GROUND_STATE,
4043 /*      egrave          eacute          ecircumflex     ediaeresis      */
4044 CASE_GROUND_STATE,
4045 CASE_GROUND_STATE,
4046 CASE_GROUND_STATE,
4047 CASE_GROUND_STATE,
4048 /*      igrave          iacute          icircumflex     idiaeresis      */
4049 CASE_GROUND_STATE,
4050 CASE_GROUND_STATE,
4051 CASE_GROUND_STATE,
4052 CASE_GROUND_STATE,
4053 /*      eth             ntilde          ograve          oacute          */
4054 CASE_GROUND_STATE,
4055 CASE_GROUND_STATE,
4056 CASE_GROUND_STATE,
4057 CASE_GROUND_STATE,
4058 /*      ocircumflex     otilde          odiaeresis      division        */
4059 CASE_GROUND_STATE,
4060 CASE_GROUND_STATE,
4061 CASE_GROUND_STATE,
4062 CASE_GROUND_STATE,
4063 /*      oslash          ugrave          uacute          ucircumflex     */
4064 CASE_GROUND_STATE,
4065 CASE_GROUND_STATE,
4066 CASE_GROUND_STATE,
4067 CASE_GROUND_STATE,
4068 /*      udiaeresis      yacute          thorn           ydiaeresis      */
4069 CASE_GROUND_STATE,
4070 CASE_GROUND_STATE,
4071 CASE_GROUND_STATE,
4072 CASE_GROUND_STATE,
4073 };
4074 
4075 // #pragma mark SMBCS table
4076 int gSmbcsTable[] = {
4077 /*	NUL		SOH		STX		ETX	*/
4078 CASE_IGNORE,
4079 CASE_IGNORE,
4080 CASE_IGNORE,
4081 CASE_IGNORE,
4082 /*	EOT		ENQ		ACK		BEL	*/
4083 CASE_IGNORE,
4084 CASE_IGNORE,
4085 CASE_IGNORE,
4086 CASE_BELL,
4087 /*	BS		HT		NL		VT	*/
4088 CASE_BS,
4089 CASE_TAB,
4090 CASE_VMOT,
4091 CASE_VMOT,
4092 /*	NP		CR		SO		SI	*/
4093 CASE_VMOT,
4094 CASE_CR,
4095 CASE_SO,
4096 CASE_SI,
4097 /*	DLE		DC1		DC2		DC3	*/
4098 CASE_IGNORE,
4099 CASE_IGNORE,
4100 CASE_IGNORE,
4101 CASE_IGNORE,
4102 /*	DC4		NAK		SYN		ETB	*/
4103 CASE_IGNORE,
4104 CASE_IGNORE,
4105 CASE_IGNORE,
4106 CASE_IGNORE,
4107 /*	CAN		EM		SUB		ESC	*/
4108 CASE_IGNORE,
4109 CASE_IGNORE,
4110 CASE_IGNORE,
4111 CASE_ESC,
4112 /*	FS		GS		RS		US	*/
4113 CASE_IGNORE,
4114 CASE_IGNORE,
4115 CASE_IGNORE,
4116 CASE_IGNORE,
4117 /*	SP		!		"		#	*/
4118 CASE_ESC_IGNORE,
4119 CASE_ESC_IGNORE,
4120 CASE_ESC_IGNORE,
4121 CASE_ESC_IGNORE,
4122 /*	$		%		&		'	*/
4123 CASE_ESC_IGNORE,
4124 CASE_ESC_IGNORE,
4125 CASE_ESC_IGNORE,
4126 CASE_ESC_IGNORE,
4127 /*	(		)		*		+	*/
4128 CASE_ESC_IGNORE,
4129 CASE_ESC_IGNORE,
4130 CASE_ESC_IGNORE,
4131 CASE_ESC_IGNORE,
4132 /*	,		-		.		/	*/
4133 CASE_ESC_IGNORE,
4134 CASE_ESC_IGNORE,
4135 CASE_ESC_IGNORE,
4136 CASE_ESC_IGNORE,
4137 /*	0		1		2		3	*/
4138 CASE_GROUND_STATE, /* (2-byte or more) private character set */
4139 CASE_GROUND_STATE,
4140 CASE_GROUND_STATE,
4141 CASE_GROUND_STATE,
4142 /*	4		5		6		7	*/
4143 CASE_GROUND_STATE,
4144 CASE_GROUND_STATE,
4145 CASE_GROUND_STATE,
4146 CASE_GROUND_STATE,
4147 /*	8		9		:		;	*/
4148 CASE_GROUND_STATE,
4149 CASE_GROUND_STATE,
4150 CASE_GROUND_STATE,
4151 CASE_GROUND_STATE,
4152 /*	<		=		>		?	*/
4153 CASE_GROUND_STATE,
4154 CASE_GROUND_STATE,
4155 CASE_GROUND_STATE,
4156 CASE_GROUND_STATE,
4157 /*	@		A		B		C	*/
4158 CASE_GSETS,	/* ESC-$-I-F */
4159 CASE_GSETS,
4160 CASE_GSETS,
4161 CASE_GSETS,
4162 /*	D		E		F		G	*/
4163 CASE_GSETS,
4164 CASE_GSETS,
4165 CASE_GSETS,
4166 CASE_GSETS,
4167 /*	H		I		J		K	*/
4168 CASE_GSETS,
4169 CASE_GSETS,
4170 CASE_GSETS,
4171 CASE_GSETS,
4172 /*	L		M		N		O	*/
4173 CASE_GSETS,
4174 CASE_GSETS,
4175 CASE_GSETS,
4176 CASE_GSETS,
4177 /*	P		Q		R		S	*/
4178 CASE_GSETS,
4179 CASE_GSETS,
4180 CASE_GSETS,
4181 CASE_GSETS,
4182 /*	T		U		V		W	*/
4183 CASE_GSETS,
4184 CASE_GSETS,
4185 CASE_GSETS,
4186 CASE_GSETS,
4187 /*	X		Y		Z		[	*/
4188 CASE_GSETS,
4189 CASE_GSETS,
4190 CASE_GSETS,
4191 CASE_GSETS,
4192 /*	\		]		^		_	*/
4193 CASE_GSETS,
4194 CASE_GSETS,
4195 CASE_GSETS,
4196 CASE_GSETS,
4197 /*	`		a		b		c	*/
4198 CASE_GROUND_STATE, /* 3-byte character set */
4199 CASE_GROUND_STATE,
4200 CASE_GROUND_STATE,
4201 CASE_GROUND_STATE,
4202 /*	d		e		f		g	*/
4203 CASE_GROUND_STATE,
4204 CASE_GROUND_STATE,
4205 CASE_GROUND_STATE,
4206 CASE_GROUND_STATE,
4207 /*	h		i		j		k	*/
4208 CASE_GROUND_STATE,
4209 CASE_GROUND_STATE,
4210 CASE_GROUND_STATE,
4211 CASE_GROUND_STATE,
4212 /*	l		m		n		o	*/
4213 CASE_GROUND_STATE,
4214 CASE_GROUND_STATE,
4215 CASE_GROUND_STATE,
4216 CASE_GROUND_STATE,
4217 /*	p		q		r		s	*/
4218 CASE_GROUND_STATE, /* 4-byte character set */
4219 CASE_GROUND_STATE,
4220 CASE_GROUND_STATE,
4221 CASE_GROUND_STATE,
4222 /*	t		u		v		w	*/
4223 CASE_GROUND_STATE,
4224 CASE_GROUND_STATE,
4225 CASE_GROUND_STATE,
4226 CASE_GROUND_STATE,
4227 /*	x		y		z		{	*/
4228 CASE_GROUND_STATE,
4229 CASE_GROUND_STATE,
4230 CASE_GROUND_STATE,
4231 CASE_GROUND_STATE,
4232 /*	|		}		~		DEL	*/
4233 CASE_GROUND_STATE,
4234 CASE_GROUND_STATE,
4235 CASE_GROUND_STATE,
4236 CASE_GROUND_STATE,
4237 /*      0x80            0x81            0x82            0x83    */
4238 CASE_IGNORE,
4239 CASE_IGNORE,
4240 CASE_IGNORE,
4241 CASE_IGNORE,
4242 /*      0x84            0x85            0x86            0x87    */
4243 CASE_IGNORE,
4244 CASE_IGNORE,
4245 CASE_IGNORE,
4246 CASE_IGNORE,
4247 /*      0x88            0x89            0x8a            0x8b    */
4248 CASE_IGNORE,
4249 CASE_IGNORE,
4250 CASE_IGNORE,
4251 CASE_IGNORE,
4252 /*      0x8c            0x8d            0x8e            0x8f    */
4253 CASE_IGNORE,
4254 CASE_IGNORE,
4255 CASE_IGNORE,
4256 CASE_IGNORE,
4257 /*      0x90            0x91            0x92            0x93    */
4258 CASE_IGNORE,
4259 CASE_IGNORE,
4260 CASE_IGNORE,
4261 CASE_IGNORE,
4262 /*      0x94            0x95            0x96            0x97    */
4263 CASE_IGNORE,
4264 CASE_IGNORE,
4265 CASE_IGNORE,
4266 CASE_IGNORE,
4267 /*      0x99            0x99            0x9a            0x9b    */
4268 CASE_IGNORE,
4269 CASE_IGNORE,
4270 CASE_IGNORE,
4271 CASE_IGNORE,
4272 /*      0x9c            0x9d            0x9e            0x9f    */
4273 CASE_IGNORE,
4274 CASE_IGNORE,
4275 CASE_IGNORE,
4276 CASE_IGNORE,
4277 /*      nobreakspace    exclamdown      cent            sterling        */
4278 CASE_GROUND_STATE,
4279 CASE_GROUND_STATE,
4280 CASE_GROUND_STATE,
4281 CASE_GROUND_STATE,
4282 /*      currency        yen             brokenbar       section         */
4283 CASE_GROUND_STATE,
4284 CASE_GROUND_STATE,
4285 CASE_GROUND_STATE,
4286 CASE_GROUND_STATE,
4287 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
4288 CASE_GROUND_STATE,
4289 CASE_GROUND_STATE,
4290 CASE_GROUND_STATE,
4291 CASE_GROUND_STATE,
4292 /*      notsign         hyphen          registered      macron          */
4293 CASE_GROUND_STATE,
4294 CASE_GROUND_STATE,
4295 CASE_GROUND_STATE,
4296 CASE_GROUND_STATE,
4297 /*      degree          plusminus       twosuperior     threesuperior   */
4298 CASE_GROUND_STATE,
4299 CASE_GROUND_STATE,
4300 CASE_GROUND_STATE,
4301 CASE_GROUND_STATE,
4302 /*      acute           mu              paragraph       periodcentered  */
4303 CASE_GROUND_STATE,
4304 CASE_GROUND_STATE,
4305 CASE_GROUND_STATE,
4306 CASE_GROUND_STATE,
4307 /*      cedilla         onesuperior     masculine       guillemotright  */
4308 CASE_GROUND_STATE,
4309 CASE_GROUND_STATE,
4310 CASE_GROUND_STATE,
4311 CASE_GROUND_STATE,
4312 /*      onequarter      onehalf         threequarters   questiondown    */
4313 CASE_GROUND_STATE,
4314 CASE_GROUND_STATE,
4315 CASE_GROUND_STATE,
4316 CASE_GROUND_STATE,
4317 /*      Agrave          Aacute          Acircumflex     Atilde          */
4318 CASE_GROUND_STATE,
4319 CASE_GROUND_STATE,
4320 CASE_GROUND_STATE,
4321 CASE_GROUND_STATE,
4322 /*      Adiaeresis      Aring           AE              Ccedilla        */
4323 CASE_GROUND_STATE,
4324 CASE_GROUND_STATE,
4325 CASE_GROUND_STATE,
4326 CASE_GROUND_STATE,
4327 /*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
4328 CASE_GROUND_STATE,
4329 CASE_GROUND_STATE,
4330 CASE_GROUND_STATE,
4331 CASE_GROUND_STATE,
4332 /*      Igrave          Iacute          Icircumflex     Idiaeresis      */
4333 CASE_GROUND_STATE,
4334 CASE_GROUND_STATE,
4335 CASE_GROUND_STATE,
4336 CASE_GROUND_STATE,
4337 /*      Eth             Ntilde          Ograve          Oacute          */
4338 CASE_GROUND_STATE,
4339 CASE_GROUND_STATE,
4340 CASE_GROUND_STATE,
4341 CASE_GROUND_STATE,
4342 /*      Ocircumflex     Otilde          Odiaeresis      multiply        */
4343 CASE_GROUND_STATE,
4344 CASE_GROUND_STATE,
4345 CASE_GROUND_STATE,
4346 CASE_GROUND_STATE,
4347 /*      Ooblique        Ugrave          Uacute          Ucircumflex     */
4348 CASE_GROUND_STATE,
4349 CASE_GROUND_STATE,
4350 CASE_GROUND_STATE,
4351 CASE_GROUND_STATE,
4352 /*      Udiaeresis      Yacute          Thorn           ssharp          */
4353 CASE_GROUND_STATE,
4354 CASE_GROUND_STATE,
4355 CASE_GROUND_STATE,
4356 CASE_GROUND_STATE,
4357 /*      agrave          aacute          acircumflex     atilde          */
4358 CASE_GROUND_STATE,
4359 CASE_GROUND_STATE,
4360 CASE_GROUND_STATE,
4361 CASE_GROUND_STATE,
4362 /*      adiaeresis      aring           ae              ccedilla        */
4363 CASE_GROUND_STATE,
4364 CASE_GROUND_STATE,
4365 CASE_GROUND_STATE,
4366 CASE_GROUND_STATE,
4367 /*      egrave          eacute          ecircumflex     ediaeresis      */
4368 CASE_GROUND_STATE,
4369 CASE_GROUND_STATE,
4370 CASE_GROUND_STATE,
4371 CASE_GROUND_STATE,
4372 /*      igrave          iacute          icircumflex     idiaeresis      */
4373 CASE_GROUND_STATE,
4374 CASE_GROUND_STATE,
4375 CASE_GROUND_STATE,
4376 CASE_GROUND_STATE,
4377 /*      eth             ntilde          ograve          oacute          */
4378 CASE_GROUND_STATE,
4379 CASE_GROUND_STATE,
4380 CASE_GROUND_STATE,
4381 CASE_GROUND_STATE,
4382 /*      ocircumflex     otilde          odiaeresis      division        */
4383 CASE_GROUND_STATE,
4384 CASE_GROUND_STATE,
4385 CASE_GROUND_STATE,
4386 CASE_GROUND_STATE,
4387 /*      oslash          ugrave          uacute          ucircumflex     */
4388 CASE_GROUND_STATE,
4389 CASE_GROUND_STATE,
4390 CASE_GROUND_STATE,
4391 CASE_GROUND_STATE,
4392 /*      udiaeresis      yacute          thorn           ydiaeresis      */
4393 CASE_GROUND_STATE,
4394 CASE_GROUND_STATE,
4395 CASE_GROUND_STATE,
4396 CASE_GROUND_STATE,
4397 };
4398 
4399 #endif
4400 
4401 // #pragma mark Shift-JIS ground table
4402 int gSJISGroundTable[] =
4403 {
4404 /*	NUL		SOH		STX		ETX	*/
4405 CASE_IGNORE,
4406 CASE_IGNORE,
4407 CASE_IGNORE,
4408 CASE_IGNORE,
4409 /*	EOT		ENQ		ACK		BEL	*/
4410 CASE_IGNORE,
4411 CASE_IGNORE,
4412 CASE_IGNORE,
4413 CASE_BELL,
4414 /*	BS		HT		NL		VT	*/
4415 CASE_BS,
4416 CASE_TAB,
4417 CASE_LF,
4418 CASE_LF, /*CASE_UP,*/
4419 /*	NP		CR		SO		SI	*/
4420 CASE_LF, /*CASE_IGNORE,*/
4421 CASE_CR,
4422 CASE_SO,
4423 CASE_SI,
4424 /*	DLE		DC1		DC2		DC3	*/
4425 CASE_IGNORE,
4426 CASE_IGNORE,
4427 CASE_IGNORE,
4428 CASE_IGNORE,
4429 /*	DC4		NAK		SYN		ETB	*/
4430 CASE_IGNORE,
4431 CASE_IGNORE,
4432 CASE_IGNORE,
4433 CASE_IGNORE,
4434 /*	CAN		EM		SUB		ESC	*/
4435 CASE_IGNORE,
4436 CASE_IGNORE,
4437 CASE_IGNORE,
4438 CASE_ESC,
4439 /*	FS		GS		RS		US	*/
4440 CASE_IGNORE,
4441 CASE_IGNORE,
4442 CASE_IGNORE,
4443 CASE_IGNORE,
4444 /*	SP		!		"		#	*/
4445 CASE_PRINT,
4446 CASE_PRINT,
4447 CASE_PRINT,
4448 CASE_PRINT,
4449 /*	$		%		&		'	*/
4450 CASE_PRINT,
4451 CASE_PRINT,
4452 CASE_PRINT,
4453 CASE_PRINT,
4454 /*	(		)		*		+	*/
4455 CASE_PRINT,
4456 CASE_PRINT,
4457 CASE_PRINT,
4458 CASE_PRINT,
4459 /*	,		-		.		/	*/
4460 CASE_PRINT,
4461 CASE_PRINT,
4462 CASE_PRINT,
4463 CASE_PRINT,
4464 /*	0		1		2		3	*/
4465 CASE_PRINT,
4466 CASE_PRINT,
4467 CASE_PRINT,
4468 CASE_PRINT,
4469 /*	4		5		6		7	*/
4470 CASE_PRINT,
4471 CASE_PRINT,
4472 CASE_PRINT,
4473 CASE_PRINT,
4474 /*	8		9		:		;	*/
4475 CASE_PRINT,
4476 CASE_PRINT,
4477 CASE_PRINT,
4478 CASE_PRINT,
4479 /*	<		=		>		?	*/
4480 CASE_PRINT,
4481 CASE_PRINT,
4482 CASE_PRINT,
4483 CASE_PRINT,
4484 /*	@		A		B		C	*/
4485 CASE_PRINT,
4486 CASE_PRINT,
4487 CASE_PRINT,
4488 CASE_PRINT,
4489 /*	D		E		F		G	*/
4490 CASE_PRINT,
4491 CASE_PRINT,
4492 CASE_PRINT,
4493 CASE_PRINT,
4494 /*	H		I		J		K	*/
4495 CASE_PRINT,
4496 CASE_PRINT,
4497 CASE_PRINT,
4498 CASE_PRINT,
4499 /*	L		M		N		O	*/
4500 CASE_PRINT,
4501 CASE_PRINT,
4502 CASE_PRINT,
4503 CASE_PRINT,
4504 /*	P		Q		R		S	*/
4505 CASE_PRINT,
4506 CASE_PRINT,
4507 CASE_PRINT,
4508 CASE_PRINT,
4509 /*	T		U		V		W	*/
4510 CASE_PRINT,
4511 CASE_PRINT,
4512 CASE_PRINT,
4513 CASE_PRINT,
4514 /*	X		Y		Z		[	*/
4515 CASE_PRINT,
4516 CASE_PRINT,
4517 CASE_PRINT,
4518 CASE_PRINT,
4519 /*	\		]		^		_	*/
4520 CASE_PRINT,
4521 CASE_PRINT,
4522 CASE_PRINT,
4523 CASE_PRINT,
4524 /*	`		a		b		c	*/
4525 CASE_PRINT,
4526 CASE_PRINT,
4527 CASE_PRINT,
4528 CASE_PRINT,
4529 /*	d		e		f		g	*/
4530 CASE_PRINT,
4531 CASE_PRINT,
4532 CASE_PRINT,
4533 CASE_PRINT,
4534 /*	h		i		j		k	*/
4535 CASE_PRINT,
4536 CASE_PRINT,
4537 CASE_PRINT,
4538 CASE_PRINT,
4539 /*	l		m		n		o	*/
4540 CASE_PRINT,
4541 CASE_PRINT,
4542 CASE_PRINT,
4543 CASE_PRINT,
4544 /*	p		q		r		s	*/
4545 CASE_PRINT,
4546 CASE_PRINT,
4547 CASE_PRINT,
4548 CASE_PRINT,
4549 /*	t		u		v		w	*/
4550 CASE_PRINT,
4551 CASE_PRINT,
4552 CASE_PRINT,
4553 CASE_PRINT,
4554 /*	x		y		z		{	*/
4555 CASE_PRINT,
4556 CASE_PRINT,
4557 CASE_PRINT,
4558 CASE_PRINT,
4559 /*	|		}		~		DEL	*/
4560 CASE_PRINT,
4561 CASE_PRINT,
4562 CASE_PRINT,
4563 CASE_PRINT,
4564 /*      0x80            0x81            0x82            0x83    */
4565 CASE_SJIS_INSTRING,
4566 CASE_SJIS_INSTRING,
4567 CASE_SJIS_INSTRING,
4568 CASE_SJIS_INSTRING,
4569 /*      0x84            0x85            0x86            0x87    */
4570 CASE_SJIS_INSTRING,
4571 CASE_SJIS_INSTRING,
4572 CASE_SJIS_INSTRING,
4573 CASE_SJIS_INSTRING,
4574 /*      0x88            0x89            0x8a            0x8b    */
4575 CASE_SJIS_INSTRING,
4576 CASE_SJIS_INSTRING,
4577 CASE_SJIS_INSTRING,
4578 CASE_SJIS_INSTRING,
4579 /*      0x8c            0x8d            0x8e            0x8f    */
4580 CASE_SJIS_INSTRING,
4581 CASE_SJIS_INSTRING,
4582 CASE_SJIS_INSTRING,
4583 CASE_SJIS_INSTRING,
4584 /*      0x90            0x91            0x92            0x93    */
4585 CASE_SJIS_INSTRING,
4586 CASE_SJIS_INSTRING,
4587 CASE_SJIS_INSTRING,
4588 CASE_SJIS_INSTRING,
4589 /*      0x94            0x95            0x96            0x97    */
4590 CASE_SJIS_INSTRING,
4591 CASE_SJIS_INSTRING,
4592 CASE_SJIS_INSTRING,
4593 CASE_SJIS_INSTRING,
4594 /*      0x99            0x99            0x9a            0x9b    */
4595 CASE_SJIS_INSTRING,
4596 CASE_SJIS_INSTRING,
4597 CASE_SJIS_INSTRING,
4598 CASE_SJIS_INSTRING,
4599 /*      0x9c            0x9d            0x9e            0x9f    */
4600 CASE_SJIS_INSTRING,
4601 CASE_SJIS_INSTRING,
4602 CASE_SJIS_INSTRING,
4603 CASE_SJIS_INSTRING,
4604 /*      0xa0		0xa1		0xa2		0xa3	*/
4605 CASE_SJIS_KANA,
4606 CASE_SJIS_KANA,
4607 CASE_SJIS_KANA,
4608 CASE_SJIS_KANA,
4609 /*      0xa4		0xa5		0xa6		0xa7	*/
4610 CASE_SJIS_KANA,
4611 CASE_SJIS_KANA,
4612 CASE_SJIS_KANA,
4613 CASE_SJIS_KANA,
4614 /*      0xa8		0xa9		0xaa		0xab	*/
4615 CASE_SJIS_KANA,
4616 CASE_SJIS_KANA,
4617 CASE_SJIS_KANA,
4618 CASE_SJIS_KANA,
4619 /*      0xac		0xad		0xae		0xaf	*/
4620 CASE_SJIS_KANA,
4621 CASE_SJIS_KANA,
4622 CASE_SJIS_KANA,
4623 CASE_SJIS_KANA,
4624 /*      0xb0		0xb1		0xb2		0xb3	*/
4625 CASE_SJIS_KANA,
4626 CASE_SJIS_KANA,
4627 CASE_SJIS_KANA,
4628 CASE_SJIS_KANA,
4629 /*      0xb4		0xb5		0xb6		0xb7	*/
4630 CASE_SJIS_KANA,
4631 CASE_SJIS_KANA,
4632 CASE_SJIS_KANA,
4633 CASE_SJIS_KANA,
4634 /*      0xb8		0xb9		0xba		0xbb	*/
4635 CASE_SJIS_KANA,
4636 CASE_SJIS_KANA,
4637 CASE_SJIS_KANA,
4638 CASE_SJIS_KANA,
4639 /*      0xbc		0xbd		0xbe		0xbf	*/
4640 CASE_SJIS_KANA,
4641 CASE_SJIS_KANA,
4642 CASE_SJIS_KANA,
4643 CASE_SJIS_KANA,
4644 /*      0xc0		0xc1		0xc2		0xc3	*/
4645 CASE_SJIS_KANA,
4646 CASE_SJIS_KANA,
4647 CASE_SJIS_KANA,
4648 CASE_SJIS_KANA,
4649 /*      0xc4		0xc5		0xc6		0xc7	*/
4650 CASE_SJIS_KANA,
4651 CASE_SJIS_KANA,
4652 CASE_SJIS_KANA,
4653 CASE_SJIS_KANA,
4654 /*      0xc8		0xc9		0xca		0xcb	*/
4655 CASE_SJIS_KANA,
4656 CASE_SJIS_KANA,
4657 CASE_SJIS_KANA,
4658 CASE_SJIS_KANA,
4659 /*      0xcc		0xcd		0xce		0xcf	*/
4660 CASE_SJIS_KANA,
4661 CASE_SJIS_KANA,
4662 CASE_SJIS_KANA,
4663 CASE_SJIS_KANA,
4664 /*      0xd0		0xd1		0xd2		0xd3	*/
4665 CASE_SJIS_KANA,
4666 CASE_SJIS_KANA,
4667 CASE_SJIS_KANA,
4668 CASE_SJIS_KANA,
4669 /*      0xd4		0xd5		0xd6		0xd7	*/
4670 CASE_SJIS_KANA,
4671 CASE_SJIS_KANA,
4672 CASE_SJIS_KANA,
4673 CASE_SJIS_KANA,
4674 /*      0xd8		0xd9		0xda		0xdb	*/
4675 CASE_SJIS_KANA,
4676 CASE_SJIS_KANA,
4677 CASE_SJIS_KANA,
4678 CASE_SJIS_KANA,
4679 /*      0xdc		0xdd		0xde		0xdf	*/
4680 CASE_SJIS_KANA,
4681 CASE_SJIS_KANA,
4682 CASE_SJIS_KANA,
4683 CASE_SJIS_KANA,
4684 /*      0xe0		0xe1		0xe2		0xe3	*/
4685 CASE_SJIS_INSTRING,
4686 CASE_SJIS_INSTRING,
4687 CASE_SJIS_INSTRING,
4688 CASE_SJIS_INSTRING,
4689 /*      0xe4		0xe5		0xe6		0xe7	*/
4690 CASE_SJIS_INSTRING,
4691 CASE_SJIS_INSTRING,
4692 CASE_SJIS_INSTRING,
4693 CASE_SJIS_INSTRING,
4694 /*      0xe8		0xe9		0xea		0xeb	*/
4695 CASE_SJIS_INSTRING,
4696 CASE_SJIS_INSTRING,
4697 CASE_SJIS_INSTRING,
4698 CASE_SJIS_INSTRING,
4699 /*      0xec		0xed		0xee		0xef	*/
4700 CASE_SJIS_INSTRING,
4701 CASE_SJIS_INSTRING,
4702 CASE_SJIS_INSTRING,
4703 CASE_SJIS_INSTRING,
4704 /*      0xf0		0xf1		0xf2		0xf3	*/
4705 CASE_SJIS_INSTRING,
4706 CASE_SJIS_INSTRING,
4707 CASE_SJIS_INSTRING,
4708 CASE_SJIS_INSTRING,
4709 /*      0xf4		0xf5		0xf6		0xf7	*/
4710 CASE_SJIS_INSTRING,
4711 CASE_SJIS_INSTRING,
4712 CASE_SJIS_INSTRING,
4713 CASE_SJIS_INSTRING,
4714 /*      0xf8		0xf9		0xfa		0xfb	*/
4715 CASE_SJIS_INSTRING,
4716 CASE_SJIS_INSTRING,
4717 CASE_SJIS_INSTRING,
4718 CASE_SJIS_INSTRING,
4719 /*      0xfc		0xfd		0xfe		0xff	*/
4720 CASE_SJIS_INSTRING,
4721 CASE_SJIS_INSTRING,
4722 CASE_SJIS_INSTRING,
4723 CASE_SJIS_INSTRING,
4724 };
4725