< 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 >