aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/text
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/text')
-rw-r--r--libjava/java/text/Collator.java13
-rw-r--r--libjava/java/text/DateFormatSymbols.h2
-rw-r--r--libjava/java/text/DateFormatSymbols.java597
-rw-r--r--libjava/java/text/DecimalFormatSymbols.h66
-rw-r--r--libjava/java/text/DecimalFormatSymbols.java742
5 files changed, 41 insertions, 1379 deletions
diff --git a/libjava/java/text/Collator.java b/libjava/java/text/Collator.java
index 3e64172..e493182 100644
--- a/libjava/java/text/Collator.java
+++ b/libjava/java/text/Collator.java
@@ -1,5 +1,6 @@
/* Collator.java -- Perform locale dependent String comparisons.
- Copyright (C) 1998, 1999, 2000, 2001, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2004, 2005, 2007,
+ 2008 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -38,6 +39,8 @@ exception statement from your version. */
package java.text;
+import gnu.java.locale.LocaleHelper;
+
import java.text.spi.CollatorProvider;
import java.util.Comparator;
@@ -243,10 +246,7 @@ public abstract class Collator implements Comparator<Object>, Cloneable
*/
public static synchronized Locale[] getAvailableLocales ()
{
- // FIXME
- Locale[] l = new Locale[1];
- l[0] = Locale.US;
- return l;
+ return LocaleHelper.getCollatorLocales();
}
/**
@@ -342,8 +342,7 @@ public abstract class Collator implements Comparator<Object>, Cloneable
throw (InternalError)new InternalError().initCause(x);
}
}
- // FIXME
- return getInstance(Locale.US);
+ return getInstance(LocaleHelper.getFallbackLocale(loc));
}
/**
diff --git a/libjava/java/text/DateFormatSymbols.h b/libjava/java/text/DateFormatSymbols.h
index 9836ea5..d1f25b3 100644
--- a/libjava/java/text/DateFormatSymbols.h
+++ b/libjava/java/text/DateFormatSymbols.h
@@ -23,6 +23,8 @@ extern "Java"
class java::text::DateFormatSymbols : public ::java::lang::Object
{
+ static JArray< ::java::lang::String * > * getStringArray(::java::util::ResourceBundle *, ::java::lang::String *);
+ JArray< JArray< ::java::lang::String * > * > * getZoneStrings(::java::util::ResourceBundle *, ::java::util::Locale *);
JArray< ::java::lang::String * > * formatsForKey(::java::util::ResourceBundle *, ::java::lang::String *);
public:
DateFormatSymbols(::java::util::Locale *);
diff --git a/libjava/java/text/DateFormatSymbols.java b/libjava/java/text/DateFormatSymbols.java
deleted file mode 100644
index 2ca513e..0000000
--- a/libjava/java/text/DateFormatSymbols.java
+++ /dev/null
@@ -1,597 +0,0 @@
-/* DateFormatSymbols.java -- Format over a range of numbers
- Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package java.text;
-
-import gnu.java.locale.LocaleHelper;
-
-import java.text.spi.DateFormatSymbolsProvider;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import java.util.ServiceLoader;
-import java.util.TimeZone;
-
-import java.util.spi.TimeZoneNameProvider;
-
-/**
- * This class acts as container for locale specific date/time formatting
- * information such as the days of the week and the months of the year.
- * @author Per Bothner (bothner@cygnus.com)
- *
- * @date October 24, 1998.
- */
-/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3.
- * Status: Believed complete and correct.
- */
-public class DateFormatSymbols implements java.io.Serializable, Cloneable
-{
- String[] ampms;
- String[] eras;
- private String localPatternChars;
- String[] months;
- String[] shortMonths;
- String[] shortWeekdays;
- String[] weekdays;
-
- /**
- * The timezone strings supplied by the runtime.
- */
- private String[][] runtimeZoneStrings;
-
- /**
- * Custom timezone strings supplied by {@link #setZoneStrings()}.
- */
- private String[][] zoneStrings;
-
- private static final long serialVersionUID = -5987973545549424702L;
-
- // The order of these prefixes must be the same as in DateFormat
- private static final String[] formatPrefixes =
- {
- "full", "long", "medium", "short"
- };
-
- // These are each arrays with a value for SHORT, MEDIUM, LONG, FULL,
- // and DEFAULT (constants defined in java.text.DateFormat). While
- // not part of the official spec, we need a way to get at locale-specific
- // default formatting patterns. They are declared package scope so
- // as to be easily accessible where needed (DateFormat, SimpleDateFormat).
- transient String[] dateFormats;
- transient String[] timeFormats;
-
- private String[] formatsForKey(ResourceBundle res, String key)
- {
- String[] values = new String [formatPrefixes.length];
- for (int i = 0; i < formatPrefixes.length; i++)
- {
- values[i] = res.getString(formatPrefixes[i]+key);
- }
- return values;
- }
-
- /**
- * This method initializes a new instance of <code>DateFormatSymbols</code>
- * by loading the date format information for the specified locale.
- * This constructor only obtains instances using the runtime's resources;
- * to also include {@link java.text.spi.DateFormatSymbolsProvider} instances,
- * call {@link #getInstance(java.util.Locale)} instead.
- *
- * @param locale The locale for which date formatting symbols should
- * be loaded.
- * @throws MissingResourceException if the resources for the specified
- * locale could not be found or loaded.
- * @see #getInstance(java.util.Locale)
- */
- public DateFormatSymbols (Locale locale)
- throws MissingResourceException
- {
- ResourceBundle res
- = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation", locale,
- ClassLoader.getSystemClassLoader());
-
- ampms = res.getStringArray ("ampms");
- eras = res.getStringArray ("eras");
- localPatternChars = res.getString ("localPatternChars");
- months = res.getStringArray ("months");
- shortMonths = res.getStringArray ("shortMonths");
- shortWeekdays = res.getStringArray ("shortWeekdays");
- weekdays = res.getStringArray ("weekdays");
- zoneStrings = (String[][]) res.getObject ("zoneStrings");
-
- dateFormats = formatsForKey(res, "DateFormat");
- timeFormats = formatsForKey(res, "TimeFormat");
- }
-
- /**
- * This method loads the format symbol information for the default
- * locale. This constructor only obtains instances using the runtime's resources;
- * to also include {@link java.text.spi.DateFormatSymbolsProvider} instances,
- * call {@link #getInstance()} instead.
- *
- * @throws MissingResourceException if the resources for the default
- * locale could not be found or loaded.
- * @see #getInstance()
- */
- public DateFormatSymbols()
- throws MissingResourceException
- {
- this (Locale.getDefault());
- }
-
- /**
- * This method returns the list of strings used for displaying AM or PM.
- * This is a two element <code>String</code> array indexed by
- * <code>Calendar.AM</code> and <code>Calendar.PM</code>
- *
- * @return The list of AM/PM display strings.
- */
- public String[] getAmPmStrings()
- {
- return ampms;
- }
-
- /**
- * This method returns the list of strings used for displaying eras
- * (e.g., "BC" and "AD"). This is a two element <code>String</code>
- * array indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
- *
- * @return The list of era disply strings.
- */
- public String[] getEras()
- {
- return eras;
- }
-
- /**
- * This method returns the pattern character information for this
- * object. This is an 18 character string that contains the characters
- * that are used in creating the date formatting strings in
- * <code>SimpleDateFormat</code>. The following are the character
- * positions in the string and which format character they correspond
- * to (the character in parentheses is the default value in the US English
- * locale):
- * <p>
- * <ul>
- * <li>0 - era (G)</li>
- * <li>1 - year (y)</li>
- * <li>2 - month (M)</li>
- * <li>3 - day of month (d)</li>
- * <li>4 - hour out of 12, from 1-12 (h)</li>
- * <li>5 - hour out of 24, from 0-23 (H)</li>
- * <li>6 - minute (m)</li>
- * <li>7 - second (s)</li>
- * <li>8 - millisecond (S)</li>
- * <li>9 - date of week (E)</li>
- * <li>10 - date of year (D)</li>
- * <li>11 - day of week in month, eg. "4th Thur in Nov" (F)</li>
- * <li>12 - week in year (w)</li>
- * <li>13 - week in month (W)</li>
- * <li>14 - am/pm (a)</li>
- * <li>15 - hour out of 24, from 1-24 (k)</li>
- * <li>16 - hour out of 12, from 0-11 (K)</li>
- * <li>17 - time zone (z)</li>
- * </ul>
- *
- * @return The format patter characters
- */
- public String getLocalPatternChars()
- {
- return localPatternChars;
- }
-
- /**
- * This method returns the list of strings used for displaying month
- * names (e.g., "January" and "February"). This is a thirteen element
- * string array indexed by <code>Calendar.JANUARY</code> through
- * <code>Calendar.UNDECEMBER</code>. Note that there are thirteen
- * elements because some calendars have thriteen months.
- *
- * @return The list of month display strings.
- */
- public String[] getMonths ()
- {
- return months;
- }
-
- /**
- * This method returns the list of strings used for displaying abbreviated
- * month names (e.g., "Jan" and "Feb"). This is a thirteen element
- * <code>String</code> array indexed by <code>Calendar.JANUARY</code>
- * through <code>Calendar.UNDECEMBER</code>. Note that there are thirteen
- * elements because some calendars have thirteen months.
- *
- * @return The list of abbreviated month display strings.
- */
- public String[] getShortMonths ()
- {
- return shortMonths;
- }
-
- /**
- * This method returns the list of strings used for displaying abbreviated
- * weekday names (e.g., "Sun" and "Mon"). This is an eight element
- * <code>String</code> array indexed by <code>Calendar.SUNDAY</code>
- * through <code>Calendar.SATURDAY</code>. Note that the first element
- * of this array is ignored.
- *
- * @return This list of abbreviated weekday display strings.
- */
- public String[] getShortWeekdays ()
- {
- return shortWeekdays;
- }
-
- /**
- * This method returns the list of strings used for displaying weekday
- * names (e.g., "Sunday" and "Monday"). This is an eight element
- * <code>String</code> array indexed by <code>Calendar.SUNDAY</code>
- * through <code>Calendar.SATURDAY</code>. Note that the first element
- * of this array is ignored.
- *
- * @return This list of weekday display strings.
- */
- public String[] getWeekdays ()
- {
- return weekdays;
- }
-
- /**
- * This method returns this list of localized timezone display strings.
- * This is a two dimensional <code>String</code> array where each row in
- * the array contains five values:
- * <P>
- * <ul>
- * <li>0 - The non-localized time zone id string.</li>
- * <li>1 - The long name of the time zone (standard time).</li>
- * <li>2 - The short name of the time zone (standard time).</li>
- * <li>3 - The long name of the time zone (daylight savings time).</li>
- * <li>4 - the short name of the time zone (daylight savings time).</li>
- * </ul>
- *
- * @return The list of time zone display strings.
- */
- public String[] [] getZoneStrings ()
- {
- return zoneStrings;
- }
-
- /**
- * This method sets the list of strings used to display AM/PM values to
- * the specified list.
- * This is a two element <code>String</code> array indexed by
- * <code>Calendar.AM</code> and <code>Calendar.PM</code>
- *
- * @param value The new list of AM/PM display strings.
- */
- public void setAmPmStrings (String[] value)
- {
- ampms = value;
- }
-
- /**
- * This method sets the list of strings used to display time eras to
- * to the specified list.
- * This is a two element <code>String</code>
- * array indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
- *
- * @param labels The new list of era display strings.
- */
- public void setEras (String[] labels)
- {
- eras = labels;
- }
-
- /**
- * This method sets the list of characters used to specific date/time
- * formatting strings.
- * This is an 18 character string that contains the characters
- * that are used in creating the date formatting strings in
- * <code>SimpleDateFormat</code>. The following are the character
- * positions in the string and which format character they correspond
- * to (the character in parentheses is the default value in the US English
- * locale):
- * <p>
- * <ul>
- * <li>0 - era (G)</li>
- * <li>1 - year (y)</li>
- * <li>2 - month (M)</li>
- * <li>3 - day of month (d)</li>
- * <li>4 - hour out of 12, from 1-12 (h)</li>
- * <li>5 - hour out of 24, from 0-23 (H)</li>
- * <li>6 - minute (m)</li>
- * <li>7 - second (s)</li>
- * <li>8 - millisecond (S)</li>
- * <li>9 - date of week (E)</li>
- * <li>10 - date of year (D)</li>
- * <li>11 - day of week in month, eg. "4th Thur in Nov" (F)</li>
- * <li>12 - week in year (w)</li>
- * <li>13 - week in month (W)</li>
- * <li>14 - am/pm (a)</li>
- * <li>15 - hour out of 24, from 1-24 (k)</li>
- * <li>16 - hour out of 12, from 0-11 (K)</li>
- * <li>17 - time zone (z)</li>
- * </ul>
- *
- * @param chars The new format pattern characters
- */
- public void setLocalPatternChars (String chars)
- {
- localPatternChars = chars;
- }
-
- /**
- * This method sets the list of strings used to display month names.
- * This is a thirteen element
- * string array indexed by <code>Calendar.JANUARY</code> through
- * <code>Calendar.UNDECEMBER</code>. Note that there are thirteen
- * elements because some calendars have thriteen months.
- *
- * @param labels The list of month display strings.
- */
- public void setMonths (String[] labels)
- {
- months = labels;
- }
-
- /**
- * This method sets the list of strings used to display abbreviated month
- * names.
- * This is a thirteen element
- * <code>String</code> array indexed by <code>Calendar.JANUARY</code>
- * through <code>Calendar.UNDECEMBER</code>. Note that there are thirteen
- * elements because some calendars have thirteen months.
- *
- * @param labels The new list of abbreviated month display strings.
- */
- public void setShortMonths (String[] labels)
- {
- shortMonths = labels;
- }
-
- /**
- * This method sets the list of strings used to display abbreviated
- * weekday names.
- * This is an eight element
- * <code>String</code> array indexed by <code>Calendar.SUNDAY</code>
- * through <code>Calendar.SATURDAY</code>. Note that the first element
- * of this array is ignored.
- *
- * @param labels This list of abbreviated weekday display strings.
- */
- public void setShortWeekdays (String[] labels)
- {
- shortWeekdays = labels;
- }
-
- /**
- * This method sets the list of strings used to display weekday names.
- * This is an eight element
- * <code>String</code> array indexed by <code>Calendar.SUNDAY</code>
- * through <code>Calendar.SATURDAY</code>. Note that the first element
- * of this array is ignored.
- *
- * @param labels This list of weekday display strings.
- */
- public void setWeekdays (String[] labels)
- {
- weekdays = labels;
- }
-
- /**
- * This method sets the list of display strings for time zones.
- * This is a two dimensional <code>String</code> array where each row in
- * the array contains five values:
- * <P>
- * <ul>
- * <li>0 - The non-localized time zone id string.</li>
- * <li>1 - The long name of the time zone (standard time).</li>
- * <li>2 - The short name of the time zone (standard time).</li>
- * <li>3 - The long name of the time zone (daylight savings time).</li>
- * <li>4 - the short name of the time zone (daylight savings time).</li>
- * </ul>
- *
- * @params zones The list of time zone display strings.
- */
- public void setZoneStrings (String[][] zones)
- {
- zoneStrings = zones;
- }
-
- /* Does a "deep" equality test - recurses into arrays. */
- private static boolean equals (Object x, Object y)
- {
- if (x == y)
- return true;
- if (x == null || y == null)
- return false;
- if (! (x instanceof Object[]) || ! (y instanceof Object[]))
- return x.equals(y);
- Object[] xa = (Object[]) x;
- Object[] ya = (Object[]) y;
- if (xa.length != ya.length)
- return false;
- for (int i = xa.length; --i >= 0; )
- {
- if (! equals(xa[i], ya[i]))
- return false;
- }
- return true;
- }
-
- private static int hashCode (Object x)
- {
- if (x == null)
- return 0;
- if (! (x instanceof Object[]))
- return x.hashCode();
- Object[] xa = (Object[]) x;
- int hash = 0;
- for (int i = 0; i < xa.length; i++)
- hash = 37 * hashCode(xa[i]);
- return hash;
- }
-
- /**
- * This method tests a specified object for equality against this object.
- * This will be true if and only if the specified object:
- * <p>
- * <ul>
- * <li> Is not <code>null</code>.</li>
- * <li> Is an instance of <code>DateFormatSymbols</code>.</li>
- * <li> Contains identical formatting symbols to this object.</li>
- * </ul>
- *
- * @param obj The <code>Object</code> to test for equality against.
- *
- * @return <code>true</code> if the specified object is equal to this one,
- * <code>false</code> otherwise.
- */
- public boolean equals (Object obj)
- {
- if (! (obj instanceof DateFormatSymbols))
- return false;
- DateFormatSymbols other = (DateFormatSymbols) obj;
- return (equals(ampms, other.ampms)
- && equals(eras, other.eras)
- && equals(localPatternChars, other.localPatternChars)
- && equals(months, other.months)
- && equals(shortMonths, other.shortMonths)
- && equals(shortWeekdays, other.shortWeekdays)
- && equals(weekdays, other.weekdays)
- && equals(zoneStrings, other.zoneStrings));
- }
-
- /**
- * Returns a new copy of this object.
- *
- * @return A copy of this object
- */
- public Object clone ()
- {
- try
- {
- return super.clone ();
- }
- catch (CloneNotSupportedException e)
- {
- return null;
- }
- }
-
- /**
- * This method returns a hash value for this object.
- *
- * @return A hash value for this object.
- */
- public int hashCode ()
- {
- return (hashCode(ampms)
- ^ hashCode(eras)
- ^ hashCode(localPatternChars)
- ^ hashCode(months)
- ^ hashCode(shortMonths)
- ^ hashCode(shortWeekdays)
- ^ hashCode(weekdays)
- ^ hashCode(zoneStrings));
- }
-
- /**
- * Returns a {@link DateFormatSymbols} instance for the
- * default locale obtained from either the runtime itself
- * or one of the installed
- * {@link java.text.spi.DateFormatSymbolsProvider} instances.
- * This is equivalent to calling
- * <code>getInstance(Locale.getDefault())</code>.
- *
- * @return a {@link DateFormatSymbols} instance for the default
- * locale.
- * @since 1.6
- */
- public static final DateFormatSymbols getInstance()
- {
- return getInstance(Locale.getDefault());
- }
-
- /**
- * Returns a {@link DateFormatSymbols} instance for the
- * specified locale obtained from either the runtime itself
- * or one of the installed
- * {@link java.text.spi.DateFormatSymbolsProvider} instances.
- *
- * @param locale the locale for which an instance should be
- * returned.
- * @return a {@link DateFormatSymbols} instance for the specified
- * locale.
- * @throws NullPointerException if <code>locale</code> is
- * <code>null</code>.
- * @since 1.6
- */
- public static final DateFormatSymbols getInstance(Locale locale)
- {
- try
- {
- DateFormatSymbols syms = new DateFormatSymbols(locale);
- return syms;
- }
- catch (MissingResourceException e)
- {
- /* This means runtime support for the locale
- * is not available, so we check providers. */
- }
- for (DateFormatSymbolsProvider p :
- ServiceLoader.load(DateFormatSymbolsProvider.class))
- {
- for (Locale loc : p.getAvailableLocales())
- {
- if (loc.equals(locale))
- {
- DateFormatSymbols syms = p.getInstance(locale);
- if (syms != null)
- return syms;
- break;
- }
- }
- }
- return getInstance(LocaleHelper.getFallbackLocale(locale));
- }
-
-}
diff --git a/libjava/java/text/DecimalFormatSymbols.h b/libjava/java/text/DecimalFormatSymbols.h
index 8967572..8d29377 100644
--- a/libjava/java/text/DecimalFormatSymbols.h
+++ b/libjava/java/text/DecimalFormatSymbols.h
@@ -22,49 +22,49 @@ class java::text::DecimalFormatSymbols : public ::java::lang::Object
{
public:
- ::java::lang::Object * clone();
+ virtual ::java::lang::Object * clone();
DecimalFormatSymbols();
private:
::java::lang::String * safeGetString(::java::util::ResourceBundle *, ::java::lang::String *, ::java::lang::String *);
jchar safeGetChar(::java::util::ResourceBundle *, ::java::lang::String *, jchar);
public:
DecimalFormatSymbols(::java::util::Locale *);
- jboolean equals(::java::lang::Object *);
- ::java::util::Currency * getCurrency();
- ::java::lang::String * getCurrencySymbol();
- jchar getDecimalSeparator();
- jchar getDigit();
+ virtual jboolean equals(::java::lang::Object *);
+ virtual ::java::util::Currency * getCurrency();
+ virtual ::java::lang::String * getCurrencySymbol();
+ virtual jchar getDecimalSeparator();
+ virtual jchar getDigit();
public: // actually package-private
- jchar getExponential();
+ virtual jchar getExponential();
public:
- jchar getGroupingSeparator();
- ::java::lang::String * getInfinity();
- ::java::lang::String * getInternationalCurrencySymbol();
- jchar getMinusSign();
- jchar getMonetaryDecimalSeparator();
- ::java::lang::String * getNaN();
- jchar getPatternSeparator();
- jchar getPercent();
- jchar getPerMill();
- jchar getZeroDigit();
- jint hashCode();
- void setCurrency(::java::util::Currency *);
- void setCurrencySymbol(::java::lang::String *);
- void setDecimalSeparator(jchar);
- void setDigit(jchar);
+ virtual jchar getGroupingSeparator();
+ virtual ::java::lang::String * getInfinity();
+ virtual ::java::lang::String * getInternationalCurrencySymbol();
+ virtual jchar getMinusSign();
+ virtual jchar getMonetaryDecimalSeparator();
+ virtual ::java::lang::String * getNaN();
+ virtual jchar getPatternSeparator();
+ virtual jchar getPercent();
+ virtual jchar getPerMill();
+ virtual jchar getZeroDigit();
+ virtual jint hashCode();
+ virtual void setCurrency(::java::util::Currency *);
+ virtual void setCurrencySymbol(::java::lang::String *);
+ virtual void setDecimalSeparator(jchar);
+ virtual void setDigit(jchar);
public: // actually package-private
- void setExponential(jchar);
+ virtual void setExponential(jchar);
public:
- void setGroupingSeparator(jchar);
- void setInfinity(::java::lang::String *);
- void setInternationalCurrencySymbol(::java::lang::String *);
- void setMinusSign(jchar);
- void setMonetaryDecimalSeparator(jchar);
- void setNaN(::java::lang::String *);
- void setPatternSeparator(jchar);
- void setPercent(jchar);
- void setPerMill(jchar);
- void setZeroDigit(jchar);
+ virtual void setGroupingSeparator(jchar);
+ virtual void setInfinity(::java::lang::String *);
+ virtual void setInternationalCurrencySymbol(::java::lang::String *);
+ virtual void setMinusSign(jchar);
+ virtual void setMonetaryDecimalSeparator(jchar);
+ virtual void setNaN(::java::lang::String *);
+ virtual void setPatternSeparator(jchar);
+ virtual void setPercent(jchar);
+ virtual void setPerMill(jchar);
+ virtual void setZeroDigit(jchar);
private:
void readObject(::java::io::ObjectInputStream *);
public:
diff --git a/libjava/java/text/DecimalFormatSymbols.java b/libjava/java/text/DecimalFormatSymbols.java
deleted file mode 100644
index b72f144..0000000
--- a/libjava/java/text/DecimalFormatSymbols.java
+++ /dev/null
@@ -1,742 +0,0 @@
-/* DecimalFormatSymbols.java -- Format symbols used by DecimalFormat
- Copyright (C) 1999, 2000, 2001, 2004, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package java.text;
-
-import gnu.java.locale.LocaleHelper;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.Serializable;
-
-import java.text.spi.DecimalFormatSymbolsProvider;
-
-import java.util.Currency;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import java.util.ServiceLoader;
-
-/**
- * This class is a container for the symbols used by
- * <code>DecimalFormat</code> to format numbers and currency. These are
- * normally handled automatically, but an application can override
- * values as desired using this class.
- *
- * @author Tom Tromey (tromey@cygnus.com)
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @date February 24, 1999
- */
-/* Written using "Java Class Libraries", 2nd edition, plus online
- * API docs for JDK 1.2 from http://www.javasoft.com.
- * Status: Believed complete and correct to 1.2.
- */
-public final class DecimalFormatSymbols implements Cloneable, Serializable
-{
- public Object clone ()
- {
- try
- {
- return super.clone ();
- }
- catch(CloneNotSupportedException e)
- {
- return null;
- }
- }
-
- /**
- * This method initializes a new instance of
- * <code>DecimalFormatSymbols</code> for the default locale.
- * This constructor only obtains instances using the runtime's resources;
- * to also include {@link java.text.spi.DateFormatSymbolsProvider} instances,
- * call {@link #getInstance()} instead.
- *
- * @see #getInstance()
- */
- public DecimalFormatSymbols ()
- {
- this (Locale.getDefault());
- }
-
- private String safeGetString(ResourceBundle bundle,
- String name, String def)
- {
- if (bundle != null)
- {
- try
- {
- return bundle.getString(name);
- }
- catch (MissingResourceException x)
- {
- }
- }
- return def;
- }
-
- private char safeGetChar(ResourceBundle bundle,
- String name, char def)
- {
- String r = null;
- if (bundle != null)
- {
- try
- {
- r = bundle.getString(name);
- }
- catch (MissingResourceException x)
- {
- }
- }
- if (r == null || r.length() < 1)
- return def;
- return r.charAt(0);
- }
-
- /**
- * This method initializes a new instance of
- * <code>DecimalFormatSymbols</code> for the specified locale.
- * <strong>Note</strong>: if the locale does not have an associated
- * <code>Currency</code> instance, the currency symbol and
- * international currency symbol will be set to the strings "?"
- * and "XXX" respectively. This generally happens with language
- * locales (those with no specified country), such as
- * <code>Locale.ENGLISH</code>. This constructor only obtains
- * instances using the runtime's resources; to also include
- * {@link java.text.spi.DecimalFormatSymbolsProvider} instances,
- * call {@link #getInstance(java.util.Locale)} instead.
- *
- * @param loc The local to load symbols for.
- * @throws NullPointerException if the locale is null.
- * @see #getInstance(java.util.Locale)
- */
- public DecimalFormatSymbols (Locale loc)
- {
- ResourceBundle res;
- try
- {
- res = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation",
- loc, ClassLoader.getSystemClassLoader());
- }
- catch (MissingResourceException x)
- {
- res = null;
- }
- currency = Currency.getInstance("XXX");
- currencySymbol = "?";
- intlCurrencySymbol = "XXX";
- try
- {
- Currency localeCurrency = Currency.getInstance(loc);
- if (localeCurrency != null)
- {
- setCurrency(localeCurrency);
- }
- }
- catch(IllegalArgumentException exception)
- {
- /* Locale has an invalid currency */
- }
- decimalSeparator = safeGetChar (res, "decimalSeparator", '.');
- digit = safeGetChar (res, "digit", '#');
- exponential = safeGetChar (res, "exponential", 'E');
- groupingSeparator = safeGetChar (res, "groupingSeparator", ',');
- infinity = safeGetString (res, "infinity", "\u221e");
- try
- {
- monetarySeparator = safeGetChar (res, "monetarySeparator", '.');
- }
- catch (MissingResourceException x)
- {
- monetarySeparator = decimalSeparator;
- }
- minusSign = safeGetChar (res, "minusSign", '-');
- NaN = safeGetString (res, "NaN", "\ufffd");
- patternSeparator = safeGetChar (res, "patternSeparator", ';');
- percent = safeGetChar (res, "percent", '%');
- perMill = safeGetChar (res, "perMill", '\u2030');
- zeroDigit = safeGetChar (res, "zeroDigit", '0');
- locale = loc;
- }
-
- /**
- * This method this this object for equality against the specified object.
- * This will be true if and only if the following criteria are met with
- * regard to the specified object:
- * <p>
- * <ul>
- * <li>It is not <code>null</code>.</li>
- * <li>It is an instance of <code>DecimalFormatSymbols</code>.</li>
- * <li>All of its symbols are identical to the symbols in this object.</li>
- * </ul>
- *
- * @return <code>true</code> if the specified object is equal to this
- * object, <code>false</code> otherwise.
- */
- public boolean equals (Object obj)
- {
- if (! (obj instanceof DecimalFormatSymbols))
- return false;
- DecimalFormatSymbols dfs = (DecimalFormatSymbols) obj;
- return (currencySymbol.equals(dfs.currencySymbol)
- && decimalSeparator == dfs.decimalSeparator
- && digit == dfs.digit
- && exponential == dfs.exponential
- && groupingSeparator == dfs.groupingSeparator
- && infinity.equals(dfs.infinity)
- && intlCurrencySymbol.equals(dfs.intlCurrencySymbol)
- && minusSign == dfs.minusSign
- && monetarySeparator == dfs.monetarySeparator
- && NaN.equals(dfs.NaN)
- && patternSeparator == dfs.patternSeparator
- && percent == dfs.percent
- && perMill == dfs.perMill
- && zeroDigit == dfs.zeroDigit);
- }
-
- /**
- * Returns the currency corresponding to the currency symbol stored
- * in the instance of <code>DecimalFormatSymbols</code>.
- *
- * @return An instance of <code>Currency</code> which matches
- * the currency used, or null if there is no corresponding
- * instance.
- */
- public Currency getCurrency ()
- {
- return currency;
- }
-
- /**
- * This method returns the currency symbol in local format. For example,
- * "$" for Canadian dollars.
- *
- * @return The currency symbol in local format.
- */
- public String getCurrencySymbol ()
- {
- return currencySymbol;
- }
-
- /**
- * This method returns the character used as the decimal point.
- *
- * @return The character used as the decimal point.
- */
- public char getDecimalSeparator ()
- {
- return decimalSeparator;
- }
-
- /**
- * This method returns the character used to represent a digit in a
- * format pattern string.
- *
- * @return The character used to represent a digit in a format
- * pattern string.
- */
- public char getDigit ()
- {
- return digit;
- }
-
- // This is our own extension.
- char getExponential ()
- {
- return exponential;
- }
-
- /**
- * This method sets the character used to separate groups of digits. For
- * example, the United States uses a comma (,) to separate thousands in
- * a number.
- *
- * @return The character used to separate groups of digits.
- */
- public char getGroupingSeparator ()
- {
- return groupingSeparator;
- }
-
- /**
- * This method returns the character used to represent infinity.
- *
- * @return The character used to represent infinity.
- */
- public String getInfinity ()
- {
- return infinity;
- }
-
- /**
- * This method returns the currency symbol in international format. For
- * example, "C$" for Canadian dollars.
- *
- * @return The currency symbol in international format.
- */
- public String getInternationalCurrencySymbol ()
- {
- return intlCurrencySymbol;
- }
-
- /**
- * This method returns the character used to represent the minus sign.
- *
- * @return The character used to represent the minus sign.
- */
- public char getMinusSign ()
- {
- return minusSign;
- }
-
- /**
- * This method returns the character used to represent the decimal
- * point for currency values.
- *
- * @return The decimal point character used in currency values.
- */
- public char getMonetaryDecimalSeparator ()
- {
- return monetarySeparator;
- }
-
- /**
- * This method returns the string used to represent the NaN (not a number)
- * value.
- *
- * @return The string used to represent NaN
- */
- public String getNaN ()
- {
- return NaN;
- }
-
- /**
- * This method returns the character used to separate positive and negative
- * subpatterns in a format pattern.
- *
- * @return The character used to separate positive and negative subpatterns
- * in a format pattern.
- */
- public char getPatternSeparator ()
- {
- return patternSeparator;
- }
-
- /**
- * This method returns the character used as the percent sign.
- *
- * @return The character used as the percent sign.
- */
- public char getPercent ()
- {
- return percent;
- }
-
- /**
- * This method returns the character used as the per mille character.
- *
- * @return The per mille character.
- */
- public char getPerMill ()
- {
- return perMill;
- }
-
- /**
- * This method returns the character used to represent the digit zero.
- *
- * @return The character used to represent the digit zero.
- */
- public char getZeroDigit ()
- {
- return zeroDigit;
- }
-
- /**
- * This method returns a hash value for this object.
- *
- * @return A hash value for this object.
- */
- public int hashCode ()
- {
- // Compute based on zero digit, grouping separator, and decimal
- // separator -- JCL book. This probably isn't a very good hash
- // code.
- return zeroDigit << 16 + groupingSeparator << 8 + decimalSeparator;
- }
-
- /**
- * This method sets the currency symbol and ISO 4217 currency
- * code to the values obtained from the supplied currency.
- *
- * @param currency the currency from which to obtain the values.
- * @throws NullPointerException if the currency is null.
- */
- public void setCurrency (Currency currency)
- {
- setCurrencySymbol (currency.getSymbol());
- this.currency = currency;
- }
-
- /**
- * This method sets the currency symbol to the specified value.
- *
- * @param currency The new currency symbol
- */
- public void setCurrencySymbol (String currency)
- {
- currencySymbol = currency;
- }
-
- /**
- * This method sets the decimal point character to the specified value.
- *
- * @param decimalSep The new decimal point character
- */
- public void setDecimalSeparator (char decimalSep)
- {
- decimalSeparator = decimalSep;
- }
-
- /**
- * This method sets the character used to represents a digit in a format
- * string to the specified value.
- *
- * @param digit The character used to represent a digit in a format pattern.
- */
- public void setDigit (char digit)
- {
- this.digit = digit;
- }
-
- // This is our own extension.
- void setExponential (char exp)
- {
- exponential = exp;
- }
-
- /**
- * This method sets the character used to separate groups of digits.
- *
- * @param groupSep The character used to separate groups of digits.
- */
- public void setGroupingSeparator (char groupSep)
- {
- groupingSeparator = groupSep;
- }
-
- /**
- * This method sets the string used to represents infinity.
- *
- * @param infinity The string used to represent infinity.
- */
- public void setInfinity (String infinity)
- {
- this.infinity = infinity;
- }
-
- /**
- * This method sets the international currency symbol to the
- * specified value. If a valid <code>Currency</code> instance
- * exists for the international currency code, then this is
- * used for the currency attribute, and the currency symbol
- * is set to the corresponding value from this instance.
- * Otherwise, the currency attribute is set to null and the
- * symbol is left unmodified.
- *
- * @param currencyCode The new international currency symbol.
- */
- public void setInternationalCurrencySymbol (String currencyCode)
- {
- intlCurrencySymbol = currencyCode;
- try
- {
- currency = Currency.getInstance(currencyCode);
- }
- catch (IllegalArgumentException exception)
- {
- currency = null;
- }
- if (currency != null)
- {
- setCurrencySymbol(currency.getSymbol(locale));
- }
- }
-
- /**
- * This method sets the character used to represent the minus sign.
- *
- * @param minusSign The character used to represent the minus sign.
- */
- public void setMinusSign (char minusSign)
- {
- this.minusSign = minusSign;
- }
-
- /**
- * This method sets the character used for the decimal point in currency
- * values.
- *
- * @param decimalSep The decimal point character used in currency values.
- */
- public void setMonetaryDecimalSeparator (char decimalSep)
- {
- monetarySeparator = decimalSep;
- }
-
- /**
- * This method sets the string used to represent the NaN (not a
- * number) value.
- *
- * @param nan The string used to represent NaN
- */
- public void setNaN (String nan)
- {
- NaN = nan;
- }
-
- /**
- * This method sets the character used to separate positive and negative
- * subpatterns in a format pattern.
- *
- * @param patternSep The character used to separate positive and
- * negative subpatterns in a format pattern.
- */
- public void setPatternSeparator (char patternSep)
- {
- patternSeparator = patternSep;
- }
-
- /**
- * This method sets the character used as the percent sign.
- *
- * @param percent The character used as the percent sign.
- */
- public void setPercent (char percent)
- {
- this.percent = percent;
- }
-
- /**
- * This method sets the character used as the per mille character.
- *
- * @param perMill The per mille character.
- */
- public void setPerMill (char perMill)
- {
- this.perMill = perMill;
- }
-
- /**
- * This method sets the character used to represent the digit zero.
- *
- * @param zeroDigit The character used to represent the digit zero.
- */
- public void setZeroDigit (char zeroDigit)
- {
- this.zeroDigit = zeroDigit;
- }
-
- /**
- * @serial A string used for the local currency
- */
- private String currencySymbol;
- /**
- * @serial The <code>char</code> used to separate decimals in a number.
- */
- private char decimalSeparator;
- /**
- * @serial This is the <code>char</code> used to represent a digit in
- * a format specification.
- */
- private char digit;
- /**
- * @serial This is the <code>char</code> used to represent the exponent
- * separator in exponential notation.
- */
- private char exponential;
- /**
- * @serial This separates groups of thousands in numbers.
- */
- private char groupingSeparator;
- /**
- * @serial This string represents infinity.
- */
- private String infinity;
- /**
- * @serial This string represents the local currency in an international
- * context, eg, "C$" for Canadian dollars.
- */
- private String intlCurrencySymbol;
- /**
- * @serial This is the character used to represent the minus sign.
- */
- private char minusSign;
- /**
- * @serial This character is used to separate decimals when formatting
- * currency values.
- */
- private char monetarySeparator;
- /**
- * @serial This string is used the represent the Java NaN value for
- * "not a number".
- */
- private String NaN;
- /**
- * @serial This is the character used to separate positive and negative
- * subpatterns in a format pattern.
- */
- private char patternSeparator;
- /**
- * @serial This is the percent symbols
- */
- private char percent;
- /**
- * @serial This character is used for the mille percent sign.
- */
- private char perMill;
- /**
- * @serial This value represents the type of object being de-serialized.
- * 0 indicates a pre-Java 1.1.6 version, 1 indicates 1.1.6 or later.
- * 0 indicates a pre-Java 1.1.6 version, 1 indicates 1.1.6 or later,
- * 2 indicates 1.4 or later
- */
- private int serialVersionOnStream = 2;
- /**
- * @serial This is the character used to represent 0.
- */
- private char zeroDigit;
-
- /**
- * @serial The locale of these currency symbols.
- */
- private Locale locale;
-
- /**
- * The currency used for the symbols in this instance.
- * This is stored temporarily for efficiency reasons,
- * as well as to ensure that the correct instance
- * is restored from the currency code.
- *
- * @serial Ignored.
- */
- private transient Currency currency;
-
- private static final long serialVersionUID = 5772796243397350300L;
-
- private void readObject(ObjectInputStream stream)
- throws IOException, ClassNotFoundException
- {
- stream.defaultReadObject();
- if (serialVersionOnStream < 1)
- {
- monetarySeparator = decimalSeparator;
- exponential = 'E';
- }
- if (serialVersionOnStream < 2)
- locale = Locale.getDefault();
-
- serialVersionOnStream = 2;
- }
-
- /**
- * Returns a {@link DecimalFormatSymbols} instance for the
- * default locale obtained from either the runtime itself
- * or one of the installed
- * {@link java.text.spi.DecimalFormatSymbolsProvider} instances.
- * This is equivalent to calling
- * <code>getInstance(Locale.getDefault())</code>.
- *
- * @return a {@link DecimalFormatSymbols} instance for the default
- * locale.
- * @since 1.6
- */
- public static final DecimalFormatSymbols getInstance()
- {
- return getInstance(Locale.getDefault());
- }
-
- /**
- * Returns a {@link DecimalFormatSymbols} instance for the
- * specified locale obtained from either the runtime itself
- * or one of the installed
- * {@link java.text.spi.DecimalFormatSymbolsProvider} instances.
- *
- * @param locale the locale for which an instance should be
- * returned.
- * @return a {@link DecimalFormatSymbols} instance for the specified
- * locale.
- * @throws NullPointerException if <code>locale</code> is
- * <code>null</code>.
- * @since 1.6
- */
- public static final DecimalFormatSymbols getInstance(Locale locale)
- {
- try
- {
- if (!locale.equals(Locale.ROOT))
- ResourceBundle.getBundle("gnu.java.locale.LocaleInformation",
- locale,
- ClassLoader.getSystemClassLoader());
- return new DecimalFormatSymbols(locale);
- }
- catch (MissingResourceException x)
- {
- /* This means runtime support for the locale
- * is not available, so we check providers. */
- }
- for (DecimalFormatSymbolsProvider p :
- ServiceLoader.load(DecimalFormatSymbolsProvider.class))
- {
- for (Locale loc : p.getAvailableLocales())
- {
- if (loc.equals(locale))
- {
- DecimalFormatSymbols syms = p.getInstance(locale);
- if (syms != null)
- return syms;
- break;
- }
- }
- }
- return getInstance(LocaleHelper.getFallbackLocale(locale));
- }
-
-}