NXCType.c   [plain text]


/*
 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 * 
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 * 
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 * 
 * @APPLE_LICENSE_HEADER_END@
 */
#pragma CC_NO_MACH_TEXT_SECTIONS
/*
 * Copyright 1990, NeXT, Inc.
 */

/*
 * This file contains global data and the size of the global data can NOT
 * change or otherwise it would make the shared library incompatable.  This
 * file has NOT been padded to allow more data to be added to it because the
 * sizeof(char) is not expected to change.
 */
 
#include "NXCType.h"

const unsigned int _NX_CTypeTable_[1 + 256] = {

/* One extra char in table: */	0,
/*    0	.notdef */	_CTYPE_C,
/*    1	.notdef */	_CTYPE_C,
/*    2	.notdef */	_CTYPE_C,
/*    3	.notdef */	_CTYPE_C,
/*    4	.notdef */	_CTYPE_C,
/*    5	.notdef */	_CTYPE_C,
/*    6	.notdef */	_CTYPE_C,
/*    7	.notdef */	_CTYPE_C,

/*    8	.notdef */	_CTYPE_C,
/*    9	.notdef */	_CTYPE_C|_CTYPE_S,
/*   10	.notdef */	_CTYPE_C|_CTYPE_S,
/*   11	.notdef */	_CTYPE_C|_CTYPE_S,
/*   12	.notdef */	_CTYPE_C|_CTYPE_S,
/*   13	.notdef */	_CTYPE_C|_CTYPE_S,
/*   14	.notdef */	_CTYPE_C,
/*   15	.notdef */	_CTYPE_C,

/*   16	.notdef */	_CTYPE_C,
/*   17	.notdef */	_CTYPE_C,
/*   18	.notdef */	_CTYPE_C,
/*   19	.notdef */	_CTYPE_C,
/*   20	.notdef */	_CTYPE_C,
/*   21	.notdef */	_CTYPE_C,
/*   22	.notdef */	_CTYPE_C,
/*   23	.notdef */	_CTYPE_C,

/*   24	.notdef */	_CTYPE_C,
/*   25	.notdef */	_CTYPE_C,
/*   26	.notdef */	_CTYPE_C,
/*   27	.notdef */	_CTYPE_C,
/*   28	.notdef */	_CTYPE_C,
/*   29	.notdef */	_CTYPE_C,
/*   30	.notdef */	_CTYPE_C,
/*   31	.notdef */	_CTYPE_C,

/*   32	space */	_CTYPE_S|_CTYPE_B,
/*   33	exclam */	_CTYPE_P,
/*   34	quotedbl */	_CTYPE_P,
/*   35	numbersign */	_CTYPE_P,
/*   36	dollar */	_CTYPE_P,
/*   37	percent */	_CTYPE_P,
/*   38	ampersand */	_CTYPE_P,
/*   39	quoteright */	_CTYPE_P,

/*   40	parenleft */	_CTYPE_P,
/*   41	parenright */	_CTYPE_P,
/*   42	asterisk */	_CTYPE_P,
/*   43	plus */		_CTYPE_P,
/*   44	comma */	_CTYPE_P,
/*   45	hyphen */	_CTYPE_P,
/*   46	period */	_CTYPE_P,
/*   47	slash */	_CTYPE_P,

/*   48	zero */		_CTYPE_D,
/*   49	one */		_CTYPE_D,
/*   50	two */		_CTYPE_D,
/*   51	three */	_CTYPE_D,
/*   52	four */		_CTYPE_D,
/*   53	five */		_CTYPE_D,
/*   54	six */		_CTYPE_D,
/*   55	seven */	_CTYPE_D,

/*   56	eight */	_CTYPE_D,
/*   57	nine */		_CTYPE_D,
/*   58	colon */	_CTYPE_P,
/*   59	semicolon */	_CTYPE_P,
/*   60	less */		_CTYPE_P,
/*   61	equal */	_CTYPE_P,
/*   62	greater */	_CTYPE_P,
/*   63	question */	_CTYPE_P,

/*   64	at */		_CTYPE_P,
/*   65	A */		_CTYPE_U|_CTYPE_X,
/*   66	B */		_CTYPE_U|_CTYPE_X,
/*   67	C */		_CTYPE_U|_CTYPE_X,
/*   68	D */		_CTYPE_U|_CTYPE_X,
/*   69	E */		_CTYPE_U|_CTYPE_X,
/*   70	F */		_CTYPE_U|_CTYPE_X,
/*   71	G */		_CTYPE_U,

/*   72	H */	_CTYPE_U,
/*   73	I */	_CTYPE_U,
/*   74	J */	_CTYPE_U,
/*   75	K */	_CTYPE_U,
/*   76	L */	_CTYPE_U,
/*   77	M */	_CTYPE_U,
/*   78	N */	_CTYPE_U,
/*   79	O */	_CTYPE_U,

/*   80	P */	_CTYPE_U,
/*   81	Q */	_CTYPE_U,
/*   82	R */	_CTYPE_U,
/*   83	S */	_CTYPE_U,
/*   84	T */	_CTYPE_U,
/*   85	U */	_CTYPE_U,
/*   86	V */	_CTYPE_U,
/*   87	W */	_CTYPE_U,

/*   88	X */	_CTYPE_U,
/*   89	Y */	_CTYPE_U,
/*   90	Z */	_CTYPE_U,
/*   91	bracketleft */	_CTYPE_P,
/*   92	backslash */	_CTYPE_P,
/*   93	bracketright */	_CTYPE_P,
/*   94	asciicircum */	_CTYPE_P,
/*   95	underscore */	_CTYPE_P,

/*   96	quoteleft */	_CTYPE_P,
/*   97	a */	_CTYPE_L|_CTYPE_X,
/*   98	b */	_CTYPE_L|_CTYPE_X,
/*   99	c */	_CTYPE_L|_CTYPE_X,
/*  100	d */	_CTYPE_L|_CTYPE_X,
/*  101	e */	_CTYPE_L|_CTYPE_X,
/*  102	f */	_CTYPE_L|_CTYPE_X,
/*  103	g */	_CTYPE_L,

/*  104	h */	_CTYPE_L,
/*  105	i */	_CTYPE_L,
/*  106	j */	_CTYPE_L,
/*  107	k */	_CTYPE_L,
/*  108	l */	_CTYPE_L,
/*  109	m */	_CTYPE_L,
/*  110	n */	_CTYPE_L,
/*  111	o */	_CTYPE_L,

/*  112	p */	_CTYPE_L,
/*  113	q */	_CTYPE_L,
/*  114	r */	_CTYPE_L,
/*  115	s */	_CTYPE_L,
/*  116	t */	_CTYPE_L,
/*  117	u */	_CTYPE_L,
/*  118	v */	_CTYPE_L,
/*  119	w */	_CTYPE_L,

/*  120	x */	_CTYPE_L,
/*  121	y */	_CTYPE_L,
/*  122	z */	_CTYPE_L,
/*  123	braceleft */	_CTYPE_P,
/*  124	bar */		_CTYPE_P,
/*  125	braceright */	_CTYPE_P,
/*  126	asciitilde */	_CTYPE_P,
/*  127	.notdef */	_CTYPE_C,

/*  128	.notdef */	_CTYPE_C,
/*  129	Agrave */	_CTYPE_U,
/*  130	Aacute */	_CTYPE_U,
/*  131	Acircumflex */	_CTYPE_U,
/*  132	Atilde */	_CTYPE_U,
/*  133	Adieresis */	_CTYPE_U,
/*  134	Aring */	_CTYPE_U,
/*  135	Ccedilla */	_CTYPE_U,

/*  136	Egrave */	_CTYPE_U,
/*  137	Eacute */	_CTYPE_U,
/*  138	Ecircumflex */	_CTYPE_U,
/*  139	Edieresis */	_CTYPE_U,
/*  140	Igrave */	_CTYPE_U,
/*  141	Iacute */	_CTYPE_U,
/*  142	Icircumflex */	_CTYPE_U,
/*  143	Idieresis */	_CTYPE_U,

/*  144	Eth */		_CTYPE_U,
/*  145	Ntilde */	_CTYPE_U,
/*  146	Ograve */	_CTYPE_U,
/*  147	Oacute */	_CTYPE_U,
/*  148	Ocircumflex */	_CTYPE_U,
/*  149	Otilde */	_CTYPE_U,
/*  150	Odieresis */	_CTYPE_U,
/*  151	Ugrave */	_CTYPE_U,

/*  152	Uacute */	_CTYPE_U,
/*  153	Ucircumflex */	_CTYPE_U,
/*  154	Udieresis */	_CTYPE_U,
/*  155	Yacute */	_CTYPE_U,
/*  156	Thorn */	_CTYPE_U,
/*  157	mu */		_CTYPE_P,
/*  158	multiply */	_CTYPE_P,
/*  159	divide */	_CTYPE_P,

/*  160	copyright */	_CTYPE_P,
/*  161	exclamdown */	_CTYPE_P,
/*  162	cent */		_CTYPE_P,
/*  163	sterling */	_CTYPE_P,
/*  164	fraction */	_CTYPE_P,
/*  165	yen */		_CTYPE_P,
/*  166	florin */	_CTYPE_P,
/*  167	section */	_CTYPE_P,

/*  168	currency */	_CTYPE_P,
/*  169	quotesingle */	_CTYPE_P,
/*  170	quotedblleft */	_CTYPE_P,
/*  171	guillemotleft */ _CTYPE_P,
/*  172	guilsinglleft */ _CTYPE_P,
/*  173	guilsinglright */ _CTYPE_P,
/*  174	fi */		_CTYPE_L,
/*  175	fl */		_CTYPE_L,

/*  176	registered */	_CTYPE_P,
/*  177	endash */	_CTYPE_P,
/*  178	dagger */	_CTYPE_P,
/*  179	daggerdbl */	_CTYPE_P,
/*  180	periodcentered */ _CTYPE_P,
/*  181	brokenbar */	_CTYPE_P,
/*  182	paragraph */	_CTYPE_P,
/*  183	bullet */	_CTYPE_P,

/*  184	quotesinglbase */ _CTYPE_P,
/*  185	quotedblbase */	_CTYPE_P,
/*  186	quotedblright */ _CTYPE_P,
/*  187	guillemotright */ _CTYPE_P,
/*  188	ellipsis */	_CTYPE_P,
/*  189	perthousand */	_CTYPE_P,
/*  190	logicalnot */	_CTYPE_P,
/*  191	questiondown */	_CTYPE_P,

/*  192	onesuperior */	_CTYPE_P,
/*  193	grave */	_CTYPE_P,
/*  194	acute */	_CTYPE_P,
/*  195	circumflex */	_CTYPE_P,
/*  196	tilde */	_CTYPE_P,
/*  197	macron */	_CTYPE_P,
/*  198	breve */	_CTYPE_P,
/*  199	dotaccent */	_CTYPE_P,

/*  200	dieresis */	_CTYPE_P,
/*  201	twosuperior */	_CTYPE_P,
/*  202	ring */		_CTYPE_P,
/*  203	cedilla */	_CTYPE_P,
/*  204	threesuperior */ _CTYPE_P,
/*  205	hungarumlaut */	_CTYPE_P,
/*  206	ogonek */	_CTYPE_P,
/*  207	caron */	_CTYPE_P,

/*  208	emdash */	_CTYPE_P,
/*  209	plusminus */	_CTYPE_P,
/*  210	onequarter */	_CTYPE_P,
/*  211	onehalf */	_CTYPE_P,
/*  212	threequarters */ _CTYPE_P,
/*  213	agrave */	_CTYPE_L,
/*  214	aacute */	_CTYPE_L,
/*  215	acircumflex */	_CTYPE_L,

/*  216	atilde */	_CTYPE_L,
/*  217	adieresis */	_CTYPE_L,
/*  218	aring */	_CTYPE_L,
/*  219	ccedilla */	_CTYPE_L,
/*  220	egrave */	_CTYPE_L,
/*  221	eacute */	_CTYPE_L,
/*  222	ecircumflex */	_CTYPE_L,
/*  223	edieresis */	_CTYPE_L,

/*  224	igrave */	_CTYPE_L,
/*  225	AE */		_CTYPE_U,
/*  226	iacute */	_CTYPE_L,
/*  227	ordfeminine */	_CTYPE_P,
/*  228	icircumflex */	_CTYPE_L,
/*  229	idieresis */	_CTYPE_L,
/*  230	eth */		_CTYPE_L,
/*  231	ntilde */	_CTYPE_L,

/*  232	Lslash */	_CTYPE_U,
/*  233	Oslash */	_CTYPE_U,
/*  234	OE */		_CTYPE_U,
/*  235	ordmasculine */	_CTYPE_P,
/*  236	ograve */	_CTYPE_L,
/*  237	oacute */	_CTYPE_L,
/*  238	ocircumflex */	_CTYPE_L,
/*  239	otilde */	_CTYPE_L,

/*  240	odieresis */	_CTYPE_L,
/*  241	ae */		_CTYPE_L,
/*  242	ugrave */	_CTYPE_L,
/*  243	uacute */	_CTYPE_L,
/*  244	ucircumflex */	_CTYPE_L,
/*  245	dotlessi */	_CTYPE_L,
/*  246	udieresis */	_CTYPE_L,
/*  247	yacute */	_CTYPE_L,

/*  248	lslash */	_CTYPE_L,
/*  249	oslash */	_CTYPE_L,
/*  250	oe */		_CTYPE_L,
/*  251	germandbls */	_CTYPE_L,
/*  252	thorn */	_CTYPE_L,
/*  253	ydieresis */	_CTYPE_L,
/*  254	.notdef */	_CTYPE_C,
/*  255	.notdef */	_CTYPE_C,
};

