mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			331 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			331 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Java
		
	
	
	
// DecimalFormatSymbols.java - Symbols used to format numbers.
 | 
						|
 | 
						|
/* Copyright (C) 1999, 2000  Free Software Foundation
 | 
						|
 | 
						|
   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.text;
 | 
						|
 | 
						|
import java.io.Serializable;
 | 
						|
import java.util.Locale;
 | 
						|
import java.util.MissingResourceException;
 | 
						|
import java.util.ResourceBundle;
 | 
						|
import java.io.ObjectInputStream;
 | 
						|
import java.io.IOException;
 | 
						|
 | 
						|
/**
 | 
						|
 * @author Tom Tromey <tromey@cygnus.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 ()
 | 
						|
    {
 | 
						|
      return new DecimalFormatSymbols (this);
 | 
						|
    }
 | 
						|
 | 
						|
  private DecimalFormatSymbols (DecimalFormatSymbols orig)
 | 
						|
    {
 | 
						|
      this.currencySymbol = orig.currencySymbol;
 | 
						|
      this.decimalSeparator = orig.decimalSeparator;
 | 
						|
      this.digit = orig.digit;
 | 
						|
      this.exponential = orig.exponential;
 | 
						|
      this.groupingSeparator = orig.groupingSeparator;
 | 
						|
      this.infinity = orig.infinity;
 | 
						|
      this.intlCurrencySymbol = orig.intlCurrencySymbol;
 | 
						|
      this.monetarySeparator = orig.monetarySeparator;
 | 
						|
      this.minusSign = orig.minusSign;
 | 
						|
      this.NaN = orig.NaN;
 | 
						|
      this.patternSeparator = orig.patternSeparator;
 | 
						|
      this.percent = orig.percent;
 | 
						|
      this.perMill = orig.perMill;
 | 
						|
      this.zeroDigit = orig.zeroDigit;
 | 
						|
    }
 | 
						|
 | 
						|
  public DecimalFormatSymbols ()
 | 
						|
    {
 | 
						|
      this (Locale.getDefault());
 | 
						|
    }
 | 
						|
 | 
						|
  private final String safeGetString (ResourceBundle bundle,
 | 
						|
				      String name, String def)
 | 
						|
    {
 | 
						|
      if (bundle != null)
 | 
						|
	{
 | 
						|
	  try
 | 
						|
	    {
 | 
						|
	      return bundle.getString(name);
 | 
						|
	    }
 | 
						|
	  catch (MissingResourceException x)
 | 
						|
	    {
 | 
						|
	    }
 | 
						|
	}
 | 
						|
      return def;
 | 
						|
    }
 | 
						|
 | 
						|
  private final 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);
 | 
						|
    }
 | 
						|
 | 
						|
  public DecimalFormatSymbols (Locale loc)
 | 
						|
    {
 | 
						|
      ResourceBundle res;
 | 
						|
      try
 | 
						|
	{
 | 
						|
	  res = ResourceBundle.getBundle("gnu.gcj.text.LocaleData", loc);
 | 
						|
	}
 | 
						|
      catch (MissingResourceException x)
 | 
						|
	{
 | 
						|
	  res = null;
 | 
						|
	}
 | 
						|
      currencySymbol = safeGetString (res, "currencySymbol", "$");
 | 
						|
      decimalSeparator = safeGetChar (res, "decimalSeparator", '.');
 | 
						|
      digit = safeGetChar (res, "digit", '#');
 | 
						|
      exponential = safeGetChar (res, "exponential", 'E');
 | 
						|
      groupingSeparator = safeGetChar (res, "groupingSeparator", ',');
 | 
						|
      infinity = safeGetString (res, "infinity", "\u221e");
 | 
						|
      // FIXME: default?
 | 
						|
      intlCurrencySymbol = safeGetString (res, "intlCurrencySymbol", "$");
 | 
						|
      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');
 | 
						|
    }
 | 
						|
 | 
						|
  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);
 | 
						|
    }
 | 
						|
 | 
						|
  public String getCurrencySymbol ()
 | 
						|
    {
 | 
						|
      return currencySymbol;
 | 
						|
    }
 | 
						|
 | 
						|
  public char getDecimalSeparator ()
 | 
						|
    {
 | 
						|
      return decimalSeparator;
 | 
						|
    }
 | 
						|
 | 
						|
  public char getDigit ()
 | 
						|
    {
 | 
						|
      return digit;
 | 
						|
    }
 | 
						|
 | 
						|
  // This is our own extension.
 | 
						|
  char getExponential ()
 | 
						|
    {
 | 
						|
      return exponential;
 | 
						|
    }
 | 
						|
 | 
						|
  public char getGroupingSeparator ()
 | 
						|
    {
 | 
						|
      return groupingSeparator;
 | 
						|
    }
 | 
						|
 | 
						|
  public String getInfinity ()
 | 
						|
    {
 | 
						|
      return infinity;
 | 
						|
    }
 | 
						|
 | 
						|
  public String getInternationalCurrencySymbol ()
 | 
						|
    {
 | 
						|
      return intlCurrencySymbol;
 | 
						|
    }
 | 
						|
 | 
						|
  public char getMinusSign ()
 | 
						|
    {
 | 
						|
      return minusSign;
 | 
						|
    }
 | 
						|
 | 
						|
  public char getMonetaryDecimalSeparator ()
 | 
						|
    {
 | 
						|
      return monetarySeparator;
 | 
						|
    }
 | 
						|
 | 
						|
  public String getNaN ()
 | 
						|
    {
 | 
						|
      return NaN;
 | 
						|
    }
 | 
						|
 | 
						|
  public char getPatternSeparator ()
 | 
						|
    {
 | 
						|
      return patternSeparator;
 | 
						|
    }
 | 
						|
 | 
						|
  public char getPercent ()
 | 
						|
    {
 | 
						|
      return percent;
 | 
						|
    }
 | 
						|
 | 
						|
  public char getPerMill ()
 | 
						|
    {
 | 
						|
      return perMill;
 | 
						|
    }
 | 
						|
 | 
						|
  public char getZeroDigit ()
 | 
						|
    {
 | 
						|
      return zeroDigit;
 | 
						|
    }
 | 
						|
 | 
						|
  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;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setCurrencySymbol (String currency)
 | 
						|
    {
 | 
						|
      currencySymbol = currency;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setDecimalSeparator (char decimalSep)
 | 
						|
    {
 | 
						|
      decimalSeparator = decimalSep;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setDigit (char digit)
 | 
						|
    {
 | 
						|
      this.digit = digit;
 | 
						|
    }
 | 
						|
 | 
						|
  // This is our own extension.
 | 
						|
  void setExponential (char exp)
 | 
						|
    {
 | 
						|
      exponential = exp;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setGroupingSeparator (char groupSep)
 | 
						|
    {
 | 
						|
      groupingSeparator = groupSep;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setInfinity (String infinity)
 | 
						|
    {
 | 
						|
      this.infinity = infinity;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setInternationalCurrencySymbol (String currency)
 | 
						|
    {
 | 
						|
      intlCurrencySymbol = currency;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setMinusSign (char minusSign)
 | 
						|
    {
 | 
						|
      this.minusSign = minusSign;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setMonetaryDecimalSeparator (char decimalSep)
 | 
						|
    {
 | 
						|
      monetarySeparator = decimalSep;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setNaN (String nan)
 | 
						|
    {
 | 
						|
      NaN = nan;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setPatternSeparator (char patternSep)
 | 
						|
    {
 | 
						|
      patternSeparator = patternSep;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setPercent (char percent)
 | 
						|
    {
 | 
						|
      this.percent = percent;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setPerMill (char perMill)
 | 
						|
    {
 | 
						|
      this.perMill = perMill;
 | 
						|
    }
 | 
						|
 | 
						|
  public void setZeroDigit (char zeroDigit)
 | 
						|
    {
 | 
						|
      this.zeroDigit = zeroDigit;
 | 
						|
    }
 | 
						|
 | 
						|
  // The names of the instance variables are fixed by the
 | 
						|
  // serialization spec.
 | 
						|
  private String currencySymbol;
 | 
						|
  private char decimalSeparator;
 | 
						|
  private char digit;
 | 
						|
  private char exponential;
 | 
						|
  private char groupingSeparator;
 | 
						|
  private String infinity;
 | 
						|
  private String intlCurrencySymbol;
 | 
						|
  private char minusSign;
 | 
						|
  private char monetarySeparator;
 | 
						|
  private String NaN;
 | 
						|
  private char patternSeparator;
 | 
						|
  private char percent;
 | 
						|
  private char perMill;
 | 
						|
  private int serialVersionOnStream = 1;
 | 
						|
  private char zeroDigit;
 | 
						|
  private static final long serialVersionUID = 5772796243397350300L;
 | 
						|
 | 
						|
  private void readObject(ObjectInputStream stream)
 | 
						|
    throws IOException, ClassNotFoundException
 | 
						|
  {
 | 
						|
    stream.defaultReadObject();
 | 
						|
    if (serialVersionOnStream < 1)
 | 
						|
      {
 | 
						|
        monetarySeparator = decimalSeparator;
 | 
						|
	exponential = 'E';
 | 
						|
	serialVersionOnStream = 1;
 | 
						|
      }
 | 
						|
  }
 | 
						|
}
 |