Fix typo in license headers
[oweals/cde.git] / cde / lib / DtSearch / langmap.c
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these libraries and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /*
24  *   COMPONENT_NAME: austext
25  *
26  *   FUNCTIONS: none
27  *
28  *   ORIGINS: 27
29  *
30  *
31  *   (C) COPYRIGHT International Business Machines Corp. 1996
32  *   All Rights Reserved
33  *   Licensed Materials - Property of IBM
34  *   US Government Users Restricted Rights - Use, duplication or
35  *   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
36  */
37 /******************** LANGMAP.C ********************
38  * $XConsortium: langmap.c /main/3 1996/05/07 13:38:58 drk $
39  * January 1996.
40  * Contains European single byte character maps for
41  * teskey parser and Paice/Porter stemmers.
42  * Formerly coded in lang.c.
43  *
44  * Contains two code pages: ascii and iso-latin-1.
45  * From F. N. Teskey (Principles of Text Processing, Elis Horwood Ltd,
46  * 1982), a word is "a finite sequence of concordable and optionally
47  * concordable characters delimited by either a nonconcordable character or an
48  * optionally concordable character adjacent to a nonconcordable or optionally
49  * concordable one."  Optionally concordable characters are symbols like
50  * "./-" which may or may not occur within words (TCP/IP, file.dos, co-op).
51  * Concordable characters are alphas and numbers.
52  * Nonconcordables are whitespace, punctuation, control chars, etc.
53  *
54  * Lowest order byte = 'uppercase' of indexing char.
55  * Next higher order byte = mask for teskey parse bits.
56  * 
57  * $Log$
58  * Revision 1.3  1996/03/13  22:58:28  miker
59  * Added prolog.
60  *
61  * Revision 1.2  1996/03/05  16:35:04  miker
62  * Changed usage of WHITESPACE to replace isspace() function calls.
63  *
64  * Revision 1.1  1996/02/01  19:15:52  miker
65  * Initial revision
66  */
67 #include "SearchP.h"
68
69 /************************************************/
70 /*                                              */
71 /*               latin_charmap                  */
72 /*                                              */
73 /************************************************/
74 /* Teskey character map for iso-latin-1 character set. */
75 int     latin_charmap [] = {
76      NON_CONCORD |               0      /* NULL, Teskey EOT char */
77     ,NON_CONCORD |               1      /* CTRL-A */
78     ,NON_CONCORD |               2      /* CTRL-B */
79     ,NON_CONCORD |               3      /* CTRL-C */
80     ,NON_CONCORD |               4      /* CTRL-D */
81     ,NON_CONCORD |               5      /* CTRL-E */
82     ,NON_CONCORD |               6      /* CTRL-F */
83     ,NON_CONCORD |               7      /* BEL \a */
84     ,NON_CONCORD |               8      /* BS  \b */
85     ,NON_CONCORD | WHITESPACE |  9      /* TAB \t */
86     ,NON_CONCORD | WHITESPACE | 10      /* LF  \n */ 
87     ,NON_CONCORD | WHITESPACE | 11      /* VT  \v */
88     ,NON_CONCORD | WHITESPACE | 12      /* FF  \f */
89     ,NON_CONCORD | WHITESPACE | 13      /* CR  \r */
90     ,NON_CONCORD |              14      /* CTRL-N */
91     ,NON_CONCORD |              15      /* CTRL-O */
92     ,NON_CONCORD |              16      /* CTRL-P */
93     ,NON_CONCORD |              17      /* CTRL-Q */
94     ,NON_CONCORD |              18      /* CTRL-R */
95     ,NON_CONCORD |              19      /* CTRL-S */
96     ,NON_CONCORD |              20      /* CTRL-T */
97     ,NON_CONCORD |              21      /* CTRL-U */
98     ,NON_CONCORD |              22      /* CTRL-V */
99     ,NON_CONCORD |              23      /* CTRL-W */
100     ,NON_CONCORD |              24      /* CTRL-X */
101     ,NON_CONCORD |              25      /* CTRL-Y */
102     ,NON_CONCORD |              26      /* CTRL-Z (EOF) */
103     ,NON_CONCORD |              27      /* ESC */
104     ,NON_CONCORD |              28
105     ,NON_CONCORD |              29
106     ,NON_CONCORD |              30
107     ,NON_CONCORD |              31
108     ,NON_CONCORD | WHITESPACE | 32      /* SPACE (blank) */
109     ,NON_CONCORD |              33      /* ! */
110     ,NON_CONCORD |              34      /* " */
111     ,NON_CONCORD |              35      /* # */
112     ,NON_CONCORD |              36      /* $ */
113     ,NON_CONCORD |              37      /* % */
114     ,NON_CONCORD |              38      /* & */
115     ,NON_CONCORD |              39      /* ' (apostrophe) */
116     ,NON_CONCORD |              40      /* ( */
117     ,NON_CONCORD |              41      /* ) */
118     ,NON_CONCORD |              42      /* * */
119     ,NON_CONCORD |              43      /* + */
120     ,NON_CONCORD |              44      /* , (comma) */
121
122     ,OPT_CONCORD |              45      /* - (dash) */
123     ,OPT_CONCORD |              46      /* . (period) */
124     ,OPT_CONCORD |              47      /* / (slash) */
125
126     ,CONCORDABLE | NUMERAL |    48      /* 0 */
127     ,CONCORDABLE | NUMERAL |    49      /* 1 */
128     ,CONCORDABLE | NUMERAL |    50      /* 2 */
129     ,CONCORDABLE | NUMERAL |    51      /* 3 */
130     ,CONCORDABLE | NUMERAL |    52      /* 4 */
131     ,CONCORDABLE | NUMERAL |    53      /* 5 */
132     ,CONCORDABLE | NUMERAL |    54      /* 6 */
133     ,CONCORDABLE | NUMERAL |    55      /* 7 */
134     ,CONCORDABLE | NUMERAL |    56      /* 8 */
135     ,CONCORDABLE | NUMERAL |    57      /* 9 */
136
137     ,NON_CONCORD |              58      /* : */
138     ,NON_CONCORD |              59      /* ; */
139     ,NON_CONCORD |              60      /* < */
140     ,NON_CONCORD |              61      /* = */
141     ,NON_CONCORD |              62      /* > */
142     ,NON_CONCORD |              63      /* ? */
143     ,NON_CONCORD |              64      /* @ */
144
145     ,CONCORDABLE | VOWEL |      65      /* A */
146     ,CONCORDABLE | CONSONANT |  66      /* B */
147     ,CONCORDABLE | CONSONANT |  67      /* C */
148     ,CONCORDABLE | CONSONANT |  68      /* D */
149     ,CONCORDABLE | VOWEL |      69      /* E */
150     ,CONCORDABLE | CONSONANT |  70      /* F */
151     ,CONCORDABLE | CONSONANT |  71      /* G */
152     ,CONCORDABLE | CONSONANT |  72      /* H */
153     ,CONCORDABLE | VOWEL |      73      /* I */
154     ,CONCORDABLE | CONSONANT |  74      /* J */
155     ,CONCORDABLE | CONSONANT |  75      /* K */
156     ,CONCORDABLE | CONSONANT |  76      /* L */
157     ,CONCORDABLE | CONSONANT |  77      /* M */
158     ,CONCORDABLE | CONSONANT |  78      /* N */
159     ,CONCORDABLE | VOWEL |      79      /* O */
160     ,CONCORDABLE | CONSONANT |  80      /* P */
161     ,CONCORDABLE | CONSONANT |  81      /* Q */
162     ,CONCORDABLE | CONSONANT |  82      /* R */
163     ,CONCORDABLE | CONSONANT |  83      /* S */
164     ,CONCORDABLE | CONSONANT |  84      /* T */
165     ,CONCORDABLE | VOWEL |      85      /* U */
166     ,CONCORDABLE | CONSONANT |  86      /* V */
167     ,CONCORDABLE | CONSONANT |  87      /* W */
168     ,CONCORDABLE | CONSONANT |  88      /* X */
169     ,CONCORDABLE | CONSONANT |  89      /* Y */
170     ,CONCORDABLE | CONSONANT |  90      /* Z */
171
172     ,NON_CONCORD |              91      /* [ */
173     ,NON_CONCORD |              92      /* \ (backslash) */
174     ,NON_CONCORD |              93      /* ] */
175     ,NON_CONCORD |              94      /* ^ */
176
177     ,OPT_CONCORD |              95      /* _ (underscore) */
178
179     ,NON_CONCORD |              96      /* ` (grave accent) */
180
181     ,CONCORDABLE | VOWEL |      'A'     /*  97 = lowercase a */
182     ,CONCORDABLE | CONSONANT |  'B'     /*  98 = lowercase b */
183     ,CONCORDABLE | CONSONANT |  'C'     /*  99 = lowercase c */
184     ,CONCORDABLE | CONSONANT |  'D'     /* 100 = lowercase d */
185     ,CONCORDABLE | VOWEL |      'E'     /* 101 = lowercase e */
186     ,CONCORDABLE | CONSONANT |  'F'     /* 102 = lowercase f */
187     ,CONCORDABLE | CONSONANT |  'G'     /* 103 = lowercase g */
188     ,CONCORDABLE | CONSONANT |  'H'     /* 104 = lowercase h */
189     ,CONCORDABLE | VOWEL |      'I'     /* 105 = lowercase i */
190     ,CONCORDABLE | CONSONANT |  'J'     /* 106 = lowercase j */
191     ,CONCORDABLE | CONSONANT |  'K'     /* 107 = lowercase k */
192     ,CONCORDABLE | CONSONANT |  'L'     /* 108 = lowercase l */
193     ,CONCORDABLE | CONSONANT |  'M'     /* 109 = lowercase m */
194     ,CONCORDABLE | CONSONANT |  'N'     /* 110 = lowercase n */
195     ,CONCORDABLE | VOWEL |      'O'     /* 111 = lowercase o */
196     ,CONCORDABLE | CONSONANT |  'P'     /* 112 = lowercase p */
197     ,CONCORDABLE | CONSONANT |  'Q'     /* 113 = lowercase q */
198     ,CONCORDABLE | CONSONANT |  'R'     /* 114 = lowercase r */
199     ,CONCORDABLE | CONSONANT |  'S'     /* 115 = lowercase s */
200     ,CONCORDABLE | CONSONANT |  'T'     /* 116 = lowercase t */
201     ,CONCORDABLE | VOWEL |      'U'     /* 117 = lowercase u */
202     ,CONCORDABLE | CONSONANT |  'V'     /* 118 = lowercase v */
203     ,CONCORDABLE | CONSONANT |  'W'     /* 119 = lowercase w */
204     ,CONCORDABLE | CONSONANT |  'X'     /* 120 = lowercase x */
205     ,CONCORDABLE | CONSONANT |  'Y'     /* 121 = lowercase y */
206     ,CONCORDABLE | CONSONANT |  'Z'     /* 122 = lowercase z */
207
208     ,NON_CONCORD |              123     /* { */
209     ,NON_CONCORD |              124     /* | (virgule, vertical line) */
210     ,NON_CONCORD |              125     /* } */
211     ,NON_CONCORD |              126     /* ~ */
212     ,NON_CONCORD |              127     /* DEL */
213
214     ,NON_CONCORD |              128
215     ,NON_CONCORD |              129
216     ,NON_CONCORD |              130
217     ,NON_CONCORD |              131
218     ,NON_CONCORD |              132
219     ,NON_CONCORD |              133
220     ,NON_CONCORD |              134
221     ,NON_CONCORD |              135
222
223     ,NON_CONCORD |              136
224     ,NON_CONCORD |              137
225     ,NON_CONCORD |              138
226     ,NON_CONCORD |              139
227     ,NON_CONCORD |              140
228     ,NON_CONCORD |              141
229     ,NON_CONCORD |              142
230     ,NON_CONCORD |              143
231
232     ,NON_CONCORD |              144
233     ,NON_CONCORD |              145
234     ,NON_CONCORD |              146
235     ,NON_CONCORD |              147
236     ,NON_CONCORD |              148
237     ,NON_CONCORD |              149
238     ,NON_CONCORD |              150
239     ,NON_CONCORD |              151
240
241     ,NON_CONCORD |              152
242     ,NON_CONCORD |              153
243     ,NON_CONCORD |              154
244     ,NON_CONCORD |              155
245     ,NON_CONCORD |              156
246     ,NON_CONCORD |              157
247     ,NON_CONCORD |              158
248     ,NON_CONCORD |              159
249
250     ,CONCORDABLE |              160     /* RSP, 'Reqd SPace' (nonbreak?) */ 
251     ,NON_CONCORD |              161     /* inverted exclamation point */
252     ,NON_CONCORD |              162     /* cent sign, C slash */
253     ,NON_CONCORD |              163     /* pounds sterling */
254     ,NON_CONCORD |              164     /* generic international currency */
255     ,NON_CONCORD |              165     /* yen */
256     ,NON_CONCORD |              166     /* broken vertical line */
257     ,NON_CONCORD |              167     /* section/paragraph symbol */
258
259     ,NON_CONCORD |              168     /* diaeresis-umlaut */
260     ,NON_CONCORD |              169     /* copyright symbol, c circle */
261     ,NON_CONCORD |              170     /* 'a' small superscript, feminine */
262     ,NON_CONCORD |              171     /* left angle quotes */
263     ,NON_CONCORD |              172     /* logical not, eol */
264     ,CONCORDABLE |              173     /* SHY, 'Syllable HYphen' (nonbreak?) */
265     ,NON_CONCORD |              174     /* registered trademark, r circle */
266     ,NON_CONCORD |              175     /* overline */
267
268     ,NON_CONCORD |              176     /* degree symbol, xB0 */
269     ,NON_CONCORD |              177     /* plus-minus symbol */
270     ,NON_CONCORD |              178     /* squared, '2' superscript */
271     ,NON_CONCORD |              179     /* cubed, '3' superscript */
272     ,NON_CONCORD |              180     /* acute accent */
273     ,NON_CONCORD |              181     /* micro symbol (greek mu) */
274     ,NON_CONCORD |              182     /* paragraph symbol */
275     ,NON_CONCORD |              183     /* middle dot */
276
277     ,NON_CONCORD |              184     /* cedilla */
278     ,NON_CONCORD |              185     /* '1' superscript */
279     ,NON_CONCORD |              186     /* 'o' small superscript, masculine */
280     ,NON_CONCORD |              187     /* right angle quotes */
281     ,NON_CONCORD |              188     /* one fourth */
282     ,NON_CONCORD |              189     /* one half */
283     ,NON_CONCORD |              190     /* three fourths */
284     ,NON_CONCORD |              191     /* inverted question mark */
285
286     ,CONCORDABLE | VOWEL |      192     /* uppercase 'A' grave accent, xC0 */
287     ,CONCORDABLE | VOWEL |      193     /* uppercase 'A' acute accent */
288     ,CONCORDABLE | VOWEL |      194     /* uppercase 'A' circumflex */
289     ,CONCORDABLE | VOWEL |      195     /* uppercase 'A' tilde */
290     ,CONCORDABLE | VOWEL |      196     /* uppercase 'A' diaeresis-umlaut */
291     ,CONCORDABLE | VOWEL |      197     /* uppercase 'A' overcircle */
292     ,CONCORDABLE | VOWEL |      198     /* uppercase 'AE' diphthong */
293     ,CONCORDABLE | CONSONANT |  199     /* uppercase 'C' cedilla */
294
295     ,CONCORDABLE | VOWEL |      200     /* uppercase 'E' grave accent */
296     ,CONCORDABLE | VOWEL |      201     /* uppercase 'E' acute accent */
297     ,CONCORDABLE | VOWEL |      202     /* uppercase 'E' circumflex */
298     ,CONCORDABLE | VOWEL |      203     /* uppercase 'E' diaeresis-umlaut */
299     ,CONCORDABLE | VOWEL |      204     /* uppercase 'I' grave accent */
300     ,CONCORDABLE | VOWEL |      205     /* uppercase 'I' acute accent */
301     ,CONCORDABLE | VOWEL |      206     /* uppercase 'I' circumflex */
302     ,CONCORDABLE | VOWEL |      207     /* uppercase 'I' diaeresis-umlaut */
303
304     ,CONCORDABLE | CONSONANT |  208     /* uppercase 'D' stroke (eth), xD0 */
305     ,CONCORDABLE | CONSONANT |  209     /* uppercase 'N' tilde */
306     ,CONCORDABLE | VOWEL |      210     /* uppercase 'O' grave accent */
307     ,CONCORDABLE | VOWEL |      211     /* uppercase 'O' acute accent */
308     ,CONCORDABLE | VOWEL |      212     /* uppercase 'O' circumflex */
309     ,CONCORDABLE | VOWEL |      213     /* uppercase 'O' tilde */
310     ,CONCORDABLE | VOWEL |      214     /* uppercase 'O' diaeresis-umlaut */
311     ,NON_CONCORD |              215     /* multiply sign 'x' */
312
313     ,CONCORDABLE | VOWEL |      216     /* uppercase 'O' slash */
314     ,CONCORDABLE | VOWEL |      217     /* uppercase 'U' grave accent */
315     ,CONCORDABLE | VOWEL |      218     /* uppercase 'U' acute accent */
316     ,CONCORDABLE | VOWEL |      219     /* uppercase 'U' circumflex */
317     ,CONCORDABLE | VOWEL |      220     /* uppercase 'U' diaeresis-umlaut */
318     ,CONCORDABLE | VOWEL |      221     /* uppercase 'Y' acute accent */
319     ,CONCORDABLE | CONSONANT |  222     /* uppercase Thorn (Iceland) */
320     ,CONCORDABLE | CONSONANT |  223     /* lowercase s sharp (German ss) */
321
322     ,CONCORDABLE | VOWEL |      192     /* 224, lcase 'a' grave accent, xE0 */
323     ,CONCORDABLE | VOWEL |      193     /* lowercase 'a' acute accent */
324     ,CONCORDABLE | VOWEL |      194     /* lowercase 'a' circumflex */
325     ,CONCORDABLE | VOWEL |      195     /* lowercase 'a' tilde */
326     ,CONCORDABLE | VOWEL |      196     /* lowercase 'a' diaeresis-umlaut */
327     ,CONCORDABLE | VOWEL |      197     /* lowercase 'a' overcircle */
328     ,CONCORDABLE | VOWEL |      198     /* lowercase 'ae' diphthong */
329     ,CONCORDABLE | CONSONANT |  199     /* lowercase 'c' cedilla */
330
331     ,CONCORDABLE | VOWEL |      200     /* 232, lowercase 'e' grave accent */
332     ,CONCORDABLE | VOWEL |      201     /* lowercase 'e' acute accent */
333     ,CONCORDABLE | VOWEL |      202     /* lowercase 'e' circumflex */
334     ,CONCORDABLE | VOWEL |      203     /* lowercase 'e' diaeresis-umlaut */
335     ,CONCORDABLE | VOWEL |      204     /* lowercase 'i' grave accent */
336     ,CONCORDABLE | VOWEL |      205     /* lowercase 'i' acute accent */
337     ,CONCORDABLE | VOWEL |      206     /* lowercase 'i' circumflex */
338     ,CONCORDABLE | VOWEL |      207     /* lowercase 'i' diaeresis-umlaut */
339
340     ,CONCORDABLE | CONSONANT |  208     /* 240, lcase 'd' stroke (eth), xF0 */
341     ,CONCORDABLE | CONSONANT |  209     /* lowercase 'n' tilde */
342     ,CONCORDABLE | VOWEL |      210     /* lowercase 'o' grave accent */
343     ,CONCORDABLE | VOWEL |      211     /* lowercase 'o' acute accent */
344     ,CONCORDABLE | VOWEL |      212     /* lowercase 'o' circumflex */
345     ,CONCORDABLE | VOWEL |      213     /* lowercase 'o' tilde */
346     ,CONCORDABLE | VOWEL |      214     /* lowercase 'o' diaeresis-umlaut */
347     ,NON_CONCORD |              247     /* divide sign */
348
349     ,CONCORDABLE | VOWEL |      216     /* 248, lowercase 'o' slash */
350     ,CONCORDABLE | VOWEL |      217     /* lowercase 'u' grave accent */
351     ,CONCORDABLE | VOWEL |      218     /* lowercase 'u' acute accent */
352     ,CONCORDABLE | VOWEL |      219     /* lowercase 'u' circumflex */
353     ,CONCORDABLE | VOWEL |      220     /* lowercase 'u' diaeresis-umlaut */
354     ,CONCORDABLE | VOWEL |      221     /* lowercase 'y' acute accent */
355     ,CONCORDABLE | CONSONANT |  222     /* lowercase thorn (Icelandic) */
356     ,CONCORDABLE | CONSONANT |  255     /* lowercase 'y' diaeresis-umlaut */
357
358     ,NON_CONCORD                        /* 256, an extra one... */
359     }; /* latin_charmap[] */
360
361
362 /************************************************/
363 /*                                              */
364 /*               ascii_charmap                  */
365 /*                                              */
366 /************************************************/
367 /* Teskey character map for 7-bit ascii
368  * character set in 8-bit octets.
369  * Also accessed in packed EUC parsing in jpn.c.
370  */
371 int     ascii_charmap [] = {
372      NON_CONCORD |               0      /* NULL, Teskey EOT char */
373     ,NON_CONCORD |               1      /* CTRL-A */
374     ,NON_CONCORD |               2      /* CTRL-B */
375     ,NON_CONCORD |               3      /* CTRL-C */
376     ,NON_CONCORD |               4      /* CTRL-D */
377     ,NON_CONCORD |               5      /* CTRL-E */
378     ,NON_CONCORD |               6      /* CTRL-F */
379     ,NON_CONCORD |               7      /* BEL \a */
380     ,NON_CONCORD |               8      /* BS  \b */
381     ,NON_CONCORD | WHITESPACE |  9      /* TAB \t */
382     ,NON_CONCORD | WHITESPACE | 10      /* LF  \n */ 
383     ,NON_CONCORD | WHITESPACE | 11      /* VT  \v */
384     ,NON_CONCORD | WHITESPACE | 12      /* FF  \f */
385     ,NON_CONCORD | WHITESPACE | 13      /* CR  \r */
386     ,NON_CONCORD |              14      /* CTRL-N */
387     ,NON_CONCORD |              15      /* CTRL-O */
388     ,NON_CONCORD |              16      /* CTRL-P */
389     ,NON_CONCORD |              17      /* CTRL-Q */
390     ,NON_CONCORD |              18      /* CTRL-R */
391     ,NON_CONCORD |              19      /* CTRL-S */
392     ,NON_CONCORD |              20      /* CTRL-T */
393     ,NON_CONCORD |              21      /* CTRL-U */
394     ,NON_CONCORD |              22      /* CTRL-V */
395     ,NON_CONCORD |              23      /* CTRL-W */
396     ,NON_CONCORD |              24      /* CTRL-X */
397     ,NON_CONCORD |              25      /* CTRL-Y */
398     ,NON_CONCORD |              26      /* CTRL-Z (EOF) */
399     ,NON_CONCORD |              27      /* ESC */
400     ,NON_CONCORD |              28
401     ,NON_CONCORD |              29
402     ,NON_CONCORD |              30
403     ,NON_CONCORD |              31
404     ,NON_CONCORD | WHITESPACE | 32      /* SPACE (blank) */
405     ,NON_CONCORD |              33      /* ! */
406     ,NON_CONCORD |              34      /* " */
407     ,NON_CONCORD |              35      /* # */
408     ,NON_CONCORD |              36      /* $ */
409     ,NON_CONCORD |              37      /* % */
410     ,NON_CONCORD |              38      /* & */
411     ,NON_CONCORD |              39      /* ' (apostrophe) */
412     ,NON_CONCORD |              40      /* ( */
413     ,NON_CONCORD |              41      /* ) */
414     ,NON_CONCORD |              42      /* * */
415     ,NON_CONCORD |              43      /* + */
416     ,NON_CONCORD |              44      /* , (comma) */
417
418     ,OPT_CONCORD |              45      /* - (dash) */
419     ,OPT_CONCORD |              46      /* . (period) */
420     ,OPT_CONCORD |              47      /* / (slash) */
421
422     ,CONCORDABLE | NUMERAL |    48      /* 0 */
423     ,CONCORDABLE | NUMERAL |    49      /* 1 */
424     ,CONCORDABLE | NUMERAL |    50      /* 2 */
425     ,CONCORDABLE | NUMERAL |    51      /* 3 */
426     ,CONCORDABLE | NUMERAL |    52      /* 4 */
427     ,CONCORDABLE | NUMERAL |    53      /* 5 */
428     ,CONCORDABLE | NUMERAL |    54      /* 6 */
429     ,CONCORDABLE | NUMERAL |    55      /* 7 */
430     ,CONCORDABLE | NUMERAL |    56      /* 8 */
431     ,CONCORDABLE | NUMERAL |    57      /* 9 */
432
433     ,NON_CONCORD |              58      /* : */
434     ,NON_CONCORD |              59      /* ; */
435     ,NON_CONCORD |              60      /* < */
436     ,NON_CONCORD |              61      /* = */
437     ,NON_CONCORD |              62      /* > */
438     ,NON_CONCORD |              63      /* ? */
439     ,NON_CONCORD |              64      /* @ */
440
441     ,CONCORDABLE | VOWEL |      65      /* A */
442     ,CONCORDABLE | CONSONANT |  66      /* B */
443     ,CONCORDABLE | CONSONANT |  67      /* C */
444     ,CONCORDABLE | CONSONANT |  68      /* D */
445     ,CONCORDABLE | VOWEL |      69      /* E */
446     ,CONCORDABLE | CONSONANT |  70      /* F */
447     ,CONCORDABLE | CONSONANT |  71      /* G */
448     ,CONCORDABLE | CONSONANT |  72      /* H */
449     ,CONCORDABLE | VOWEL |      73      /* I */
450     ,CONCORDABLE | CONSONANT |  74      /* J */
451     ,CONCORDABLE | CONSONANT |  75      /* K */
452     ,CONCORDABLE | CONSONANT |  76      /* L */
453     ,CONCORDABLE | CONSONANT |  77      /* M */
454     ,CONCORDABLE | CONSONANT |  78      /* N */
455     ,CONCORDABLE | VOWEL |      79      /* O */
456     ,CONCORDABLE | CONSONANT |  80      /* P */
457     ,CONCORDABLE | CONSONANT |  81      /* Q */
458     ,CONCORDABLE | CONSONANT |  82      /* R */
459     ,CONCORDABLE | CONSONANT |  83      /* S */
460     ,CONCORDABLE | CONSONANT |  84      /* T */
461     ,CONCORDABLE | VOWEL |      85      /* U */
462     ,CONCORDABLE | CONSONANT |  86      /* V */
463     ,CONCORDABLE | CONSONANT |  87      /* W */
464     ,CONCORDABLE | CONSONANT |  88      /* X */
465     ,CONCORDABLE | CONSONANT |  89      /* Y */
466     ,CONCORDABLE | CONSONANT |  90      /* Z */
467
468     ,NON_CONCORD |              91      /* [ */
469     ,NON_CONCORD |              92      /* \ (backslash) */
470     ,NON_CONCORD |              93      /* ] */
471     ,NON_CONCORD |              94      /* ^ */
472
473     ,OPT_CONCORD |              95      /* _ (underscore) */
474
475     ,NON_CONCORD |              96      /* ` (grave accent) */
476
477     ,CONCORDABLE | VOWEL |      'A'     /*  97 = lowercase a */
478     ,CONCORDABLE | CONSONANT |  'B'     /*  98 = lowercase b */
479     ,CONCORDABLE | CONSONANT |  'C'     /*  99 = lowercase c */
480     ,CONCORDABLE | CONSONANT |  'D'     /* 100 = lowercase d */
481     ,CONCORDABLE | VOWEL |      'E'     /* 101 = lowercase e */
482     ,CONCORDABLE | CONSONANT |  'F'     /* 102 = lowercase f */
483     ,CONCORDABLE | CONSONANT |  'G'     /* 103 = lowercase g */
484     ,CONCORDABLE | CONSONANT |  'H'     /* 104 = lowercase h */
485     ,CONCORDABLE | VOWEL |      'I'     /* 105 = lowercase i */
486     ,CONCORDABLE | CONSONANT |  'J'     /* 106 = lowercase j */
487     ,CONCORDABLE | CONSONANT |  'K'     /* 107 = lowercase k */
488     ,CONCORDABLE | CONSONANT |  'L'     /* 108 = lowercase l */
489     ,CONCORDABLE | CONSONANT |  'M'     /* 109 = lowercase m */
490     ,CONCORDABLE | CONSONANT |  'N'     /* 110 = lowercase n */
491     ,CONCORDABLE | VOWEL |      'O'     /* 111 = lowercase o */
492     ,CONCORDABLE | CONSONANT |  'P'     /* 112 = lowercase p */
493     ,CONCORDABLE | CONSONANT |  'Q'     /* 113 = lowercase q */
494     ,CONCORDABLE | CONSONANT |  'R'     /* 114 = lowercase r */
495     ,CONCORDABLE | CONSONANT |  'S'     /* 115 = lowercase s */
496     ,CONCORDABLE | CONSONANT |  'T'     /* 116 = lowercase t */
497     ,CONCORDABLE | VOWEL |      'U'     /* 117 = lowercase u */
498     ,CONCORDABLE | CONSONANT |  'V'     /* 118 = lowercase v */
499     ,CONCORDABLE | CONSONANT |  'W'     /* 119 = lowercase w */
500     ,CONCORDABLE | CONSONANT |  'X'     /* 120 = lowercase x */
501     ,CONCORDABLE | CONSONANT |  'Y'     /* 121 = lowercase y */
502     ,CONCORDABLE | CONSONANT |  'Z'     /* 122 = lowercase z */
503
504     ,NON_CONCORD |              123     /* { */
505     ,NON_CONCORD |              124     /* | (virgule, vertical line) */
506     ,NON_CONCORD |              125     /* } */
507     ,NON_CONCORD |              126     /* ~ */
508     ,NON_CONCORD |              127     /* DEL */
509
510     ,NON_CONCORD |              128
511     ,NON_CONCORD |              129
512     ,NON_CONCORD |              130
513     ,NON_CONCORD |              131
514     ,NON_CONCORD |              132
515     ,NON_CONCORD |              133
516     ,NON_CONCORD |              134
517     ,NON_CONCORD |              135
518
519     ,NON_CONCORD |              136
520     ,NON_CONCORD |              137
521     ,NON_CONCORD |              138
522     ,NON_CONCORD |              139
523     ,NON_CONCORD |              140
524     ,NON_CONCORD |              141
525     ,NON_CONCORD |              142
526     ,NON_CONCORD |              143
527
528     ,NON_CONCORD |              144
529     ,NON_CONCORD |              145
530     ,NON_CONCORD |              146
531     ,NON_CONCORD |              147
532     ,NON_CONCORD |              148
533     ,NON_CONCORD |              149
534     ,NON_CONCORD |              150
535     ,NON_CONCORD |              151
536
537     ,NON_CONCORD |              152
538     ,NON_CONCORD |              153
539     ,NON_CONCORD |              154
540     ,NON_CONCORD |              155
541     ,NON_CONCORD |              156
542     ,NON_CONCORD |              157
543     ,NON_CONCORD |              158
544     ,NON_CONCORD |              159
545
546     ,NON_CONCORD |              160
547     ,NON_CONCORD |              161
548     ,NON_CONCORD |              162
549     ,NON_CONCORD |              163
550     ,NON_CONCORD |              164
551     ,NON_CONCORD |              165
552     ,NON_CONCORD |              166
553     ,NON_CONCORD |              167
554
555     ,NON_CONCORD |              168
556     ,NON_CONCORD |              169
557     ,NON_CONCORD |              170
558     ,NON_CONCORD |              171
559     ,NON_CONCORD |              172
560     ,NON_CONCORD |              173
561     ,NON_CONCORD |              174
562     ,NON_CONCORD |              175
563
564     ,NON_CONCORD |              176
565     ,NON_CONCORD |              177
566     ,NON_CONCORD |              178
567     ,NON_CONCORD |              179
568     ,NON_CONCORD |              180
569     ,NON_CONCORD |              181
570     ,NON_CONCORD |              182
571     ,NON_CONCORD |              183
572
573     ,NON_CONCORD |              184
574     ,NON_CONCORD |              185
575     ,NON_CONCORD |              186
576     ,NON_CONCORD |              187
577     ,NON_CONCORD |              188
578     ,NON_CONCORD |              189
579     ,NON_CONCORD |              190
580     ,NON_CONCORD |              191
581
582     ,NON_CONCORD |              192
583     ,NON_CONCORD |              193
584     ,NON_CONCORD |              194
585     ,NON_CONCORD |              195
586     ,NON_CONCORD |              196
587     ,NON_CONCORD |              197
588     ,NON_CONCORD |              198
589     ,NON_CONCORD |              199
590
591     ,NON_CONCORD |              200
592     ,NON_CONCORD |              201
593     ,NON_CONCORD |              202
594     ,NON_CONCORD |              203
595     ,NON_CONCORD |              204
596     ,NON_CONCORD |              205
597     ,NON_CONCORD |              206
598     ,NON_CONCORD |              207
599
600     ,NON_CONCORD |              208
601     ,NON_CONCORD |              209
602     ,NON_CONCORD |              210
603     ,NON_CONCORD |              211
604     ,NON_CONCORD |              212
605     ,NON_CONCORD |              213
606     ,NON_CONCORD |              214
607     ,NON_CONCORD |              215
608
609     ,NON_CONCORD |              216
610     ,NON_CONCORD |              217
611     ,NON_CONCORD |              218
612     ,NON_CONCORD |              219
613     ,NON_CONCORD |              220
614     ,NON_CONCORD |              221
615     ,NON_CONCORD |              222
616     ,NON_CONCORD |              223
617
618     ,NON_CONCORD |              224
619     ,NON_CONCORD |              225
620     ,NON_CONCORD |              226
621     ,NON_CONCORD |              227
622     ,NON_CONCORD |              228
623     ,NON_CONCORD |              229
624     ,NON_CONCORD |              230
625     ,NON_CONCORD |              231
626
627     ,NON_CONCORD |              232
628     ,NON_CONCORD |              233
629     ,NON_CONCORD |              234
630     ,NON_CONCORD |              235
631     ,NON_CONCORD |              236
632     ,NON_CONCORD |              237
633     ,NON_CONCORD |              238
634     ,NON_CONCORD |              239
635
636     ,NON_CONCORD |              240
637     ,NON_CONCORD |              241
638     ,NON_CONCORD |              242
639     ,NON_CONCORD |              243
640     ,NON_CONCORD |              244
641     ,NON_CONCORD |              245
642     ,NON_CONCORD |              246
643     ,NON_CONCORD |              247
644
645     ,NON_CONCORD |              248
646     ,NON_CONCORD |              249
647     ,NON_CONCORD |              250
648     ,NON_CONCORD |              251
649     ,NON_CONCORD |              252
650     ,NON_CONCORD |              253
651     ,NON_CONCORD |              254
652     ,NON_CONCORD |              255
653
654     ,NON_CONCORD                /* 256 = an extra one... */
655     }; /* ascii_charmap[] */
656
657 /******************** LANGMAP.C ********************/
658