Initial revision
From-SVN: r26263
This commit is contained in:
parent
140fa895c6
commit
ee9dd3721b
370 changed files with 173494 additions and 0 deletions
286
libjava/java/lang/Character.java
Normal file
286
libjava/java/lang/Character.java
Normal file
|
@ -0,0 +1,286 @@
|
|||
// Character.java - Character class.
|
||||
|
||||
/* Copyright (C) 1998, 1999 Cygnus Solutions
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
This software is copyrighted work licensed under the terms of the
|
||||
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
||||
details. */
|
||||
|
||||
package java.lang;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Tom Tromey <tromey@cygnus.com>
|
||||
* @date September 10, 1998
|
||||
*/
|
||||
|
||||
/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
|
||||
* "The Java Language Specification", ISBN 0-201-63451-1,
|
||||
* online API docs for JDK 1.2 beta from http://www.javasoft.com,
|
||||
* and The Unicode Standard Version 2.0.
|
||||
* Status: Believed complete and correct for JDK 1.1; 1.2 methods
|
||||
* unimplemented.
|
||||
*/
|
||||
|
||||
public final class Character implements Serializable, Comparable
|
||||
{
|
||||
public static final char MIN_VALUE = '\u0000';
|
||||
public static final char MAX_VALUE = '\uffff';
|
||||
|
||||
public static final int MIN_RADIX = 2;
|
||||
public static final int MAX_RADIX = 36;
|
||||
|
||||
// This initialization is seemingly circular, but it is accepted
|
||||
// by javac, and is handled specially by gcc.
|
||||
public static final Class TYPE = char.class;
|
||||
|
||||
// Space.
|
||||
public static final byte SPACE_SEPARATOR = 12;
|
||||
public static final byte LINE_SEPARATOR = 13;
|
||||
public static final byte PARAGRAPH_SEPARATOR = 14;
|
||||
|
||||
// Letters.
|
||||
public static final byte UPPERCASE_LETTER = 1;
|
||||
public static final byte LOWERCASE_LETTER = 2;
|
||||
public static final byte TITLECASE_LETTER = 3;
|
||||
public static final byte MODIFIER_LETTER = 4;
|
||||
public static final byte OTHER_LETTER = 5;
|
||||
|
||||
// Numbers.
|
||||
public static final byte DECIMAL_DIGIT_NUMBER = 9;
|
||||
public static final byte LETTER_NUMBER = 10;
|
||||
public static final byte OTHER_NUMBER = 11;
|
||||
|
||||
// Marks.
|
||||
public static final byte NON_SPACING_MARK = 6;
|
||||
public static final byte ENCLOSING_MARK = 7;
|
||||
public static final byte COMBINING_SPACING_MARK = 8;
|
||||
|
||||
// Punctuation.
|
||||
public static final byte DASH_PUNCTUATION = 20;
|
||||
public static final byte START_PUNCTUATION = 21;
|
||||
public static final byte END_PUNCTUATION = 22;
|
||||
public static final byte CONNECTOR_PUNCTUATION = 23;
|
||||
public static final byte OTHER_PUNCTUATION = 24;
|
||||
|
||||
// Symbols.
|
||||
public static final byte MATH_SYMBOL = 25;
|
||||
public static final byte CURRENCY_SYMBOL = 26;
|
||||
public static final byte MODIFIER_SYMBOL = 27;
|
||||
public static final byte OTHER_SYMBOL = 28;
|
||||
|
||||
// Format controls.
|
||||
public static final byte CONTROL = 15;
|
||||
// Note: The JCL book says that both FORMAT and PRIVATE_USE are 18.
|
||||
// However, FORMAT is actually 16.
|
||||
public static final byte FORMAT = 16;
|
||||
|
||||
// Others.
|
||||
public static final byte UNASSIGNED = 0;
|
||||
public static final byte PRIVATE_USE = 18;
|
||||
public static final byte SURROGATE = 19;
|
||||
|
||||
|
||||
public Character (char ch)
|
||||
{
|
||||
value = ch;
|
||||
}
|
||||
|
||||
public char charValue ()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
// See if a character is a digit. If so, return the corresponding
|
||||
// value. Otherwise return -1.
|
||||
private static native int digit_value (char ch);
|
||||
|
||||
public static int digit (char ch, int radix)
|
||||
{
|
||||
if (radix < MIN_RADIX || radix > MAX_RADIX)
|
||||
return -1;
|
||||
|
||||
int d = digit_value (ch);
|
||||
if (d == -1)
|
||||
{
|
||||
if (ch >= 'A' && ch <= 'Z')
|
||||
d = ch - 'A' + 10;
|
||||
else if (ch >= 'a' && ch <= 'z')
|
||||
d = ch - 'a' + 10;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
return d >= radix ? -1 : d;
|
||||
}
|
||||
|
||||
public boolean equals (Object obj)
|
||||
{
|
||||
// Don't need to compare OBJ to null as instanceof will do this.
|
||||
if (obj instanceof Character)
|
||||
return value == ((Character) obj).value;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static char forDigit (int d, int rdx)
|
||||
{
|
||||
if (d < 0 || d >= rdx || rdx < MIN_RADIX || rdx > MAX_RADIX)
|
||||
return '\u0000';
|
||||
if (d < 10)
|
||||
return (char) ('0' + d);
|
||||
// The Java Language Spec says to use lowercase, while the JCL
|
||||
// says to use uppercase. We go with the former.
|
||||
return (char) ('a' + d - 10);
|
||||
}
|
||||
|
||||
public static native int getNumericValue (char ch);
|
||||
public static native int getType (char ch);
|
||||
|
||||
public int hashCode ()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
public static boolean isDefined (char ch)
|
||||
{
|
||||
return getType (ch) != UNASSIGNED;
|
||||
}
|
||||
|
||||
public static boolean isDigit (char ch)
|
||||
{
|
||||
return digit_value (ch) != -1;
|
||||
}
|
||||
|
||||
// The JCL book says that the argument here is a Character. That is
|
||||
// wrong.
|
||||
public static boolean isIdentifierIgnorable (char ch)
|
||||
{
|
||||
// This information comes from the Unicode Standard. It isn't
|
||||
// auto-generated as it doesn't appear in the unidata table.
|
||||
return ((ch >= '\u0000' && ch <= '\u0008')
|
||||
|| (ch >= '\u000e' && ch <= '\u001b')
|
||||
// JDK 1.2 docs say that these are ignorable. The Unicode
|
||||
// Standard is somewhat ambiguous on this issue.
|
||||
|| (ch >= '\u007f' && ch <= '\u009f')
|
||||
|| (ch >= '\u200c' && ch <= '\u200f')
|
||||
// JCl says 200a through 200e, but that is a typo. The
|
||||
// Unicode standard says the bidi controls are 202a
|
||||
// through 202e.
|
||||
|| (ch >= '\u202a' && ch <= '\u202e')
|
||||
|| (ch >= '\u206a' && ch <= '\u206f')
|
||||
|| ch == '\ufeff');
|
||||
}
|
||||
|
||||
public static boolean isISOControl (char c)
|
||||
{
|
||||
return ((c >= '\u0000' && c <= '\u001f')
|
||||
|| (c >= '\u007f' && c <= '\u009f'));
|
||||
}
|
||||
|
||||
public static boolean isJavaIdentifierPart (char ch)
|
||||
{
|
||||
if (isIdentifierIgnorable (ch) || isDigit (ch))
|
||||
return true;
|
||||
int type = getType (ch);
|
||||
return (type == COMBINING_SPACING_MARK || type == NON_SPACING_MARK
|
||||
|| type == CURRENCY_SYMBOL || type == CONNECTOR_PUNCTUATION
|
||||
|| type == UPPERCASE_LETTER || type == LOWERCASE_LETTER
|
||||
|| type == TITLECASE_LETTER || type == MODIFIER_LETTER
|
||||
|| type == OTHER_LETTER || type == LETTER_NUMBER);
|
||||
}
|
||||
|
||||
public static boolean isJavaIdentifierStart (char ch)
|
||||
{
|
||||
int type = getType (ch);
|
||||
return (type == CURRENCY_SYMBOL || type == CONNECTOR_PUNCTUATION
|
||||
|| type == UPPERCASE_LETTER || type == LOWERCASE_LETTER
|
||||
|| type == TITLECASE_LETTER || type == MODIFIER_LETTER
|
||||
|| type == OTHER_LETTER);
|
||||
}
|
||||
|
||||
// Deprecated in 1.2.
|
||||
public static boolean isJavaLetter (char ch)
|
||||
{
|
||||
return ch == '$' || ch == '_' || isLetter (ch);
|
||||
}
|
||||
|
||||
// Deprecated in 1.2.
|
||||
public static boolean isJavaLetterOrDigit (char ch)
|
||||
{
|
||||
return ch == '$' || ch == '_' || isLetterOrDigit (ch);
|
||||
}
|
||||
|
||||
public static boolean isLetter (char ch)
|
||||
{
|
||||
int type = getType (ch);
|
||||
return (type == UPPERCASE_LETTER || type == LOWERCASE_LETTER
|
||||
|| type == TITLECASE_LETTER || type == MODIFIER_LETTER
|
||||
|| type == OTHER_LETTER);
|
||||
}
|
||||
|
||||
public static boolean isLetterOrDigit (char ch)
|
||||
{
|
||||
return isDigit (ch) || isLetter (ch);
|
||||
}
|
||||
|
||||
public static native boolean isLowerCase (char ch);
|
||||
|
||||
// Deprecated in JCL.
|
||||
public static boolean isSpace (char ch)
|
||||
{
|
||||
return ch == '\n' || ch == '\t' || ch == '\f' || ch == '\r' || ch == ' ';
|
||||
}
|
||||
|
||||
public static native boolean isSpaceChar (char ch);
|
||||
public static native boolean isTitleCase (char ch);
|
||||
|
||||
public static boolean isUnicodeIdentifierPart (char ch)
|
||||
{
|
||||
if (isIdentifierIgnorable (ch) || isDigit (ch))
|
||||
return true;
|
||||
int type = getType (ch);
|
||||
return (type == CONNECTOR_PUNCTUATION || type == LETTER_NUMBER
|
||||
|| type == COMBINING_SPACING_MARK || type == NON_SPACING_MARK
|
||||
|| type == UPPERCASE_LETTER || type == LOWERCASE_LETTER
|
||||
|| type == TITLECASE_LETTER || type == MODIFIER_LETTER
|
||||
|| type == OTHER_LETTER);
|
||||
}
|
||||
|
||||
public static boolean isUnicodeIdentifierStart (char ch)
|
||||
{
|
||||
return isLetter (ch);
|
||||
}
|
||||
|
||||
public static native boolean isUpperCase (char ch);
|
||||
|
||||
public static boolean isWhitespace (char ch)
|
||||
{
|
||||
return ((ch >= '\u0009' && ch <= '\r')
|
||||
|| (ch >= '\u001c' && ch <= '\u001f')
|
||||
|| (ch != '\u00a0' && ch != '\ufeff' && isSpaceChar (ch)));
|
||||
}
|
||||
|
||||
public static native char toLowerCase (char ch);
|
||||
public static native char toTitleCase (char ch);
|
||||
public static native char toUpperCase (char ch);
|
||||
|
||||
public String toString ()
|
||||
{
|
||||
return String.valueOf(value);
|
||||
}
|
||||
|
||||
public int compareTo (Character anotherCharacter)
|
||||
{
|
||||
return value - anotherCharacter.value;
|
||||
}
|
||||
|
||||
public int compareTo (Object o)
|
||||
{
|
||||
return compareTo ((Character) o);
|
||||
}
|
||||
|
||||
// Private data.
|
||||
private char value;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue