KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > java > lang > CharacterData01


1 // This file was generated AUTOMATICALLY from a template file Sat Feb 09 01:22:06 PST 2008
2

3 /* @(#)CharacterData01.java.template 1.3 03/07/26
4  *
5  * Copyright 1994-2002 Sun Microsystems, Inc. All Rights Reserved.
6  *
7  * This software is the proprietary information of Sun Microsystems, Inc.
8  * Use is subject to license terms.
9  *
10  */

11
12 package java.lang;
13
14 /** The CharacterData class encapsulates the large tables once found in
15  * java.lang.Character.
16  */

17
18 class CharacterData01 {
19     /* The character properties are currently encoded into 32 bits in the following manner:
20         1 bit mirrored property
21         4 bits directionality property
22         9 bits signed offset used for converting case
23         1 bit if 1, adding the signed offset converts the character to lowercase
24         1 bit if 1, subtracting the signed offset converts the character to uppercase
25         1 bit if 1, this character has a titlecase equivalent (possibly itself)
26         3 bits 0 may not be part of an identifier
27                 1 ignorable control; may continue a Unicode identifier or Java identifier
28                 2 may continue a Java identifier but not a Unicode identifier (unused)
29                 3 may continue a Unicode identifier or Java identifier
30                 4 is a Java whitespace character
31                 5 may start or continue a Java identifier;
32                    may continue but not start a Unicode identifier (underscores)
33                 6 may start or continue a Java identifier but not a Unicode identifier ($)
34                 7 may start or continue a Unicode identifier or Java identifier
35                 Thus:
36                    5, 6, 7 may start a Java identifier
37                    1, 2, 3, 5, 6, 7 may continue a Java identifier
38                    7 may start a Unicode identifier
39                    1, 3, 5, 7 may continue a Unicode identifier
40                    1 is ignorable within an identifier
41                    4 is Java whitespace
42         2 bits 0 this character has no numeric property
43                 1 adding the digit offset to the character code and then
44                    masking with 0x1F will produce the desired numeric value
45                 2 this character has a "strange" numeric value
46                 3 a Java supradecimal digit: adding the digit offset to the
47                    character code, then masking with 0x1F, then adding 10
48                    will produce the desired numeric value
49         5 bits digit offset
50         5 bits character type
51
52         The encoding of character properties is subject to change at any time.
53      */

54
55     static int getProperties(int ch) {
56         char offset = (char)ch;
57         int props = A[Y[(X[offset>>5]<<4)|((offset>>1)&0xF)]|(offset&0x1)];
58         return props;
59     }
60
61     static int getType(int ch) {
62         int props = getProperties(ch);
63         return (props & 0x1F);
64     }
65
66     static boolean isLowerCase(int ch) {
67         int type = getType(ch);
68         return (type == Character.LOWERCASE_LETTER);
69     }
70
71     static boolean isUpperCase(int ch) {
72         int type = getType(ch);
73         return (type == Character.UPPERCASE_LETTER);
74                                                                                                                               }
75
76     static boolean isTitleCase(int ch) {
77         int type = getType(ch);
78         return (type == Character.TITLECASE_LETTER);
79     }
80
81     static boolean isDigit(int ch) {
82         int type = getType(ch);
83         return (type == Character.DECIMAL_DIGIT_NUMBER);
84     }
85
86     static boolean isDefined(int ch) {
87         int type = getType(ch);
88         return (type != Character.UNASSIGNED);
89     }
90
91     static boolean isLetter(int ch) {
92         int type = getType(ch);
93         return (((((1 << Character.UPPERCASE_LETTER) |
94             (1 << Character.LOWERCASE_LETTER) |
95             (1 << Character.TITLECASE_LETTER) |
96             (1 << Character.MODIFIER_LETTER) |
97             (1 << Character.OTHER_LETTER)) >> type) & 1) != 0);
98     }
99
100     static boolean isLetterOrDigit(int ch) {
101         int type = getType(ch);
102         return (((((1 << Character.UPPERCASE_LETTER) |
103             (1 << Character.LOWERCASE_LETTER) |
104             (1 << Character.TITLECASE_LETTER) |
105             (1 << Character.MODIFIER_LETTER) |
106             (1 << Character.OTHER_LETTER) |
107             (1 << Character.DECIMAL_DIGIT_NUMBER)) >> type) & 1) != 0);
108     }
109
110     static boolean isSpaceChar(int ch) {
111         int type = getType(ch);
112         return (((((1 << Character.SPACE_SEPARATOR) |
113             (1 << Character.LINE_SEPARATOR) |
114             (1 << Character.PARAGRAPH_SEPARATOR)) >> type) & 1) != 0);
115     }
116
117
118     static boolean isJavaIdentifierStart(int ch) {
119         int props = getProperties(ch);
120         return ((props & 0x00007000) >= 0x00005000);
121     }
122
123     static boolean isJavaIdentifierPart(int ch) {
124         int props = getProperties(ch);
125         return ((props & 0x00003000) != 0);
126     }
127
128     static boolean isUnicodeIdentifierStart(int ch) {
129         int props = getProperties(ch);
130         return ((props & 0x00007000) == 0x00007000);
131     }
132
133     static boolean isUnicodeIdentifierPart(int ch) {
134         int props = getProperties(ch);
135         return ((props & 0x00001000) != 0);
136     }
137
138     static boolean isIdentifierIgnorable(int ch) {
139         int props = getProperties(ch);
140         return ((props & 0x00007000) == 0x00001000);
141     }
142
143     static int toLowerCase(int ch) {
144         int mapChar = ch;
145         int val = getProperties(ch);
146
147         if ((val & 0x00020000) != 0) {
148             int offset = val << 5 >> (5+18);
149             mapChar = ch + offset;
150         }
151         return mapChar;
152     }
153
154     static int toUpperCase(int ch) {
155         int mapChar = ch;
156         int val = getProperties(ch);
157
158         if ((val & 0x00010000) != 0) {
159             int offset = val << 5 >> (5+18);
160             mapChar = ch - offset;
161         }
162         return mapChar;
163     }
164
165     static int toTitleCase(int ch) {
166         int mapChar = ch;
167         int val = getProperties(ch);
168
169         if ((val & 0x00008000) != 0) {
170             // There is a titlecase equivalent. Perform further checks:
171
if ((val & 0x00010000) == 0) {
172                 // The character does not have an uppercase equivalent, so it must
173
// already be uppercase; so add 1 to get the titlecase form.
174
mapChar = ch + 1;
175             }
176             else if ((val & 0x00020000) == 0) {
177                 // The character does not have a lowercase equivalent, so it must
178
// already be lowercase; so subtract 1 to get the titlecase form.
179
mapChar = ch - 1;
180             }
181             // else {
182
// The character has both an uppercase equivalent and a lowercase
183
// equivalent, so it must itself be a titlecase form; return it.
184
// return ch;
185
//}
186
}
187         else if ((val & 0x00010000) != 0) {
188             // This character has no titlecase equivalent but it does have an
189
// uppercase equivalent, so use that (subtract the signed case offset).
190
mapChar = toUpperCase(ch);
191         }
192         return mapChar;
193     }
194
195     static int digit(int ch, int radix) {
196         int value = -1;
197         if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) {
198             int val = getProperties(ch);
199             int kind = val & 0x1F;
200             if (kind == Character.DECIMAL_DIGIT_NUMBER) {
201                 value = ch + ((val & 0x3E0) >> 5) & 0x1F;
202             }
203             else if ((val & 0xC00) == 0x00000C00) {
204                 // Java supradecimal digit
205
value = (ch + ((val & 0x3E0) >> 5) & 0x1F) + 10;
206             }
207         }
208         return (value < radix) ? value : -1;
209     }
210
211     static int getNumericValue(int ch) {
212         int val = getProperties(ch);
213         int retval = -1;
214
215         switch (val & 0xC00) {
216         default: // cannot occur
217
case (0x00000000): // not numeric
218
retval = -1;
219             break;
220         case (0x00000400): // simple numeric
221
retval = ch + ((val & 0x3E0) >> 5) & 0x1F;
222             break;
223         case (0x00000800) : // "strange" numeric
224
switch(ch) {
225             case 0x10113: retval = 40; break; // AEGEAN NUMBER FORTY
226
case 0x10114: retval = 50; break; // AEGEAN NUMBER FIFTY
227
case 0x10115: retval = 60; break; // AEGEAN NUMBER SIXTY
228
case 0x10116: retval = 70; break; // AEGEAN NUMBER SEVENTY
229
case 0x10117: retval = 80; break; // AEGEAN NUMBER EIGHTY
230
case 0x10118: retval = 90; break; // AEGEAN NUMBER NINETY
231
case 0x10119: retval = 100; break; // AEGEAN NUMBER ONE HUNDRED
232
case 0x1011A: retval = 200; break; // AEGEAN NUMBER TWO HUNDRED
233
case 0x1011B: retval = 300; break; // AEGEAN NUMBER THREE HUNDRED
234
case 0x1011C: retval = 400; break; // AEGEAN NUMBER FOUR HUNDRED
235
case 0x1011D: retval = 500; break; // AEGEAN NUMBER FIVE HUNDRED
236
case 0x1011E: retval = 600; break; // AEGEAN NUMBER SIX HUNDRED
237
case 0x1011F: retval = 700; break; // AEGEAN NUMBER SEVEN HUNDRED
238
case 0x10120: retval = 800; break; // AEGEAN NUMBER EIGHT HUNDRED
239
case 0x10121: retval = 900; break; // AEGEAN NUMBER NINE HUNDRED
240
case 0x10122: retval = 1000; break; // AEGEAN NUMBER ONE THOUSAND
241
case 0x10123: retval = 2000; break; // AEGEAN NUMBER TWO THOUSAND
242
case 0x10124: retval = 3000; break; // AEGEAN NUMBER THREE THOUSAND
243
case 0x10125: retval = 4000; break; // AEGEAN NUMBER FOUR THOUSAND
244
case 0x10126: retval = 5000; break; // AEGEAN NUMBER FIVE THOUSAND
245
case 0x10127: retval = 6000; break; // AEGEAN NUMBER SIX THOUSAND
246
case 0x10128: retval = 7000; break; // AEGEAN NUMBER SEVEN THOUSAND
247
case 0x10129: retval = 8000; break; // AEGEAN NUMBER EIGHT THOUSAND
248
case 0x1012A: retval = 9000; break; // AEGEAN NUMBER NINE THOUSAND
249
case 0x1012B: retval = 10000; break; // AEGEAN NUMBER TEN THOUSAND
250
case 0x1012C: retval = 20000; break; // AEGEAN NUMBER TWENTY THOUSAND
251
case 0x1012D: retval = 30000; break; // AEGEAN NUMBER THIRTY THOUSAND
252
case 0x1012E: retval = 40000; break; // AEGEAN NUMBER FORTY THOUSAND
253
case 0x1012F: retval = 50000; break; // AEGEAN NUMBER FIFTY THOUSAND
254
case 0x10130: retval = 60000; break; // AEGEAN NUMBER SIXTY THOUSAND
255
case 0x10131: retval = 70000; break; // AEGEAN NUMBER SEVENTY THOUSAND
256
case 0x10132: retval = 80000; break; // AEGEAN NUMBER EIGHTY THOUSAND
257
case 0x10133: retval = 90000; break; // AEGEAN NUMBER NINETY THOUSAND
258
case 0x10323: retval = 50; break; // OLD ITALIC NUMERAL FIFTY
259
default: retval = -2; break;
260             }
261             
262             break;
263         case (0x00000C00): // Java supradecimal
264
retval = (ch + ((val & 0x3E0) >> 5) & 0x1F) + 10;
265             break;
266         }
267         return retval;
268     }
269
270     static boolean isWhitespace(int ch) {
271         int props = getProperties(ch);
272         return ((props & 0x00007000) == 0x00004000);
273     }
274
275     static byte getDirectionality(int ch) {
276         int val = getProperties(ch);
277         byte directionality = (byte)((val & 0x78000000) >> 27);
278         if (directionality == 0xF ) {
279             directionality = Character.DIRECTIONALITY_UNDEFINED;
280         }
281         return directionality;
282     }
283
284     static boolean isMirrored(int ch) {
285         int props = getProperties(ch);
286         return ((props & 0x80000000) != 0);
287     }
288
289     // may need to implement for JSR 204
290
// static int toUpperCaseEx(int ch);
291
// static char[] toUpperCaseCharArray(int ch);
292

293     // The following tables and code generated using:
294
// java GenerateCharacter -plane 1 -template ../../tools/GenerateCharacter/CharacterData01.java.template -spec ../../tools/GenerateCharacter/UnicodeData.txt -specialcasing ../../tools/GenerateCharacter/SpecialCasing.txt -o C:/BUILD_AREA/jdk1.5.0_15/control/build/windows-i586/gensrc/java/lang/CharacterData01.java -string -usecharforbyte 11 4 1
295
// The X table has 2048 entries for a total of 4096 bytes.
296

297   static final char X[] = (
298     "\000\001\002\003\004\004\004\005\006\007\003\003\003\003\003\003\003\003\003"+
299     "\003\003\003\003\003\010\011\012\003\013\003\003\003\014\015\016\004\017\020"+
300     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
301     "\003\003\003\003\003\003\003\021\022\003\003\003\003\003\003\003\003\003\003"+
302     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
303     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
304     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
305     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
306     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
307     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
308     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
309     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
310     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
311     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
312     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
313     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
314     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
315     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
316     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
317     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
318     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
319     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
320     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
321     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
322     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
323     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
324     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
325     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
326     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
327     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
328     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
329     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
330     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
331     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
332     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
333     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
334     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
335     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
336     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
337     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
338     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
339     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
340     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
341     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
342     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
343     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
344     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
345     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
346     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
347     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
348     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
349     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
350     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
351     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
352     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
353     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
354     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
355     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
356     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
357     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
358     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
359     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
360     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
361     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
362     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
363     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
364     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
365     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
366     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
367     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
368     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
369     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
370     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
371     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
372     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
373     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
374     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
375     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
376     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
377     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
378     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
379     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
380     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
381     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
382     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
383     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
384     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
385     "\003\003\003\003\003\003\003\003\003\003\003\023\023\023\023\023\023\023\024"+
386     "\023\025\023\026\027\030\031\003\003\003\003\003\003\003\003\003\032\032\033"+
387     "\003\003\003\003\003\034\035\036\037\040\041\042\043\044\045\046\047\050\034"+
388     "\035\051\037\052\053\054\043\055\056\057\060\061\062\063\064\065\066\067\003"+
389     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
390     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
391     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
392     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
393     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
394     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
395     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
396     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
397     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
398     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
399     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
400     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
401     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
402     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
403     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
404     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003"+
405     "\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003").toCharArray();
406
407   // The Y table has 896 entries for a total of 1792 bytes.
408

409   static final char Y[] = (
410     "\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000"+
411     "\004\000\000\000\000\000\000\000\000\000\004\000\002\000\000\000\000\000\000"+
412     "\000\006\000\000\000\000\000\000\000\006\006\006\006\006\006\006\006\006\006"+
413     "\006\006\006\006\006\006\006\000\000\000\000\000\000\000\000\000\000\000\000"+
414     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\006"+
415     "\006\010\012\006\014\016\016\016\016\020\022\024\024\024\024\024\024\024\024"+
416     "\024\024\024\024\024\024\024\024\006\026\030\030\030\030\000\000\000\000\000"+
417     "\000\000\000\000\000\000\000\000\000\000\004\032\034\006\006\006\006\006\006"+
418     "\000\000\000\000\000\000\000\000\000\000\000\000\000\036\006\006\006\006\006"+
419     "\006\006\006\006\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000"+
420     "\000\040\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042"+
421     "\042\042\042\044\044\044\044\044\044\044\044\044\044\044\044\044\044\044\044"+
422     "\044\044\044\044\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"+
423     "\000\000\000\000\000\000\000\000\006\046\046\046\046\046\006\006\006\006\006"+
424     "\006\006\006\006\006\006\050\050\050\006\052\050\050\050\050\050\050\050\050"+
425     "\050\050\050\050\050\050\050\050\050\050\050\050\050\050\054\052\006\052\054"+
426     "\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030"+
427     "\030\030\030\030\030\030\030\030\006\006\006\006\006\030\030\030\012\006\030"+
428     "\030\030\030\030\030\030\030\030\030\030\030\030\056\060\062\030\056\064\064"+
429     "\066\070\070\070\072\062\062\062\074\076\062\062\062\030\030\030\030\030\030"+
430     "\030\030\030\030\030\030\030\030\030\062\062\030\030\030\030\030\030\030\030"+
431     "\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\006\100\100"+
432     "\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100"+
433     "\100\100\100\100\100\100\102\006\006\006\006\104\104\104\104\104\104\104\104"+
434     "\104\104\104\104\104\106\106\106\106\106\106\106\106\106\106\106\106\106\104"+
435     "\104\104\104\104\104\104\104\104\104\104\104\104\106\106\106\110\106\106\106"+
436     "\106\106\106\106\106\106\104\104\104\104\104\104\104\104\104\104\104\104\104"+
437     "\106\106\106\106\106\106\106\106\106\106\106\106\106\112\104\006\112\114\112"+
438     "\114\104\112\104\104\104\104\106\106\116\116\106\106\106\116\106\106\106\106"+
439     "\106\104\104\104\104\104\104\104\104\104\104\104\104\104\106\106\106\106\106"+
440     "\106\106\106\106\106\106\106\106\104\114\104\112\114\104\104\104\112\104\104"+
441     "\104\112\106\106\106\106\106\106\106\106\106\106\106\106\106\104\114\104\112"+
442     "\104\104\112\112\006\104\104\104\112\106\106\106\106\106\106\106\106\106\106"+
443     "\106\106\106\104\104\104\104\104\104\104\104\104\104\104\104\104\106\106\106"+
444     "\106\106\106\106\106\106\106\106\106\106\104\104\104\104\104\104\104\106\106"+
445     "\106\106\106\106\106\106\106\104\106\106\106\106\106\106\106\106\106\106\106"+
446     "\106\106\104\104\104\104\104\104\104\104\104\104\104\104\104\106\106\106\106"+
447     "\106\106\106\106\106\106\106\106\106\104\104\104\104\104\104\104\104\106\106"+
448     "\006\006\104\104\104\104\104\104\104\104\104\104\104\104\120\106\106\106\106"+
449     "\106\106\106\106\106\106\106\106\122\106\106\106\104\104\104\104\104\104\104"+
450     "\104\104\104\104\104\120\106\106\106\106\106\106\106\106\106\106\106\106\122"+
451     "\106\106\106\104\104\104\104\104\104\104\104\104\104\104\104\120\106\106\106"+
452     "\106\106\106\106\106\106\106\106\106\122\106\106\106\104\104\104\104\104\104"+
453     "\104\104\104\104\104\104\120\106\106\106\106\106\106\106\106\106\106\106\106"+
454     "\122\106\106\106\104\104\104\104\104\104\104\104\104\104\104\104\120\106\106"+
455     "\106\106\106\106\106\106\106\106\106\106\122\106\106\106\006\006\124\124\124"+
456     "\124\124\126\126\126\126\126\130\130\130\130\130\132\132\132\132\132\134\134"+
457     "\134\134\134").toCharArray();
458
459   // The A table has 94 entries for a total of 376 bytes.
460

