home *** CD-ROM | disk | FTP | other *** search
- package java.text;
-
- public class ChoiceFormat extends NumberFormat {
- private double[] choiceLimits;
- private String[] choiceFormats;
- static final long SIGN = Long.MIN_VALUE;
- static final long EXPONENT = 9218868437227405312L;
- static final long POSITIVEINFINITY = 9218868437227405312L;
-
- public void applyPattern(String var1) {
- StringBuffer[] var2 = new StringBuffer[2];
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- var2[var3] = new StringBuffer();
- }
-
- double[] var4 = new double[30];
- String[] var5 = new String[30];
- int var6 = 0;
- byte var7 = 0;
- double var8 = (double)0.0F;
- double var10 = Double.NaN;
-
- for(int var12 = 0; var12 < var1.length(); ++var12) {
- char var13 = var1.charAt(var12);
- if (var13 != '<' && var13 != '#' && var13 != 8804) {
- if (var13 == '|') {
- var4[var6] = var8;
- var5[var6] = var2[1].toString();
- ++var6;
- var10 = var8;
- var2[1].setLength(0);
- var7 = 0;
- } else {
- var2[var7].append(var13);
- }
- } else {
- if (var2[0].equals("")) {
- throw new IllegalArgumentException();
- }
-
- try {
- var8 = Double.valueOf(var2[0].toString());
- } catch (Exception var14) {
- throw new IllegalArgumentException();
- }
-
- if (var13 == '<') {
- var8 = nextDouble(var8);
- }
-
- if (var8 <= var10) {
- throw new IllegalArgumentException();
- }
-
- var2[0].setLength(0);
- var7 = 1;
- }
- }
-
- if (var7 == 1) {
- var4[var6] = var8;
- var5[var6] = var2[1].toString();
- ++var6;
- }
-
- this.choiceLimits = new double[var6];
- System.arraycopy(var4, 0, this.choiceLimits, 0, var6);
- this.choiceFormats = new String[var6];
- System.arraycopy(var5, 0, this.choiceFormats, 0, var6);
- }
-
- public String toPattern() {
- StringBuffer var1 = new StringBuffer();
-
- for(int var2 = 0; var2 < this.choiceLimits.length; ++var2) {
- if (var2 != 0) {
- var1.append('|');
- }
-
- double var3 = previousDouble(this.choiceLimits[var2]);
- double var5 = Math.abs(Math.IEEEremainder(this.choiceLimits[var2], (double)1.0F));
- double var7 = Math.abs(Math.IEEEremainder(var3, (double)1.0F));
- if (var5 < var7) {
- var1.append(String.valueOf(this.choiceLimits[var2]));
- var1.append('#');
- } else {
- var1.append(String.valueOf(var3));
- var1.append('<');
- }
-
- var1.append(this.choiceFormats[var2].toString());
- }
-
- return var1.toString();
- }
-
- public ChoiceFormat(String var1) {
- this.applyPattern(var1);
- }
-
- public ChoiceFormat(double[] var1, String[] var2) {
- this.setChoices(var1, var2);
- }
-
- public void setChoices(double[] var1, String[] var2) {
- this.choiceLimits = var1;
- this.choiceFormats = var2;
- }
-
- public double[] getLimits() {
- return this.choiceLimits;
- }
-
- public Object[] getFormats() {
- return this.choiceFormats;
- }
-
- public StringBuffer format(long var1, StringBuffer var3, FieldPosition var4) {
- return this.format((double)var1, var3, var4);
- }
-
- public StringBuffer format(double var1, StringBuffer var3, FieldPosition var4) {
- int var5;
- for(var5 = 0; var5 < this.choiceLimits.length && var1 >= this.choiceLimits[var5]; ++var5) {
- }
-
- --var5;
- if (var5 < 0) {
- var5 = 0;
- }
-
- return var3.append(this.choiceFormats[var5]);
- }
-
- public Number parse(String var1, ParsePosition var2) {
- int var3 = var2.index;
- int var4 = var3;
- double var5 = Double.NaN;
- double var7 = (double)0.0F;
-
- for(int var9 = 0; var9 < this.choiceFormats.length; ++var9) {
- String var10 = this.choiceFormats[var9];
- if (var1.regionMatches(var3, var10, 0, var10.length())) {
- var2.index = var10.length();
- var7 = this.choiceLimits[var9];
- if (var2.index > var4) {
- var4 = var2.index;
- var5 = var7;
- if (var4 == var1.length()) {
- break;
- }
- }
- }
- }
-
- var2.index = var4;
- return new Double(var5);
- }
-
- public static final double nextDouble(double var0) {
- return nextDouble(var0, true);
- }
-
- public static final double previousDouble(double var0) {
- return nextDouble(var0, false);
- }
-
- public Object clone() {
- ChoiceFormat var1 = (ChoiceFormat)super.clone();
- var1.choiceLimits = (double[])this.choiceLimits.clone();
- var1.choiceFormats = (String[])this.choiceFormats.clone();
- return var1;
- }
-
- public int hashCode() {
- int var1 = this.choiceLimits.length;
- if (this.choiceFormats.length > 0) {
- var1 ^= this.choiceFormats[this.choiceFormats.length - 1].hashCode();
- }
-
- return var1;
- }
-
- public boolean equals(Object var1) {
- if (this == var1) {
- return true;
- } else if (this.getClass() != var1.getClass()) {
- return false;
- } else {
- ChoiceFormat var2 = (ChoiceFormat)var1;
- return Utility.arrayEquals(this.choiceLimits, var2.choiceLimits) && Utility.arrayEquals(this.choiceFormats, var2.choiceFormats);
- }
- }
-
- public static double nextDouble(double var0, boolean var2) {
- if (Double.isNaN(var0)) {
- return var0;
- } else if (var0 == (double)0.0F) {
- double var9 = Double.longBitsToDouble(1L);
- return var2 ? var9 : -var9;
- } else {
- long var3 = Double.doubleToLongBits(var0);
- long var5 = var3 & Long.MAX_VALUE;
- if (var3 > 0L == var2) {
- if (var5 != 9218868437227405312L) {
- ++var5;
- }
- } else {
- --var5;
- }
-
- long var7 = var3 & Long.MIN_VALUE;
- return Double.longBitsToDouble(var5 | var7);
- }
- }
- }
-