home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / text / ChoiceFormat.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.2 KB  |  283 lines

  1. package java.text;
  2.  
  3. import java.io.IOException;
  4. import java.io.InvalidObjectException;
  5. import java.io.ObjectInputStream;
  6.  
  7. public class ChoiceFormat extends NumberFormat {
  8.    private double[] choiceLimits;
  9.    private String[] choiceFormats;
  10.    static final long SIGN = Long.MIN_VALUE;
  11.    static final long EXPONENT = 9218868437227405312L;
  12.    static final long POSITIVEINFINITY = 9218868437227405312L;
  13.  
  14.    public void applyPattern(String var1) {
  15.       StringBuffer[] var2 = new StringBuffer[2];
  16.  
  17.       for(int var3 = 0; var3 < var2.length; ++var3) {
  18.          var2[var3] = new StringBuffer();
  19.       }
  20.  
  21.       double[] var4 = new double[30];
  22.       String[] var5 = new String[30];
  23.       int var6 = 0;
  24.       byte var7 = 0;
  25.       double var8 = (double)0.0F;
  26.       double var10 = Double.NaN;
  27.       boolean var12 = false;
  28.  
  29.       for(int var13 = 0; var13 < var1.length(); ++var13) {
  30.          char var14 = var1.charAt(var13);
  31.          if (var14 == '\'') {
  32.             if (var13 + 1 < var1.length() && var1.charAt(var13 + 1) == var14) {
  33.                var2[var7].append(var14);
  34.                ++var13;
  35.             } else {
  36.                var12 = !var12;
  37.             }
  38.          } else if (var12) {
  39.             var2[var7].append(var14);
  40.          } else if (var14 != '<' && var14 != '#' && var14 != 8804) {
  41.             if (var14 == '|') {
  42.                var4[var6] = var8;
  43.                var5[var6] = var2[1].toString();
  44.                ++var6;
  45.                var10 = var8;
  46.                var2[1].setLength(0);
  47.                var7 = 0;
  48.             } else {
  49.                var2[var7].append(var14);
  50.             }
  51.          } else {
  52.             if (var2[0].equals("")) {
  53.                throw new IllegalArgumentException();
  54.             }
  55.  
  56.             try {
  57.                String var15 = var2[0].toString();
  58.                if (var15.equals("Γê₧")) {
  59.                   var8 = Double.POSITIVE_INFINITY;
  60.                } else if (var15.equals("-Γê₧")) {
  61.                   var8 = Double.NEGATIVE_INFINITY;
  62.                } else {
  63.                   var8 = Double.valueOf(var2[0].toString());
  64.                }
  65.             } catch (Exception var16) {
  66.                throw new IllegalArgumentException();
  67.             }
  68.  
  69.             if (var14 == '<' && var8 != Double.POSITIVE_INFINITY && var8 != Double.NEGATIVE_INFINITY) {
  70.                var8 = nextDouble(var8);
  71.             }
  72.  
  73.             if (var8 <= var10) {
  74.                throw new IllegalArgumentException();
  75.             }
  76.  
  77.             var2[0].setLength(0);
  78.             var7 = 1;
  79.          }
  80.       }
  81.  
  82.       if (var7 == 1) {
  83.          var4[var6] = var8;
  84.          var5[var6] = var2[1].toString();
  85.          ++var6;
  86.       }
  87.  
  88.       this.choiceLimits = new double[var6];
  89.       System.arraycopy(var4, 0, this.choiceLimits, 0, var6);
  90.       this.choiceFormats = new String[var6];
  91.       System.arraycopy(var5, 0, this.choiceFormats, 0, var6);
  92.    }
  93.  
  94.    public String toPattern() {
  95.       StringBuffer var1 = new StringBuffer();
  96.  
  97.       for(int var2 = 0; var2 < this.choiceLimits.length; ++var2) {
  98.          if (var2 != 0) {
  99.             var1.append('|');
  100.          }
  101.  
  102.          double var3 = previousDouble(this.choiceLimits[var2]);
  103.          double var5 = Math.abs(Math.IEEEremainder(this.choiceLimits[var2], (double)1.0F));
  104.          double var7 = Math.abs(Math.IEEEremainder(var3, (double)1.0F));
  105.          if (var5 < var7) {
  106.             var1.append("" + this.choiceLimits[var2]);
  107.             var1.append('#');
  108.          } else {
  109.             if (this.choiceLimits[var2] == Double.POSITIVE_INFINITY) {
  110.                var1.append("Γê₧");
  111.             } else if (this.choiceLimits[var2] == Double.NEGATIVE_INFINITY) {
  112.                var1.append("-Γê₧");
  113.             } else {
  114.                var1.append("" + var3);
  115.             }
  116.  
  117.             var1.append('<');
  118.          }
  119.  
  120.          String var9 = this.choiceFormats[var2];
  121.          boolean var10 = var9.indexOf(60) >= 0 || var9.indexOf(35) >= 0 || var9.indexOf(8804) >= 0 || var9.indexOf(124) >= 0;
  122.          if (var10) {
  123.             var1.append('\'');
  124.          }
  125.  
  126.          if (var9.indexOf(39) < 0) {
  127.             var1.append(var9);
  128.          } else {
  129.             for(int var11 = 0; var11 < var9.length(); ++var11) {
  130.                char var12 = var9.charAt(var11);
  131.                var1.append(var12);
  132.                if (var12 == '\'') {
  133.                   var1.append(var12);
  134.                }
  135.             }
  136.          }
  137.  
  138.          if (var10) {
  139.             var1.append('\'');
  140.          }
  141.       }
  142.  
  143.       return var1.toString();
  144.    }
  145.  
  146.    public ChoiceFormat(String var1) {
  147.       this.applyPattern(var1);
  148.    }
  149.  
  150.    public ChoiceFormat(double[] var1, String[] var2) {
  151.       this.setChoices(var1, var2);
  152.    }
  153.  
  154.    public void setChoices(double[] var1, String[] var2) {
  155.       if (var1.length != var2.length) {
  156.          throw new IllegalArgumentException("Array and limit arrays must be of the same length.");
  157.       } else {
  158.          this.choiceLimits = var1;
  159.          this.choiceFormats = var2;
  160.       }
  161.    }
  162.  
  163.    public double[] getLimits() {
  164.       return this.choiceLimits;
  165.    }
  166.  
  167.    public Object[] getFormats() {
  168.       return this.choiceFormats;
  169.    }
  170.  
  171.    public StringBuffer format(long var1, StringBuffer var3, FieldPosition var4) {
  172.       return this.format((double)var1, var3, var4);
  173.    }
  174.  
  175.    public StringBuffer format(double var1, StringBuffer var3, FieldPosition var4) {
  176.       int var5;
  177.       for(var5 = 0; var5 < this.choiceLimits.length && var1 >= this.choiceLimits[var5]; ++var5) {
  178.       }
  179.  
  180.       --var5;
  181.       if (var5 < 0) {
  182.          var5 = 0;
  183.       }
  184.  
  185.       return var3.append(this.choiceFormats[var5]);
  186.    }
  187.  
  188.    public Number parse(String var1, ParsePosition var2) {
  189.       int var3 = var2.index;
  190.       int var4 = var3;
  191.       double var5 = Double.NaN;
  192.       double var7 = (double)0.0F;
  193.  
  194.       for(int var9 = 0; var9 < this.choiceFormats.length; ++var9) {
  195.          String var10 = this.choiceFormats[var9];
  196.          if (var1.regionMatches(var3, var10, 0, var10.length())) {
  197.             var2.index = var3 + var10.length();
  198.             var7 = this.choiceLimits[var9];
  199.             if (var2.index > var4) {
  200.                var4 = var2.index;
  201.                var5 = var7;
  202.                if (var4 == var1.length()) {
  203.                   break;
  204.                }
  205.             }
  206.          }
  207.       }
  208.  
  209.       var2.index = var4;
  210.       if (var2.index == var3) {
  211.          var2.errorIndex = var4;
  212.       }
  213.  
  214.       return new Double(var5);
  215.    }
  216.  
  217.    public static final double nextDouble(double var0) {
  218.       return nextDouble(var0, true);
  219.    }
  220.  
  221.    public static final double previousDouble(double var0) {
  222.       return nextDouble(var0, false);
  223.    }
  224.  
  225.    public Object clone() {
  226.       ChoiceFormat var1 = (ChoiceFormat)super.clone();
  227.       var1.choiceLimits = (double[])this.choiceLimits.clone();
  228.       var1.choiceFormats = (String[])this.choiceFormats.clone();
  229.       return var1;
  230.    }
  231.  
  232.    public int hashCode() {
  233.       int var1 = this.choiceLimits.length;
  234.       if (this.choiceFormats.length > 0) {
  235.          var1 ^= this.choiceFormats[this.choiceFormats.length - 1].hashCode();
  236.       }
  237.  
  238.       return var1;
  239.    }
  240.  
  241.    public boolean equals(Object var1) {
  242.       if (var1 == null) {
  243.          return false;
  244.       } else if (this == var1) {
  245.          return true;
  246.       } else if (this.getClass() != var1.getClass()) {
  247.          return false;
  248.       } else {
  249.          ChoiceFormat var2 = (ChoiceFormat)var1;
  250.          return Utility.arrayEquals(this.choiceLimits, var2.choiceLimits) && Utility.arrayEquals(this.choiceFormats, var2.choiceFormats);
  251.       }
  252.    }
  253.  
  254.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  255.       var1.defaultReadObject();
  256.       if (this.choiceLimits.length != this.choiceFormats.length) {
  257.          throw new InvalidObjectException("limits and format arrays of different length.");
  258.       }
  259.    }
  260.  
  261.    public static double nextDouble(double var0, boolean var2) {
  262.       if (Double.isNaN(var0)) {
  263.          return var0;
  264.       } else if (var0 == (double)0.0F) {
  265.          double var9 = Double.longBitsToDouble(1L);
  266.          return var2 ? var9 : -var9;
  267.       } else {
  268.          long var3 = Double.doubleToLongBits(var0);
  269.          long var5 = var3 & Long.MAX_VALUE;
  270.          if (var3 > 0L == var2) {
  271.             if (var5 != 9218868437227405312L) {
  272.                ++var5;
  273.             }
  274.          } else {
  275.             --var5;
  276.          }
  277.  
  278.          long var7 = var3 & Long.MIN_VALUE;
  279.          return Double.longBitsToDouble(var5 | var7);
  280.       }
  281.    }
  282. }
  283.