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 / Utility.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.5 KB  |  347 lines

  1. package java.text;
  2.  
  3. final class Utility {
  4.    static final char ESCAPE = 'ΩûÑ';
  5.    static final byte ESCAPE_BYTE = -91;
  6.    static final char[] HEX_DIGIT = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
  7.  
  8.    static final boolean arrayEquals(Object[] var0, Object var1) {
  9.       if (var0 == null) {
  10.          return var1 == null;
  11.       } else if (!(var1 instanceof Object[])) {
  12.          return false;
  13.       } else {
  14.          Object[] var2 = var1;
  15.          return var0.length == var2.length && arrayRegionMatches((Object[])var0, 0, (Object[])var2, 0, var0.length);
  16.       }
  17.    }
  18.  
  19.    static final boolean arrayEquals(int[] var0, Object var1) {
  20.       if (var0 == null) {
  21.          return var1 == null;
  22.       } else if (!(var1 instanceof int[])) {
  23.          return false;
  24.       } else {
  25.          int[] var2 = (int[])var1;
  26.          return var0.length == var2.length && arrayRegionMatches((int[])var0, 0, (int[])var2, 0, var0.length);
  27.       }
  28.    }
  29.  
  30.    static final boolean arrayEquals(double[] var0, Object var1) {
  31.       if (var0 == null) {
  32.          return var1 == null;
  33.       } else if (!(var1 instanceof double[])) {
  34.          return false;
  35.       } else {
  36.          double[] var2 = (double[])var1;
  37.          return var0.length == var2.length && arrayRegionMatches((double[])var0, 0, (double[])var2, 0, var0.length);
  38.       }
  39.    }
  40.  
  41.    static final boolean arrayEquals(Object var0, Object var1) {
  42.       if (var0 == null) {
  43.          return var1 == null;
  44.       } else if (var0 instanceof Object[]) {
  45.          return arrayEquals(var0, var1);
  46.       } else if (var0 instanceof int[]) {
  47.          return arrayEquals((int[])var0, var1);
  48.       } else {
  49.          return var0 instanceof double[] ? arrayEquals((int[])var0, var1) : var0.equals(var1);
  50.       }
  51.    }
  52.  
  53.    static final boolean arrayRegionMatches(Object[] var0, int var1, Object[] var2, int var3, int var4) {
  54.       int var5 = var1 + var4;
  55.       int var6 = var3 - var1;
  56.  
  57.       for(int var7 = var1; var7 < var5; ++var7) {
  58.          if (!arrayEquals(var0[var7], var2[var7 + var6])) {
  59.             return false;
  60.          }
  61.       }
  62.  
  63.       return true;
  64.    }
  65.  
  66.    static final boolean arrayRegionMatches(int[] var0, int var1, int[] var2, int var3, int var4) {
  67.       int var5 = var1 + var4;
  68.       int var6 = var3 - var1;
  69.  
  70.       for(int var7 = var1; var7 < var5; ++var7) {
  71.          if (var0[var7] != var2[var7 + var6]) {
  72.             return false;
  73.          }
  74.       }
  75.  
  76.       return true;
  77.    }
  78.  
  79.    static final boolean arrayRegionMatches(double[] var0, int var1, double[] var2, int var3, int var4) {
  80.       int var5 = var1 + var4;
  81.       int var6 = var3 - var1;
  82.  
  83.       for(int var7 = var1; var7 < var5; ++var7) {
  84.          if (var0[var7] != var2[var7 + var6]) {
  85.             return false;
  86.          }
  87.       }
  88.  
  89.       return true;
  90.    }
  91.  
  92.    static final boolean objectEquals(Object var0, Object var1) {
  93.       if (var0 == null) {
  94.          return var1 == null;
  95.       } else {
  96.          return var0.equals(var1);
  97.       }
  98.    }
  99.  
  100.    static final String arrayToRLEString(short[] var0) {
  101.       StringBuffer var1 = new StringBuffer();
  102.       var1.append((char)(var0.length >> 16));
  103.       var1.append((char)var0.length);
  104.       short var2 = var0[0];
  105.       int var3 = 1;
  106.  
  107.       for(int var4 = 1; var4 < var0.length; ++var4) {
  108.          short var5 = var0[var4];
  109.          if (var5 == var2 && var3 < 65535) {
  110.             ++var3;
  111.          } else {
  112.             encodeRun(var1, var2, var3);
  113.             var2 = var5;
  114.             var3 = 1;
  115.          }
  116.       }
  117.  
  118.       encodeRun(var1, var2, var3);
  119.       return var1.toString();
  120.    }
  121.  
  122.    static final String arrayToRLEString(byte[] var0) {
  123.       StringBuffer var1 = new StringBuffer();
  124.       var1.append((char)(var0.length >> 16));
  125.       var1.append((char)var0.length);
  126.       byte var2 = var0[0];
  127.       int var3 = 1;
  128.       byte[] var4 = new byte[2];
  129.  
  130.       for(int var5 = 1; var5 < var0.length; ++var5) {
  131.          byte var6 = var0[var5];
  132.          if (var6 == var2 && var3 < 255) {
  133.             ++var3;
  134.          } else {
  135.             encodeRun(var1, var2, var3, var4);
  136.             var2 = var6;
  137.             var3 = 1;
  138.          }
  139.       }
  140.  
  141.       encodeRun(var1, var2, var3, var4);
  142.       if (var4[0] != 0) {
  143.          appendEncodedByte(var1, (byte)0, var4);
  144.       }
  145.  
  146.       return var1.toString();
  147.    }
  148.  
  149.    private static final void encodeRun(StringBuffer var0, short var1, int var2) {
  150.       if (var2 < 4) {
  151.          for(int var3 = 0; var3 < var2; ++var3) {
  152.             if (var1 == 'ΩûÑ') {
  153.                var0.append('ΩûÑ');
  154.             }
  155.  
  156.             var0.append((char)var1);
  157.          }
  158.       } else {
  159.          if (var2 == 42405) {
  160.             if (var1 == 'ΩûÑ') {
  161.                var0.append('ΩûÑ');
  162.             }
  163.  
  164.             var0.append((char)var1);
  165.             --var2;
  166.          }
  167.  
  168.          var0.append('ΩûÑ');
  169.          var0.append((char)var2);
  170.          var0.append((char)var1);
  171.       }
  172.  
  173.    }
  174.  
  175.    private static final void encodeRun(StringBuffer var0, byte var1, int var2, byte[] var3) {
  176.       if (var2 < 4) {
  177.          for(int var4 = 0; var4 < var2; ++var4) {
  178.             if (var1 == -91) {
  179.                appendEncodedByte(var0, (byte)-91, var3);
  180.             }
  181.  
  182.             appendEncodedByte(var0, var1, var3);
  183.          }
  184.       } else {
  185.          if (var2 == -91) {
  186.             if (var1 == -91) {
  187.                appendEncodedByte(var0, (byte)-91, var3);
  188.             }
  189.  
  190.             appendEncodedByte(var0, var1, var3);
  191.             --var2;
  192.          }
  193.  
  194.          appendEncodedByte(var0, (byte)-91, var3);
  195.          appendEncodedByte(var0, (byte)var2, var3);
  196.          appendEncodedByte(var0, var1, var3);
  197.       }
  198.  
  199.    }
  200.  
  201.    private static final void appendEncodedByte(StringBuffer var0, byte var1, byte[] var2) {
  202.       if (var2[0] != 0) {
  203.          char var3 = (char)(var2[1] << 8 | var1 & 255);
  204.          var0.append(var3);
  205.          var2[0] = 0;
  206.       } else {
  207.          var2[0] = 1;
  208.          var2[1] = var1;
  209.       }
  210.  
  211.    }
  212.  
  213.    static final short[] RLEStringToShortArray(String var0) {
  214.       int var1 = var0.charAt(0) << 16 | var0.charAt(1);
  215.       short[] var2 = new short[var1];
  216.       int var3 = 0;
  217.  
  218.       for(int var4 = 2; var4 < var0.length(); ++var4) {
  219.          char var5 = var0.charAt(var4);
  220.          if (var5 == 'ΩûÑ') {
  221.             ++var4;
  222.             var5 = var0.charAt(var4);
  223.             if (var5 == 'ΩûÑ') {
  224.                var2[var3++] = (short)var5;
  225.             } else {
  226.                char var6 = var5;
  227.                ++var4;
  228.                short var7 = (short)var0.charAt(var4);
  229.  
  230.                for(int var8 = 0; var8 < var6; ++var8) {
  231.                   var2[var3++] = var7;
  232.                }
  233.             }
  234.          } else {
  235.             var2[var3++] = (short)var5;
  236.          }
  237.       }
  238.  
  239.       if (var3 != var1) {
  240.          throw new InternalError("Bad run-length encoded short array");
  241.       } else {
  242.          return var2;
  243.       }
  244.    }
  245.  
  246.    static final byte[] RLEStringToByteArray(String var0) {
  247.       int var1 = var0.charAt(0) << 16 | var0.charAt(1);
  248.       byte[] var2 = new byte[var1];
  249.       boolean var3 = true;
  250.       char var4 = 0;
  251.       byte var5 = 0;
  252.       int var6 = 0;
  253.       int var7 = 2;
  254.       int var8 = 0;
  255.  
  256.       while(var8 < var1) {
  257.          byte var9;
  258.          if (var3) {
  259.             var4 = var0.charAt(var7++);
  260.             var9 = (byte)(var4 >> 8);
  261.             var3 = false;
  262.          } else {
  263.             var9 = (byte)(var4 & 255);
  264.             var3 = true;
  265.          }
  266.  
  267.          switch (var5) {
  268.             case 0:
  269.                if (var9 == -91) {
  270.                   var5 = 1;
  271.                } else {
  272.                   var2[var8++] = var9;
  273.                }
  274.                break;
  275.             case 1:
  276.                if (var9 == -91) {
  277.                   var2[var8++] = -91;
  278.                   var5 = 0;
  279.                } else {
  280.                   var6 = var9;
  281.                   if (var9 < 0) {
  282.                      var6 = var9 + 256;
  283.                   }
  284.  
  285.                   var5 = 2;
  286.                }
  287.                break;
  288.             case 2:
  289.                for(int var10 = 0; var10 < var6; ++var10) {
  290.                   var2[var8++] = var9;
  291.                }
  292.  
  293.                var5 = 0;
  294.          }
  295.       }
  296.  
  297.       if (var5 != 0) {
  298.          throw new InternalError("Bad run-length encoded byte array");
  299.       } else if (var7 != var0.length()) {
  300.          throw new InternalError("Excess data in RLE byte array string");
  301.       } else {
  302.          return var2;
  303.       }
  304.    }
  305.  
  306.    static final String formatForSource(String var0) {
  307.       StringBuffer var1 = new StringBuffer();
  308.       int var2 = 0;
  309.  
  310.       while(var2 < var0.length()) {
  311.          if (var2 > 0) {
  312.             var1.append("+\n");
  313.          }
  314.  
  315.          var1.append("        \"");
  316.          int var3 = 11;
  317.  
  318.          while(var2 < var0.length() && var3 < 80) {
  319.             char var4 = var0.charAt(var2++);
  320.             if (var4 >= ' ' && var4 != '"') {
  321.                if (var4 <= '~') {
  322.                   var1.append(var4);
  323.                   ++var3;
  324.                } else {
  325.                   var1.append("\\u");
  326.                   var1.append(HEX_DIGIT[(var4 & '\uf000') >> 12]);
  327.                   var1.append(HEX_DIGIT[(var4 & 3840) >> 8]);
  328.                   var1.append(HEX_DIGIT[(var4 & 240) >> 4]);
  329.                   var1.append(HEX_DIGIT[var4 & 15]);
  330.                   var3 += 6;
  331.                }
  332.             } else {
  333.                var1.append('\\');
  334.                var1.append(HEX_DIGIT[(var4 & 448) >> 6]);
  335.                var1.append(HEX_DIGIT[(var4 & 56) >> 3]);
  336.                var1.append(HEX_DIGIT[var4 & 7]);
  337.                var3 += 4;
  338.             }
  339.          }
  340.  
  341.          var1.append('"');
  342.       }
  343.  
  344.       return var1.toString();
  345.    }
  346. }
  347.