/*
 * Upper to lower and lower to upper table for NeXTStep encoding (256
 * characters).  An entry of zero means it's not an upper or lower case
 * thing (i.e., isn't alphabetic).  Otherwise, the value at a given
 * position is the opposite case equivalent.  E.g., the entry for the
 * "A" position is "a" and the entry for position "a" is "A".
 *
 * There are some pathological cases: ydieresis, germandbls, and the
 * fi & fl ligatures don't have "other case" equivalents; therefore
 * they're entered as themselves because they are in fact "lower case"
 * and the Type table lists them as _CTYPE_L.
 */
const unsigned char _NX_ULTable_[256] = {
/*    0	.notdef */	0,
/*    1	.notdef */	0,
/*    2	.notdef */	0,
/*    3	.notdef */	0,
/*    4	.notdef */	0,
/*    5	.notdef */	0,
/*    6	.notdef */	0,
/*    7	.notdef */	0,
/*    8	.notdef */	0,
/*    9	.notdef */	0,
/*   10	.notdef */	0,
/*   11	.notdef */	0,
/*   12	.notdef */	0,
/*   13	.notdef */	0,
/*   14	.notdef */	0,
/*   15	.notdef */	0,
/*   16	.notdef */	0,
/*   17	.notdef */	0,
/*   18	.notdef */	0,
/*   19	.notdef */	0,
/*   20	.notdef */	0,
/*   21	.notdef */	0,
/*   22	.notdef */	0,
/*   23	.notdef */	0,
/*   24	.notdef */	0,
/*   25	.notdef */	0,
/*   26	.notdef */	0,
/*   27	.notdef */	0,
/*   28	.notdef */	0,
/*   29	.notdef */	0,
/*   30	.notdef */	0,
/*   31	.notdef */	0,
/*   32	space */	0,
/*   33	exclam */	0,
/*   34	quotedbl */	0,
/*   35	numbersign */	0,
/*   36	dollar */	0,
/*   37	percent */	0,
/*   38	ampersand */	0,
/*   39	quoteright */	0,
/*   40	parenleft */	0,
/*   41	parenright */	0,
/*   42	asterisk */	0,
/*   43	plus */		0,
/*   44	comma */	0,
/*   45	hyphen */	0,
/*   46	period */	0,
/*   47	slash */	0,
/*   48	zero */		0,
/*   49	one */		0,
/*   50	two */		0,
/*   51	three */	0,
/*   52	four */		0,
/*   53	five */		0,
/*   54	six */		0,
/*   55	seven */	0,
/*   56	eight */	0,
/*   57	nine */		0,
/*   58	colon */	0,
/*   59	semicolon */	0,
/*   60	less */		0,
/*   61	equal */	0,
/*   62	greater */	0,
/*   63	question */	0,
/*   64	at */		0,
/*   65	A */		97,
/*   66	B */		98,
/*   67	C */		99,
/*   68	D */		100,
/*   69	E */		101,
/*   70	F */		102,
/*   71	G */		103,
/*   72	H */		104,
/*   73	I */	105,
/*   74	J */	106,
/*   75	K */	107,
/*   76	L */	108,
/*   77	M */	109,
/*   78	N */	110,
/*   79	O */	111,
/*   80	P */	112,
/*   81	Q */	113,
/*   82	R */	114,
/*   83	S */	115,
/*   84	T */	116,
/*   85	U */	117,
/*   86	V */	118,
/*   87	W */	119,
/*   88	X */	120,
/*   89	Y */	121,
/*   90	Z */	122,
/*   91	bracketleft */	0,
/*   92	backslash */	0,
/*   93	bracketright */	0,
/*   94	asciicircum */	0,
/*   95	underscore */	0,
/*   96	quoteleft */	0,
/*   97	a */	65,
/*   98	b */	66,
/*   99	c */	67,
/*  100	d */	68,
/*  101	e */	69,
/*  102	f */	70,
/*  103	g */	71,
/*  104	h */	72,
/*  105	i */	73,
/*  106	j */	74,
/*  107	k */	75,
/*  108	l */	76,
/*  109	m */	77,
/*  110	n */	78,
/*  111	o */	79,
/*  112	p */	80,
/*  113	q */	81,
/*  114	r */	82,
/*  115	s */	83,
/*  116	t */	84,
/*  117	u */	85,
/*  118	v */	86,
/*  119	w */	87,
/*  120	x */	88,
/*  121	y */	89,
/*  122	z */	90,
/*  123	braceleft */	0,
/*  124	bar */		0,
/*  125	braceright */	0,
/*  126	asciitilde */	0,
/*  127	.notdef */	0,
/*  128	.notdef */	0,
/*  129	Agrave */	213,
/*  130	Aacute */	214,
/*  131	Acircumflex */	215,
/*  132	Atilde */	216,
/*  133	Adieresis */	217,
/*  134	Aring */	218,
/*  135	Ccedilla */	219,
/*  136	Egrave */	220,
/*  137	Eacute */	221,
/*  138	Ecircumflex */	222,
/*  139	Edieresis */	223,
/*  140	Igrave */	224,
/*  141	Iacute */	226,
/*  142	Icircumflex */	228,
/*  143	Idieresis */	229,
/*  144	Eth */		230,
/*  145	Ntilde */	231,
/*  146	Ograve */	236,
/*  147	Oacute */	237,
/*  148	Ocircumflex */	238,
/*  149	Otilde */	239,
/*  150	Odieresis */	240,
/*  151	Ugrave */	242,
/*  152	Uacute */	243,
/*  153	Ucircumflex */	244,
/*  154	Udieresis */	246,
/*  155	Yacute */	247,
/*  156	Thorn */	252,
/*  157	mu */		0,
/*  158	multiply */	0,
/*  159	divide */	0,
/*  160	copyright */	0,
/*  161	exclamdown */	0,
/*  162	cent */		0,
/*  163	sterling */	0,
/*  164	fraction */	0,
/*  165	yen */		0,
/*  166	florin */	0,
/*  167	section */	0,
/*  168	currency */	0,
/*  169	quotesingle */	0,
/*  170	quotedblleft */	0,
/*  171	guillemotleft */ 0,
/*  172	guilsinglleft */ 0,
/*  173	guilsinglright */ 0,
/*  174	fi */		174,	/* is self */
/*  175	fl */		175,	/* is self */
/*  176	registered */	0,
/*  177	endash */	0,
/*  178	dagger */	0,
/*  179	daggerdbl */	0,
/*  180	periodcentered */ 0,
/*  181	brokenbar */	0,
/*  182	paragraph */	0,
/*  183	bullet */	0,
/*  184	quotesinglbase */ 0,
/*  185	quotedblbase */	0,
/*  186	quotedblright */ 0,
/*  187	guillemotright */ 0,
/*  188	ellipsis */	0,
/*  189	perthousand */	0,
/*  190	logicalnot */	0,
/*  191	questiondown */	0,
/*  192	onesuperior */	0,
/*  193	grave */	0,
/*  194	acute */	0,
/*  195	circumflex */	0,
/*  196	tilde */	0,
/*  197	macron */	0,
/*  198	breve */	0,
/*  199	dotaccent */	0,
/*  200	dieresis */	0,
/*  201	twosuperior */	0,
/*  202	ring */		0,
/*  203	cedilla */	0,
/*  204	threesuperior */ 0,
/*  205	hungarumlaut */	0,
/*  206	ogonek */	0,
/*  207	caron */	0,
/*  208	emdash */	0,
/*  209	plusminus */	0,
/*  210	onequarter */	0,
/*  211	onehalf */	0,
/*  212	threequarters */ 0,
/*  213	agrave */	129,
/*  214	aacute */	130,
/*  215	acircumflex */	131,
/*  216	atilde */	132,
/*  217	adieresis */	133,
/*  218	aring */	134,
/*  219	ccedilla */	135,
/*  220	egrave */	136,
/*  221	eacute */	137,
/*  222	ecircumflex */	138,
/*  223	edieresis */	139,
/*  224	igrave */	140,
/*  225	AE */		241,
/*  226	iacute */	141,
/*  227	ordfeminine */	0,
/*  228	icircumflex */	142,
/*  229	idieresis */	143,
/*  230	eth */		144,
/*  231	ntilde */	145,
/*  232	Lslash */	248,
/*  233	Oslash */	249,
/*  234	OE */		250,
/*  235	ordmasculine */	0,
/*  236	ograve */	146,
/*  237	oacute */	147,
/*  238	ocircumflex */	148,
/*  239	otilde */	149,
/*  240	odieresis */	150,
/*  241	ae */		225,
/*  242	ugrave */	151,
/*  243	uacute */	152,
/*  244	ucircumflex */	153,
/*  245	dotlessi */	245,	/* is self */
/*  246	udieresis */	154,
/*  247	yacute */	155,
/*  248	lslash */	232,
/*  249	oslash */	233,
/*  250	oe */		234,
/*  251	germandbls */	251,	/* is self */
/*  252	thorn */	156,
/*  253	ydieresis */	253,	/* is self */
/*  254	.notdef */	0,
/*  255	.notdef */	0
};