< prev index next >

make/data/characterdata/CharacterDataLatin1.java.template

Print this page
rev 48663 : [mq]: charlatin1digit

*** 23,32 **** --- 23,34 ---- * questions. */ package java.lang; + import java.util.Arrays; + /** The CharacterData class encapsulates the large tables found in Java.lang.Character. */ class CharacterDataLatin1 extends CharacterData {
*** 157,180 **** int toTitleCase(int ch) { return toUpperCase(ch); } ! int digit(int ch, int radix) { ! int value = -1; ! if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) { ! int val = getProperties(ch); ! int kind = val & $$maskType; ! if (kind == Character.DECIMAL_DIGIT_NUMBER) { ! value = ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit; } ! else if ((val & $$maskNumericType) == $$valueJavaSupradecimal) { ! // Java supradecimal digit ! value = (ch + ((val & $$maskDigitOffset) >> $$shiftDigitOffset) & $$maskDigit) + 10; } } ! return (value < radix) ? value : -1; } int getNumericValue(int ch) { int val = getProperties(ch); int retval = -1; --- 159,190 ---- int toTitleCase(int ch) { return toUpperCase(ch); } ! private static final byte[] DIGITS; ! static { ! byte[] digitValues = new byte[256]; ! Arrays.fill(digitValues, (byte)-1); ! for (char c = '0'; c <= '9'; c++) { ! digitValues[c] = (byte)(c - '0'); ! } ! for (char c = 'A'; c <= 'Z'; c++) { ! digitValues[c] = (byte)(c - 'A' + 10); } ! for (char c = 'a'; c <= 'z'; c++) { ! digitValues[c] = (byte)(c - 'a' + 10); } + DIGITS = digitValues; + } + + int digit(int ch, int radix) { + int value = DIGITS[ch]; + if (value >= 0 && radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) { + value = (value < radix) ? value : -1; } ! return value; } int getNumericValue(int ch) { int val = getProperties(ch); int retval = -1;
< prev index next >