FileDocCategorySizeDatePackage
CharacterDataLatin1.javaAPI DocJava SE 5 API12951Fri Aug 26 16:54:00 BST 2005java.lang

CharacterDataLatin1

public class CharacterDataLatin1 extends Object
The CharacterData class encapsulates the large tables found in Java.lang.Character.

Fields Summary
static char[]
sharpsMap
static final int[]
A
static final String
A_DATA
Constructors Summary
Methods Summary
static intdigit(int ch, int radix)

        int value = -1;
        if (radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX) {
            int val = getProperties(ch);
            int kind = val & 0x1F;
            if (kind == Character.DECIMAL_DIGIT_NUMBER) {
                value = ch + ((val & 0x3E0) >> 5) & 0x1F;
            }
            else if ((val & 0xC00) == 0x00000C00) {
                // Java supradecimal digit
                value = (ch + ((val & 0x3E0) >> 5) & 0x1F) + 10;
            }
        }
        return (value < radix) ? value : -1;
    
static bytegetDirectionality(int ch)

        int val = getProperties(ch);
        byte directionality = (byte)((val & 0x78000000) >> 27);

        if (directionality == 0xF ) {
            directionality = -1;
        }
        return directionality;
    
static intgetNumericValue(int ch)

        int val = getProperties(ch);
        int retval = -1;

        switch (val & 0xC00) {
            default: // cannot occur
            case (0x00000000):         // not numeric
                retval = -1;
                break;
            case (0x00000400):              // simple numeric
                retval = ch + ((val & 0x3E0) >> 5) & 0x1F;
                break;
            case (0x00000800)      :       // "strange" numeric
                 retval = -2; 
                 break;
            case (0x00000C00):           // Java supradecimal
                retval = (ch + ((val & 0x3E0) >> 5) & 0x1F) + 10;
                break;
        }
        return retval;
    
static intgetProperties(int ch)

		char offset = (char)ch;
        int props = A[offset];
        return props;
    
static intgetType(int ch)

        int props = getProperties(ch);
        return (props & 0x1F);
    
static booleanisDefined(int ch)

        int type = getType(ch);
        return (type != Character.UNASSIGNED);
    
static booleanisDigit(int ch)

        int type = getType(ch);
        return (type == Character.DECIMAL_DIGIT_NUMBER);
    
static booleanisIdentifierIgnorable(int ch)

        int props = getProperties(ch);
        return ((props & 0x00007000) == 0x00001000);
    
static booleanisJavaIdentifierPart(int ch)

        int props = getProperties(ch);
        return ((props & 0x00003000) != 0);
    
static booleanisJavaIdentifierStart(int ch)

        int props = getProperties(ch);
        return ((props & 0x00007000) >= 0x00005000);
    
static booleanisLetter(int ch)

        int type = getType(ch);
        return (((((1 << Character.UPPERCASE_LETTER) |
            (1 << Character.LOWERCASE_LETTER) |
            (1 << Character.TITLECASE_LETTER) |
            (1 << Character.MODIFIER_LETTER) |
            (1 << Character.OTHER_LETTER)) >> type) & 1) != 0);
    
static booleanisLetterOrDigit(int ch)

        int type = getType(ch);
        return (((((1 << Character.UPPERCASE_LETTER) |
            (1 << Character.LOWERCASE_LETTER) |
            (1 << Character.TITLECASE_LETTER) |
            (1 << Character.MODIFIER_LETTER) |
            (1 << Character.OTHER_LETTER) |
            (1 << Character.DECIMAL_DIGIT_NUMBER)) >> type) & 1) != 0);
    
static booleanisLowerCase(int ch)

        int type = getType(ch);
        return (type == Character.LOWERCASE_LETTER);
    
static booleanisMirrored(int ch)

        int props = getProperties(ch);
        return ((props & 0x80000000) != 0);
    
static booleanisSpaceChar(int ch)

        int type = getType(ch);
        return (((((1 << Character.SPACE_SEPARATOR) |
            (1 << Character.LINE_SEPARATOR) |
            (1 << Character.PARAGRAPH_SEPARATOR)) >> type) & 1) != 0);
    
static booleanisTitleCase(int ch)

        return false;
    
static booleanisUnicodeIdentifierPart(int ch)

        int props = getProperties(ch);
        return ((props & 0x00001000) != 0);
    
static booleanisUnicodeIdentifierStart(int ch)

        int props = getProperties(ch);
        return ((props & 0x00007000) == 0x00007000);
    
static booleanisUpperCase(int ch)

        int type = getType(ch);
        return (type == Character.UPPERCASE_LETTER);
    
static booleanisWhitespace(int ch)

        int props = getProperties(ch);
        return ((props & 0x00007000) == 0x00004000);
    
static inttoLowerCase(int ch)

        int mapChar = ch;
        int val = getProperties(ch);

        if (((val & 0x00020000) != 0) && 
                ((val & 0x07FC0000) != 0x07FC0000)) { 
            int offset = val << 5 >> (5+18);
            mapChar = ch + offset;
        }
        return mapChar;
    
static inttoTitleCase(int ch)

        return toUpperCase(ch);
    
static inttoUpperCase(int ch)

        int mapChar = ch;
        int val = getProperties(ch);

        if ((val & 0x00010000) != 0) {
            if ((val & 0x07FC0000) != 0x07FC0000) {
                int offset = val  << 5 >> (5+18);
                mapChar =  ch - offset;
            } else if (ch == 0x00B5) {
                mapChar = 0x039C;
            }
        }
        return mapChar;
    
static char[]toUpperCaseCharArray(int ch)


        
        char[] upperMap = {(char)ch};
        if (ch == 0x00DF) {
            upperMap = sharpsMap;
        }
        return upperMap;
    
static inttoUpperCaseEx(int ch)

        int mapChar = ch;
        int val = getProperties(ch);

        if ((val & 0x00010000) != 0) {
            if ((val & 0x07FC0000) != 0x07FC0000) {
                int offset = val  << 5 >> (5+18);
                mapChar =  ch - offset;
            }
            else {
                switch(ch) {
                    // map overflow characters
                    case 0x00B5 : mapChar = 0x039C; break;
                    default       : mapChar = Character.ERROR; break;
                }
            }
        }
        return mapChar;