461   static final int A[] = new int[94];
462   static final String JavaDoc A_DATA =
463     "\000\u7005\000\u7005\u7800\000\000\u7005\000\u7005\u7800\000\u7800\000\u7800"+
464     "\000\000\030\u6800\030\000\034\u7800\000\u7800\000\000\u074B\000\u074B\000"+
465     "\u074B\000\u074B\000\u046B\000\u058B\000\u080B\000\u080B\000\u080B\u7800\000"+
466     "\000\034\000\034\000\034\000\u042B\000\u048B\000\u050B\000\u080B\000\u700A"+
467     "\u7800\000\u7800\000\000\030\242\u7001\242\u7001\241\u7002\241\u7002\000\u3409"+
468     "\000\u3409\u0800\u7005\u0800\u7005\u0800\u7005\u7800\000\u7800\000\u0800\u7005"+
469     "\000\034\000\u3008\000\u3008\u4000\u3006\u4000\u3006\u4000\u3006\000\u3008"+
470     "\000\u3008\000\u3008\u4800\u1010\u4800\u1010\u4800\u1010\u4800\u1010\u4000"+
471     "\u3006\u4000\u3006\000\034\000\034\u4000\u3006\u6800\034\u6800\034\u6800\034"+
472     "\u7800\000\000\u7001\000\u7001\000\u7002\000\u7002\000\u7002\u7800\000\000"+
473     "\u7001\u7800\000\u7800\000\000\u7001\u7800\000\000\u7002\000\u7001\000\031"+
474     "\000\u7002\000\031\u1800\u3649\u1800\u3649\u1800\u3509\u1800\u3509\u1800\u37C9"+
475     "\u1800\u37C9\u1800\u3689\u1800\u3689\u1800\u3549\u1800\u3549";
476
477   // In all, the character property tables require 6264 bytes.
478

479     static {
480                 { // THIS CODE WAS AUTOMATICALLY CREATED BY GenerateCharacter:
481
char[] data = A_DATA.toCharArray();
482             assert (data.length == (94 * 2));
483             int i = 0, j = 0;
484             while (i < (94 * 2)) {
485                 int entry = data[i++] << 16;
486                 A[j++] = entry | data[i++];
487             }
488         }
489
490     }
491 }
492
Popular Tags