home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / text / Utility.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  4.5 KB  |  346 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.  
  159.       } else {
  160.          if (var2 == 42405) {
  161.             if (var1 == 'ΩûÑ') {
  162.                var0.append('ΩûÑ');
  163.             }
  164.  
  165.             var0.append((char)var1);
  166.             --var2;
  167.          }
  168.  
  169.          var0.append('ΩûÑ');
  170.          var0.append((char)var2);
  171.          var0.append((char)var1);
  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.  
  185.       } else {
  186.          if (var2 == -91) {
  187.             if (var1 == -91) {
  188.                appendEncodedByte(var0, (byte)-91, var3);
  189.             }
  190.  
  191.             appendEncodedByte(var0, var1, var3);
  192.             --var2;
  193.          }
  194.  
  195.          appendEncodedByte(var0, (byte)-91, var3);
  196.          appendEncodedByte(var0, (byte)var2, var3);
  197.          appendEncodedByte(var0, var1, var3);
  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.    static final short[] RLEStringToShortArray(String var0) {
  213.       int var1 = var0.charAt(0) << 16 | var0.charAt(1);
  214.       short[] var2 = new short[var1];
  215.       int var3 = 0;
  216.  
  217.       for(int var4 = 2; var4 < var0.length(); ++var4) {
  218.          char var5 = var0.charAt(var4);
  219.          if (var5 == 'ΩûÑ') {
  220.             ++var4;
  221.             var5 = var0.charAt(var4);
  222.             if (var5 == 'ΩûÑ') {
  223.                var2[var3++] = (short)var5;
  224.             } else {
  225.                char var6 = var5;
  226.                ++var4;
  227.                short var7 = (short)var0.charAt(var4);
  228.  
  229.                for(int var8 = 0; var8 < var6; ++var8) {
  230.                   var2[var3++] = var7;
  231.                }
  232.             }
  233.          } else {
  234.             var2[var3++] = (short)var5;
  235.          }
  236.       }
  237.  
  238.       if (var3 != var1) {
  239.          throw new InternalError("Bad run-length encoded short array");
  240.       } else {
  241.          return var2;
  242.       }
  243.    }
  244.  
  245.    static final byte[] RLEStringToByteArray(String var0) {
  246.       int var1 = var0.charAt(0) << 16 | var0.charAt(1);
  247.       byte[] var2 = new byte[var1];
  248.       boolean var3 = true;
  249.       char var4 = 0;
  250.       byte var5 = 0;
  251.       int var6 = 0;
  252.       int var7 = 2;
  253.       int var8 = 0;
  254.  
  255.       while(var8 < var1) {
  256.          byte var9;
  257.          if (var3) {
  258.             var4 = var0.charAt(var7++);
  259.             var9 = (byte)(var4 >> 8);
  260.             var3 = false;
  261.          } else {
  262.             var9 = (byte)(var4 & 255);
  263.             var3 = true;
  264.          }
  265.  
  266.          switch (var5) {
  267.             case 0:
  268.                if (var9 == -91) {
  269.                   var5 = 1;
  270.                } else {
  271.                   var2[var8++] = var9;
  272.                }
  273.                break;
  274.             case 1:
  275.                if (var9 == -91) {
  276.                   var2[var8++] = -91;
  277.                   var5 = 0;
  278.                } else {
  279.                   var6 = var9;
  280.                   if (var9 < 0) {
  281.                      var6 = var9 + 256;
  282.                   }
  283.  
  284.                   var5 = 2;
  285.                }
  286.                break;
  287.             case 2:
  288.                for(int var10 = 0; var10 < var6; ++var10) {
  289.                   var2[var8++] = var9;
  290.                }
  291.  
  292.                var5 = 0;
  293.          }
  294.       }
  295.  
  296.       if (var5 != 0) {
  297.          throw new InternalError("Bad run-length encoded byte array");
  298.       } else if (var7 != var0.length()) {
  299.          throw new InternalError("Excess data in RLE byte array string");
  300.       } else {
  301.          return var2;
  302.       }
  303.    }
  304.  
  305.    static final String formatForSource(String var0) {
  306.       StringBuffer var1 = new StringBuffer();
  307.       int var2 = 0;
  308.  
  309.       while(var2 < var0.length()) {
  310.          if (var2 > 0) {
  311.             var1.append("+\n");
  312.          }
  313.  
  314.          var1.append("        \"");
  315.          int var3 = 11;
  316.  
  317.          while(var2 < var0.length() && var3 < 80) {
  318.             char var4 = var0.charAt(var2++);
  319.             if (var4 >= ' ' && var4 != '"') {
  320.                if (var4 <= '~') {
  321.                   var1.append(var4);
  322.                   ++var3;
  323.                } else {
  324.                   var1.append("\\u");
  325.                   var1.append(HEX_DIGIT[(var4 & '\uf000') >> 12]);
  326.                   var1.append(HEX_DIGIT[(var4 & 3840) >> 8]);
  327.                   var1.append(HEX_DIGIT[(var4 & 240) >> 4]);
  328.                   var1.append(HEX_DIGIT[var4 & 15]);
  329.                   var3 += 6;
  330.                }
  331.             } else {
  332.                var1.append('\\');
  333.                var1.append(HEX_DIGIT[(var4 & 448) >> 6]);
  334.                var1.append(HEX_DIGIT[(var4 & 56) >> 3]);
  335.                var1.append(HEX_DIGIT[var4 & 7]);
  336.                var3 += 4;
  337.             }
  338.          }
  339.  
  340.          var1.append('"');
  341.       }
  342.  
  343.       return var1.toString();
  344.    }
  345. }
  346.