FileDocCategorySizeDatePackage
CharacterData0E.javaAPI DocJava SE 5 API19966Fri Aug 26 16:54:06 BST 2005java.lang

CharacterData0E

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

Fields Summary
static final char[]
X
static final char[]
Y
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 = Character.DIRECTIONALITY_UNDEFINED;
        }
        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[Y[X[offset>>5]|((offset>>1)&0xF)]|(offset&0x1)];
        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)

        int type = getType(ch);
        return (type == Character.TITLECASE_LETTER);
    
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) {
            int offset = val << 5 >> (5+18);
            mapChar = ch + offset;
        }
        return mapChar;
    
static inttoTitleCase(int ch)

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

        if ((val & 0x00008000) != 0) {
            // There is a titlecase equivalent.  Perform further checks:
            if ((val & 0x00010000) == 0) {
                // The character does not have an uppercase equivalent, so it must
                // already be uppercase; so add 1 to get the titlecase form.
                mapChar = ch + 1;
            }
            else if ((val & 0x00020000) == 0) {
                // The character does not have a lowercase equivalent, so it must
                // already be lowercase; so subtract 1 to get the titlecase form.
                mapChar = ch - 1;
            }
            // else {
            // The character has both an uppercase equivalent and a lowercase
            // equivalent, so it must itself be a titlecase form; return it.
            // return ch;
            //}
        }
        else if ((val & 0x00010000) != 0) {
            // This character has no titlecase equivalent but it does have an
            // uppercase equivalent, so use that (subtract the signed case offset).
            mapChar = toUpperCase(ch);
        }
        return mapChar;
    
static inttoUpperCase(int ch)

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

        if ((val & 0x00010000) != 0) {
            int offset = val  << 5 >> (5+18);
            mapChar =  ch - offset;
        }
        return mapChar;