1 /*
2 * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
122 boolean isUnicodeIdentifierPart(int ch) {
123 int props = getProperties(ch);
124 return ((props & $$maskUnicodePart) != 0);
125 }
126
127 boolean isIdentifierIgnorable(int ch) {
128 int props = getProperties(ch);
129 return ((props & $$maskIdentifierInfo) == $$valueIgnorable);
130 }
131
132 int toLowerCase(int ch) {
133 int mapChar = ch;
134 int val = getProperties(ch);
135
136 if ((val & $$maskLowerCase) != 0) {
137 if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
138 switch(ch) {
139 case 0x0130: mapChar = 0x0069; break;
140 case 0x023A: mapChar = 0x2C65; break;
141 case 0x023E: mapChar = 0x2C66; break;
142 case 0x10A0: mapChar = 0x2D00; break;
143 case 0x10A1: mapChar = 0x2D01; break;
144 case 0x10A2: mapChar = 0x2D02; break;
145 case 0x10A3: mapChar = 0x2D03; break;
146 case 0x10A4: mapChar = 0x2D04; break;
147 case 0x10A5: mapChar = 0x2D05; break;
148 case 0x10A6: mapChar = 0x2D06; break;
149 case 0x10A7: mapChar = 0x2D07; break;
150 case 0x10A8: mapChar = 0x2D08; break;
151 case 0x10A9: mapChar = 0x2D09; break;
152 case 0x10AA: mapChar = 0x2D0A; break;
153 case 0x10AB: mapChar = 0x2D0B; break;
154 case 0x10AC: mapChar = 0x2D0C; break;
155 case 0x10AD: mapChar = 0x2D0D; break;
156 case 0x10AE: mapChar = 0x2D0E; break;
157 case 0x10AF: mapChar = 0x2D0F; break;
158 case 0x10B0: mapChar = 0x2D10; break;
159 case 0x10B1: mapChar = 0x2D11; break;
160 case 0x10B2: mapChar = 0x2D12; break;
161 case 0x10B3: mapChar = 0x2D13; break;
282 case 0x1FAB: mapChar = 0x1FA3; break;
283 case 0x1FAC: mapChar = 0x1FA4; break;
284 case 0x1FAD: mapChar = 0x1FA5; break;
285 case 0x1FAE: mapChar = 0x1FA6; break;
286 case 0x1FAF: mapChar = 0x1FA7; break;
287 case 0x1FBC: mapChar = 0x1FB3; break;
288 case 0x1FCC: mapChar = 0x1FC3; break;
289 case 0x1FFC: mapChar = 0x1FF3; break;
290 case 0x2126: mapChar = 0x03C9; break;
291 case 0x212A: mapChar = 0x006B; break;
292 case 0x212B: mapChar = 0x00E5; break;
293 case 0x2C62: mapChar = 0x026B; break;
294 case 0x2C63: mapChar = 0x1D7D; break;
295 case 0x2C64: mapChar = 0x027D; break;
296 case 0x2C6D: mapChar = 0x0251; break;
297 case 0x2C6E: mapChar = 0x0271; break;
298 case 0x2C6F: mapChar = 0x0250; break;
299 case 0x2C70: mapChar = 0x0252; break;
300 case 0x2C7E: mapChar = 0x023F; break;
301 case 0x2C7F: mapChar = 0x0240; break;
302 case 0xA77D: mapChar = 0x1D79; break;
303 case 0xA78D: mapChar = 0x0265; break;
304 case 0xA7AA: mapChar = 0x0266; break;
305 case 0xA7AB: mapChar = 0x025C; break;
306 case 0xA7AC: mapChar = 0x0261; break;
307 case 0xA7AD: mapChar = 0x026C; break;
308 case 0xA7B0: mapChar = 0x029E; break;
309 case 0xA7B1: mapChar = 0x0287; break;
310 case 0xA7B2: mapChar = 0x029D; break;
311 case 0xA7B3: mapChar = 0xAB53; break;
312 // default mapChar is already set, so no
313 // need to redo it here.
314 // default : mapChar = ch;
315 }
316 }
317 else {
318 int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
319 mapChar = ch + offset;
320 }
321 }
322 return mapChar;
323 }
324
325 int toUpperCase(int ch) {
326 int mapChar = ch;
327 int val = getProperties(ch);
328
329 if ((val & $$maskUpperCase) != 0) {
330 if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
331 switch(ch) {
332 case 0x017F: mapChar = 0x0053; break;
333 case 0x023F: mapChar = 0x2C7E; break;
334 case 0x0240: mapChar = 0x2C7F; break;
335 case 0x0250: mapChar = 0x2C6F; break;
336 case 0x0251: mapChar = 0x2C6D; break;
337 case 0x0252: mapChar = 0x2C70; break;
338 case 0x025C: mapChar = 0xA7AB; break;
339 case 0x0261: mapChar = 0xA7AC; break;
340 case 0x0265: mapChar = 0xA78D; break;
341 case 0x0266: mapChar = 0xA7AA; break;
342 case 0x026B: mapChar = 0x2C62; break;
343 case 0x026C: mapChar = 0xA7AD; break;
344 case 0x0271: mapChar = 0x2C6E; break;
345 case 0x027D: mapChar = 0x2C64; break;
346 case 0x0287: mapChar = 0xA7B1; break;
347 case 0x029D: mapChar = 0xA7B2; break;
348 case 0x029E: mapChar = 0xA7B0; break;
349 case 0x1D79: mapChar = 0xA77D; break;
350 case 0x1D7D: mapChar = 0x2C63; break;
351 case 0x1F80: mapChar = 0x1F88; break;
352 case 0x1F81: mapChar = 0x1F89; break;
353 case 0x1F82: mapChar = 0x1F8A; break;
354 case 0x1F83: mapChar = 0x1F8B; break;
355 case 0x1F84: mapChar = 0x1F8C; break;
356 case 0x1F85: mapChar = 0x1F8D; break;
357 case 0x1F86: mapChar = 0x1F8E; break;
358 case 0x1F87: mapChar = 0x1F8F; break;
359 case 0x1F90: mapChar = 0x1F98; break;
360 case 0x1F91: mapChar = 0x1F99; break;
361 case 0x1F92: mapChar = 0x1F9A; break;
362 case 0x1F93: mapChar = 0x1F9B; break;
363 case 0x1F94: mapChar = 0x1F9C; break;
364 case 0x1F95: mapChar = 0x1F9D; break;
365 case 0x1F96: mapChar = 0x1F9E; break;
366 case 0x1F97: mapChar = 0x1F9F; break;
367 case 0x1FA0: mapChar = 0x1FA8; break;
368 case 0x1FA1: mapChar = 0x1FA9; break;
698 int mapChar = ch;
699 int val = getProperties(ch);
700
701 if ((val & $$maskUpperCase) != 0) {
702 if ((val & $$maskCaseOffset) != $$maskCaseOffset) {
703 int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
704 mapChar = ch - offset;
705 }
706 else {
707 switch(ch) {
708 case 0x017F: mapChar = 0x0053; break;
709 case 0x023F: mapChar = 0x2C7E; break;
710 case 0x0240: mapChar = 0x2C7F; break;
711 case 0x0250: mapChar = 0x2C6F; break;
712 case 0x0251: mapChar = 0x2C6D; break;
713 case 0x0252: mapChar = 0x2C70; break;
714 case 0x025C: mapChar = 0xA7AB; break;
715 case 0x0261: mapChar = 0xA7AC; break;
716 case 0x0265: mapChar = 0xA78D; break;
717 case 0x0266: mapChar = 0xA7AA; break;
718 case 0x026B: mapChar = 0x2C62; break;
719 case 0x026C: mapChar = 0xA7AD; break;
720 case 0x0271: mapChar = 0x2C6E; break;
721 case 0x027D: mapChar = 0x2C64; break;
722 case 0x0287: mapChar = 0xA7B1; break;
723 case 0x029D: mapChar = 0xA7B2; break;
724 case 0x029E: mapChar = 0xA7B0; break;
725 case 0x1D79: mapChar = 0xA77D; break;
726 case 0x1D7D: mapChar = 0x2C63; break;
727 case 0x1FBE: mapChar = 0x0399; break;
728 case 0x2C65: mapChar = 0x023A; break;
729 case 0x2C66: mapChar = 0x023E; break;
730 case 0x2D00: mapChar = 0x10A0; break;
731 case 0x2D01: mapChar = 0x10A1; break;
732 case 0x2D02: mapChar = 0x10A2; break;
733 case 0x2D03: mapChar = 0x10A3; break;
734 case 0x2D04: mapChar = 0x10A4; break;
735 case 0x2D05: mapChar = 0x10A5; break;
736 case 0x2D06: mapChar = 0x10A6; break;
737 case 0x2D07: mapChar = 0x10A7; break;
738 case 0x2D08: mapChar = 0x10A8; break;
739 case 0x2D09: mapChar = 0x10A9; break;
740 case 0x2D0A: mapChar = 0x10AA; break;
741 case 0x2D0B: mapChar = 0x10AB; break;
742 case 0x2D0C: mapChar = 0x10AC; break;
743 case 0x2D0D: mapChar = 0x10AD; break;
744 case 0x2D0E: mapChar = 0x10AE; break;
|
1 /*
2 * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
122 boolean isUnicodeIdentifierPart(int ch) {
123 int props = getProperties(ch);
124 return ((props & $$maskUnicodePart) != 0);
125 }
126
127 boolean isIdentifierIgnorable(int ch) {
128 int props = getProperties(ch);
129 return ((props & $$maskIdentifierInfo) == $$valueIgnorable);
130 }
131
132 int toLowerCase(int ch) {
133 int mapChar = ch;
134 int val = getProperties(ch);
135
136 if ((val & $$maskLowerCase) != 0) {
137 if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
138 switch(ch) {
139 case 0x0130: mapChar = 0x0069; break;
140 case 0x023A: mapChar = 0x2C65; break;
141 case 0x023E: mapChar = 0x2C66; break;
142 case 0x0412: mapChar = 0x1C80; break;
143 case 0x0414: mapChar = 0x1C81; break;
144 case 0x041E: mapChar = 0x1C82; break;
145 case 0x0421: mapChar = 0x1C83; break;
146 case 0x042A: mapChar = 0x1C86; break;
147 case 0x0462: mapChar = 0x1C87; break;
148 case 0x10A0: mapChar = 0x2D00; break;
149 case 0x10A1: mapChar = 0x2D01; break;
150 case 0x10A2: mapChar = 0x2D02; break;
151 case 0x10A3: mapChar = 0x2D03; break;
152 case 0x10A4: mapChar = 0x2D04; break;
153 case 0x10A5: mapChar = 0x2D05; break;
154 case 0x10A6: mapChar = 0x2D06; break;
155 case 0x10A7: mapChar = 0x2D07; break;
156 case 0x10A8: mapChar = 0x2D08; break;
157 case 0x10A9: mapChar = 0x2D09; break;
158 case 0x10AA: mapChar = 0x2D0A; break;
159 case 0x10AB: mapChar = 0x2D0B; break;
160 case 0x10AC: mapChar = 0x2D0C; break;
161 case 0x10AD: mapChar = 0x2D0D; break;
162 case 0x10AE: mapChar = 0x2D0E; break;
163 case 0x10AF: mapChar = 0x2D0F; break;
164 case 0x10B0: mapChar = 0x2D10; break;
165 case 0x10B1: mapChar = 0x2D11; break;
166 case 0x10B2: mapChar = 0x2D12; break;
167 case 0x10B3: mapChar = 0x2D13; break;
288 case 0x1FAB: mapChar = 0x1FA3; break;
289 case 0x1FAC: mapChar = 0x1FA4; break;
290 case 0x1FAD: mapChar = 0x1FA5; break;
291 case 0x1FAE: mapChar = 0x1FA6; break;
292 case 0x1FAF: mapChar = 0x1FA7; break;
293 case 0x1FBC: mapChar = 0x1FB3; break;
294 case 0x1FCC: mapChar = 0x1FC3; break;
295 case 0x1FFC: mapChar = 0x1FF3; break;
296 case 0x2126: mapChar = 0x03C9; break;
297 case 0x212A: mapChar = 0x006B; break;
298 case 0x212B: mapChar = 0x00E5; break;
299 case 0x2C62: mapChar = 0x026B; break;
300 case 0x2C63: mapChar = 0x1D7D; break;
301 case 0x2C64: mapChar = 0x027D; break;
302 case 0x2C6D: mapChar = 0x0251; break;
303 case 0x2C6E: mapChar = 0x0271; break;
304 case 0x2C6F: mapChar = 0x0250; break;
305 case 0x2C70: mapChar = 0x0252; break;
306 case 0x2C7E: mapChar = 0x023F; break;
307 case 0x2C7F: mapChar = 0x0240; break;
308 case 0xA64A: mapChar = 0x1C88; break;
309 case 0xA77D: mapChar = 0x1D79; break;
310 case 0xA78D: mapChar = 0x0265; break;
311 case 0xA7AA: mapChar = 0x0266; break;
312 case 0xA7AB: mapChar = 0x025C; break;
313 case 0xA7AC: mapChar = 0x0261; break;
314 case 0xA7AD: mapChar = 0x026C; break;
315 case 0xA7AE: mapChar = 0x026A; break;
316 case 0xA7B0: mapChar = 0x029E; break;
317 case 0xA7B1: mapChar = 0x0287; break;
318 case 0xA7B2: mapChar = 0x029D; break;
319 case 0xA7B3: mapChar = 0xAB53; break;
320 // default mapChar is already set, so no
321 // need to redo it here.
322 // default : mapChar = ch;
323 }
324 }
325 else {
326 int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
327 mapChar = ch + offset;
328 }
329 }
330 return mapChar;
331 }
332
333 int toUpperCase(int ch) {
334 int mapChar = ch;
335 int val = getProperties(ch);
336
337 if ((val & $$maskUpperCase) != 0) {
338 if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
339 switch(ch) {
340 case 0x017F: mapChar = 0x0053; break;
341 case 0x023F: mapChar = 0x2C7E; break;
342 case 0x0240: mapChar = 0x2C7F; break;
343 case 0x0250: mapChar = 0x2C6F; break;
344 case 0x0251: mapChar = 0x2C6D; break;
345 case 0x0252: mapChar = 0x2C70; break;
346 case 0x025C: mapChar = 0xA7AB; break;
347 case 0x0261: mapChar = 0xA7AC; break;
348 case 0x0265: mapChar = 0xA78D; break;
349 case 0x0266: mapChar = 0xA7AA; break;
350 case 0x026A: mapChar = 0xA7AE; break;
351 case 0x026B: mapChar = 0x2C62; break;
352 case 0x026C: mapChar = 0xA7AD; break;
353 case 0x0271: mapChar = 0x2C6E; break;
354 case 0x027D: mapChar = 0x2C64; break;
355 case 0x0287: mapChar = 0xA7B1; break;
356 case 0x029D: mapChar = 0xA7B2; break;
357 case 0x029E: mapChar = 0xA7B0; break;
358 case 0x1C80: mapChar = 0x0412; break;
359 case 0x1C81: mapChar = 0x0414; break;
360 case 0x1C82: mapChar = 0x041E; break;
361 case 0x1C83: mapChar = 0x0421; break;
362 case 0x1C84: mapChar = 0x0422; break;
363 case 0x1C85: mapChar = 0x0422; break;
364 case 0x1C86: mapChar = 0x042A; break;
365 case 0x1C87: mapChar = 0x0462; break;
366 case 0x1C88: mapChar = 0xA64A; break;
367 case 0x1D79: mapChar = 0xA77D; break;
368 case 0x1D7D: mapChar = 0x2C63; break;
369 case 0x1F80: mapChar = 0x1F88; break;
370 case 0x1F81: mapChar = 0x1F89; break;
371 case 0x1F82: mapChar = 0x1F8A; break;
372 case 0x1F83: mapChar = 0x1F8B; break;
373 case 0x1F84: mapChar = 0x1F8C; break;
374 case 0x1F85: mapChar = 0x1F8D; break;
375 case 0x1F86: mapChar = 0x1F8E; break;
376 case 0x1F87: mapChar = 0x1F8F; break;
377 case 0x1F90: mapChar = 0x1F98; break;
378 case 0x1F91: mapChar = 0x1F99; break;
379 case 0x1F92: mapChar = 0x1F9A; break;
380 case 0x1F93: mapChar = 0x1F9B; break;
381 case 0x1F94: mapChar = 0x1F9C; break;
382 case 0x1F95: mapChar = 0x1F9D; break;
383 case 0x1F96: mapChar = 0x1F9E; break;
384 case 0x1F97: mapChar = 0x1F9F; break;
385 case 0x1FA0: mapChar = 0x1FA8; break;
386 case 0x1FA1: mapChar = 0x1FA9; break;
716 int mapChar = ch;
717 int val = getProperties(ch);
718
719 if ((val & $$maskUpperCase) != 0) {
720 if ((val & $$maskCaseOffset) != $$maskCaseOffset) {
721 int offset = val << $$shiftCaseOffsetSign >> ($$shiftCaseOffsetSign+$$shiftCaseOffset);
722 mapChar = ch - offset;
723 }
724 else {
725 switch(ch) {
726 case 0x017F: mapChar = 0x0053; break;
727 case 0x023F: mapChar = 0x2C7E; break;
728 case 0x0240: mapChar = 0x2C7F; break;
729 case 0x0250: mapChar = 0x2C6F; break;
730 case 0x0251: mapChar = 0x2C6D; break;
731 case 0x0252: mapChar = 0x2C70; break;
732 case 0x025C: mapChar = 0xA7AB; break;
733 case 0x0261: mapChar = 0xA7AC; break;
734 case 0x0265: mapChar = 0xA78D; break;
735 case 0x0266: mapChar = 0xA7AA; break;
736 case 0x026A: mapChar = 0xA7AE; break;
737 case 0x026B: mapChar = 0x2C62; break;
738 case 0x026C: mapChar = 0xA7AD; break;
739 case 0x0271: mapChar = 0x2C6E; break;
740 case 0x027D: mapChar = 0x2C64; break;
741 case 0x0287: mapChar = 0xA7B1; break;
742 case 0x029D: mapChar = 0xA7B2; break;
743 case 0x029E: mapChar = 0xA7B0; break;
744 case 0x1C80: mapChar = 0x0412; break;
745 case 0x1C81: mapChar = 0x0414; break;
746 case 0x1C82: mapChar = 0x041E; break;
747 case 0x1C83: mapChar = 0x0421; break;
748 case 0x1C84: mapChar = 0x0422; break;
749 case 0x1C85: mapChar = 0x0422; break;
750 case 0x1C86: mapChar = 0x042A; break;
751 case 0x1C87: mapChar = 0x0462; break;
752 case 0x1C88: mapChar = 0xA64A; break;
753 case 0x1D79: mapChar = 0xA77D; break;
754 case 0x1D7D: mapChar = 0x2C63; break;
755 case 0x1FBE: mapChar = 0x0399; break;
756 case 0x2C65: mapChar = 0x023A; break;
757 case 0x2C66: mapChar = 0x023E; break;
758 case 0x2D00: mapChar = 0x10A0; break;
759 case 0x2D01: mapChar = 0x10A1; break;
760 case 0x2D02: mapChar = 0x10A2; break;
761 case 0x2D03: mapChar = 0x10A3; break;
762 case 0x2D04: mapChar = 0x10A4; break;
763 case 0x2D05: mapChar = 0x10A5; break;
764 case 0x2D06: mapChar = 0x10A6; break;
765 case 0x2D07: mapChar = 0x10A7; break;
766 case 0x2D08: mapChar = 0x10A8; break;
767 case 0x2D09: mapChar = 0x10A9; break;
768 case 0x2D0A: mapChar = 0x10AA; break;
769 case 0x2D0B: mapChar = 0x10AB; break;
770 case 0x2D0C: mapChar = 0x10AC; break;
771 case 0x2D0D: mapChar = 0x10AD; break;
772 case 0x2D0E: mapChar = 0x10AE; break;
|