natString.cc: Include Locale.h.
* java/lang/natString.cc: Include Locale.h. (toUpperCase): Added `locale' argument. Handle locale sensitivity. (toLowerCase): Added `locale' argument. Handle locale sensitivity. (ESSET, CAPITAL_S, SMALL_I, CAPITAL_I_WITH_DOT, SMALL_DOTLESS_I, CAPITAL_I): New defines. * java/lang/String.java (CASE_INSENSITIVE_ORDER): Now public and final. Import Locale. (toUpperCase, toLowerCase): New methods. Variants which accept locale now native. * java/lang/ExceptionInInitializerError.java (printStackTrace): New methods. * java/util/PropertyPermission.java: Re-merged from Classpath. * java/text/RuleBasedCollator.java (getCollationElementIterator): New method. * java/text/StringCharacterIterator.java: Reindented. (setText): New method. From-SVN: r37539
This commit is contained in:
parent
c5f651bf3f
commit
9839499072
7 changed files with 327 additions and 159 deletions
|
@ -22,108 +22,121 @@ package java.text;
|
|||
public final class StringCharacterIterator implements CharacterIterator
|
||||
{
|
||||
public Object clone ()
|
||||
{
|
||||
return (Object) new StringCharacterIterator (text, begin, end, pos);
|
||||
}
|
||||
{
|
||||
return (Object) new StringCharacterIterator (text, begin, end, pos);
|
||||
}
|
||||
|
||||
public char current ()
|
||||
{
|
||||
// This follows JDK 1.2 semantics and not 1.1 semantics.
|
||||
// In 1.1 we would throw an exception if begin==end.
|
||||
return (pos < end) ? text.charAt(pos) : CharacterIterator.DONE;
|
||||
}
|
||||
{
|
||||
// This follows JDK 1.2 semantics and not 1.1 semantics.
|
||||
// In 1.1 we would throw an exception if begin==end.
|
||||
return (pos < end) ? text.charAt(pos) : CharacterIterator.DONE;
|
||||
}
|
||||
|
||||
public boolean equals (Object obj)
|
||||
{
|
||||
if (! (obj instanceof StringCharacterIterator))
|
||||
return false;
|
||||
StringCharacterIterator sci = (StringCharacterIterator) obj;
|
||||
// The spec says "the same text". We take this to mean equals,
|
||||
// not ==.
|
||||
return (pos == sci.pos
|
||||
&& begin == sci.begin
|
||||
&& end == sci.end
|
||||
&& text.equals(sci.text));
|
||||
}
|
||||
{
|
||||
if (! (obj instanceof StringCharacterIterator))
|
||||
return false;
|
||||
StringCharacterIterator sci = (StringCharacterIterator) obj;
|
||||
// The spec says "the same text". We take this to mean equals,
|
||||
// not ==.
|
||||
return (pos == sci.pos
|
||||
&& begin == sci.begin
|
||||
&& end == sci.end
|
||||
&& text.equals(sci.text));
|
||||
}
|
||||
|
||||
public char first ()
|
||||
{
|
||||
pos = begin;
|
||||
return current ();
|
||||
}
|
||||
{
|
||||
pos = begin;
|
||||
return current ();
|
||||
}
|
||||
|
||||
public int getBeginIndex ()
|
||||
{
|
||||
return begin;
|
||||
}
|
||||
{
|
||||
return begin;
|
||||
}
|
||||
|
||||
public int getEndIndex ()
|
||||
{
|
||||
return end;
|
||||
}
|
||||
{
|
||||
return end;
|
||||
}
|
||||
|
||||
public int getIndex ()
|
||||
{
|
||||
return pos;
|
||||
}
|
||||
{
|
||||
return pos;
|
||||
}
|
||||
|
||||
public int hashCode ()
|
||||
{
|
||||
// FIXME: this is a terrible hash code. Find a better one.
|
||||
return text.hashCode() + pos + begin + end;
|
||||
}
|
||||
{
|
||||
// FIXME: this is a terrible hash code. Find a better one.
|
||||
return text.hashCode() + pos + begin + end;
|
||||
}
|
||||
|
||||
public char last ()
|
||||
{
|
||||
pos = end;
|
||||
return current ();
|
||||
}
|
||||
{
|
||||
pos = end;
|
||||
return current ();
|
||||
}
|
||||
|
||||
public char next ()
|
||||
{
|
||||
if (pos == end)
|
||||
return CharacterIterator.DONE;
|
||||
++pos;
|
||||
return current ();
|
||||
}
|
||||
{
|
||||
if (pos == end)
|
||||
return CharacterIterator.DONE;
|
||||
++pos;
|
||||
return current ();
|
||||
}
|
||||
|
||||
public char previous ()
|
||||
{
|
||||
if (pos == begin)
|
||||
return CharacterIterator.DONE;
|
||||
--pos;
|
||||
return current ();
|
||||
}
|
||||
{
|
||||
if (pos == begin)
|
||||
return CharacterIterator.DONE;
|
||||
--pos;
|
||||
return current ();
|
||||
}
|
||||
|
||||
public char setIndex (int idx)
|
||||
{
|
||||
// In 1.1 we would throw an error if `idx == end'.
|
||||
if (idx < begin || idx > end)
|
||||
throw new IllegalArgumentException ();
|
||||
pos = idx;
|
||||
return current ();
|
||||
}
|
||||
{
|
||||
// In 1.1 we would throw an error if `idx == end'.
|
||||
if (idx < begin || idx > end)
|
||||
throw new IllegalArgumentException ();
|
||||
pos = idx;
|
||||
return current ();
|
||||
}
|
||||
|
||||
public StringCharacterIterator (String text)
|
||||
{
|
||||
this (text, 0, text.length(), 0);
|
||||
}
|
||||
public StringCharacterIterator (String text, int pos)
|
||||
{
|
||||
this (text, 0, text.length(), pos);
|
||||
}
|
||||
public StringCharacterIterator (String text, int begin, int end, int pos)
|
||||
{
|
||||
if (begin < 0 || begin > end || end > text.length()
|
||||
// In 1.1 we would also throw if `pos == end'.
|
||||
|| pos < begin || pos > end)
|
||||
throw new IllegalArgumentException ();
|
||||
{
|
||||
this (text, 0, text.length(), 0);
|
||||
}
|
||||
|
||||
this.text = text;
|
||||
this.begin = begin;
|
||||
this.end = end;
|
||||
this.pos = pos;
|
||||
}
|
||||
public StringCharacterIterator (String text, int pos)
|
||||
{
|
||||
this (text, 0, text.length(), pos);
|
||||
}
|
||||
|
||||
public StringCharacterIterator (String text, int begin, int end, int pos)
|
||||
{
|
||||
if (begin < 0 || begin > end || end > text.length()
|
||||
// In 1.1 we would also throw if `pos == end'.
|
||||
|| pos < begin || pos > end)
|
||||
throw new IllegalArgumentException ();
|
||||
|
||||
this.text = text;
|
||||
this.begin = begin;
|
||||
this.end = end;
|
||||
this.pos = pos;
|
||||
}
|
||||
|
||||
// The online 1.2 docs say that this is "package visible" in the
|
||||
// method description, but they also say it is public. We choose
|
||||
// the latter for compatibility with the actual implementation.
|
||||
public void setText (String text)
|
||||
{
|
||||
this.text = text;
|
||||
this.begin = 0;
|
||||
this.end = text.length ();
|
||||
this.pos = 0;
|
||||
}
|
||||
|
||||
// String to iterate over.
|
||||
private String text;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue