home *** CD-ROM | disk | FTP | other *** search
- package java.text;
-
- final class Utility {
- static final char ESCAPE = 'ΩûÑ';
- static final byte ESCAPE_BYTE = -91;
- static final char[] HEX_DIGIT = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
-
- static final boolean arrayEquals(Object[] var0, Object var1) {
- if (var0 == null) {
- return var1 == null;
- } else if (!(var1 instanceof Object[])) {
- return false;
- } else {
- Object[] var2 = var1;
- return var0.length == var2.length && arrayRegionMatches((Object[])var0, 0, (Object[])var2, 0, var0.length);
- }
- }
-
- static final boolean arrayEquals(int[] var0, Object var1) {
- if (var0 == null) {
- return var1 == null;
- } else if (!(var1 instanceof int[])) {
- return false;
- } else {
- int[] var2 = (int[])var1;
- return var0.length == var2.length && arrayRegionMatches((int[])var0, 0, (int[])var2, 0, var0.length);
- }
- }
-
- static final boolean arrayEquals(double[] var0, Object var1) {
- if (var0 == null) {
- return var1 == null;
- } else if (!(var1 instanceof double[])) {
- return false;
- } else {
- double[] var2 = (double[])var1;
- return var0.length == var2.length && arrayRegionMatches((double[])var0, 0, (double[])var2, 0, var0.length);
- }
- }
-
- static final boolean arrayEquals(Object var0, Object var1) {
- if (var0 == null) {
- return var1 == null;
- } else if (var0 instanceof Object[]) {
- return arrayEquals(var0, var1);
- } else if (var0 instanceof int[]) {
- return arrayEquals((int[])var0, var1);
- } else {
- return var0 instanceof double[] ? arrayEquals((int[])var0, var1) : var0.equals(var1);
- }
- }
-
- static final boolean arrayRegionMatches(Object[] var0, int var1, Object[] var2, int var3, int var4) {
- int var5 = var1 + var4;
- int var6 = var3 - var1;
-
- for(int var7 = var1; var7 < var5; ++var7) {
- if (!arrayEquals(var0[var7], var2[var7 + var6])) {
- return false;
- }
- }
-
- return true;
- }
-
- static final boolean arrayRegionMatches(int[] var0, int var1, int[] var2, int var3, int var4) {
- int var5 = var1 + var4;
- int var6 = var3 - var1;
-
- for(int var7 = var1; var7 < var5; ++var7) {
- if (var0[var7] != var2[var7 + var6]) {
- return false;
- }
- }
-
- return true;
- }
-
- static final boolean arrayRegionMatches(double[] var0, int var1, double[] var2, int var3, int var4) {
- int var5 = var1 + var4;
- int var6 = var3 - var1;
-
- for(int var7 = var1; var7 < var5; ++var7) {
- if (var0[var7] != var2[var7 + var6]) {
- return false;
- }
- }
-
- return true;
- }
-
- static final boolean objectEquals(Object var0, Object var1) {
- if (var0 == null) {
- return var1 == null;
- } else {
- return var0.equals(var1);
- }
- }
-
- static final String arrayToRLEString(short[] var0) {
- StringBuffer var1 = new StringBuffer();
- var1.append((char)(var0.length >> 16));
- var1.append((char)var0.length);
- short var2 = var0[0];
- int var3 = 1;
-
- for(int var4 = 1; var4 < var0.length; ++var4) {
- short var5 = var0[var4];
- if (var5 == var2 && var3 < 65535) {
- ++var3;
- } else {
- encodeRun(var1, var2, var3);
- var2 = var5;
- var3 = 1;
- }
- }
-
- encodeRun(var1, var2, var3);
- return var1.toString();
- }
-
- static final String arrayToRLEString(byte[] var0) {
- StringBuffer var1 = new StringBuffer();
- var1.append((char)(var0.length >> 16));
- var1.append((char)var0.length);
- byte var2 = var0[0];
- int var3 = 1;
- byte[] var4 = new byte[2];
-
- for(int var5 = 1; var5 < var0.length; ++var5) {
- byte var6 = var0[var5];
- if (var6 == var2 && var3 < 255) {
- ++var3;
- } else {
- encodeRun(var1, var2, var3, var4);
- var2 = var6;
- var3 = 1;
- }
- }
-
- encodeRun(var1, var2, var3, var4);
- if (var4[0] != 0) {
- appendEncodedByte(var1, (byte)0, var4);
- }
-
- return var1.toString();
- }
-
- private static final void encodeRun(StringBuffer var0, short var1, int var2) {
- if (var2 < 4) {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var1 == 'ΩûÑ') {
- var0.append('ΩûÑ');
- }
-
- var0.append((char)var1);
- }
-
- } else {
- if (var2 == 42405) {
- if (var1 == 'ΩûÑ') {
- var0.append('ΩûÑ');
- }
-
- var0.append((char)var1);
- --var2;
- }
-
- var0.append('ΩûÑ');
- var0.append((char)var2);
- var0.append((char)var1);
- }
- }
-
- private static final void encodeRun(StringBuffer var0, byte var1, int var2, byte[] var3) {
- if (var2 < 4) {
- for(int var4 = 0; var4 < var2; ++var4) {
- if (var1 == -91) {
- appendEncodedByte(var0, (byte)-91, var3);
- }
-
- appendEncodedByte(var0, var1, var3);
- }
-
- } else {
- if (var2 == -91) {
- if (var1 == -91) {
- appendEncodedByte(var0, (byte)-91, var3);
- }
-
- appendEncodedByte(var0, var1, var3);
- --var2;
- }
-
- appendEncodedByte(var0, (byte)-91, var3);
- appendEncodedByte(var0, (byte)var2, var3);
- appendEncodedByte(var0, var1, var3);
- }
- }
-
- private static final void appendEncodedByte(StringBuffer var0, byte var1, byte[] var2) {
- if (var2[0] != 0) {
- char var3 = (char)(var2[1] << 8 | var1 & 255);
- var0.append(var3);
- var2[0] = 0;
- } else {
- var2[0] = 1;
- var2[1] = var1;
- }
- }
-
- static final short[] RLEStringToShortArray(String var0) {
- int var1 = var0.charAt(0) << 16 | var0.charAt(1);
- short[] var2 = new short[var1];
- int var3 = 0;
-
- for(int var4 = 2; var4 < var0.length(); ++var4) {
- char var5 = var0.charAt(var4);
- if (var5 == 'ΩûÑ') {
- ++var4;
- var5 = var0.charAt(var4);
- if (var5 == 'ΩûÑ') {
- var2[var3++] = (short)var5;
- } else {
- char var6 = var5;
- ++var4;
- short var7 = (short)var0.charAt(var4);
-
- for(int var8 = 0; var8 < var6; ++var8) {
- var2[var3++] = var7;
- }
- }
- } else {
- var2[var3++] = (short)var5;
- }
- }
-
- if (var3 != var1) {
- throw new InternalError("Bad run-length encoded short array");
- } else {
- return var2;
- }
- }
-
- static final byte[] RLEStringToByteArray(String var0) {
- int var1 = var0.charAt(0) << 16 | var0.charAt(1);
- byte[] var2 = new byte[var1];
- boolean var3 = true;
- char var4 = 0;
- byte var5 = 0;
- int var6 = 0;
- int var7 = 2;
- int var8 = 0;
-
- while(var8 < var1) {
- byte var9;
- if (var3) {
- var4 = var0.charAt(var7++);
- var9 = (byte)(var4 >> 8);
- var3 = false;
- } else {
- var9 = (byte)(var4 & 255);
- var3 = true;
- }
-
- switch (var5) {
- case 0:
- if (var9 == -91) {
- var5 = 1;
- } else {
- var2[var8++] = var9;
- }
- break;
- case 1:
- if (var9 == -91) {
- var2[var8++] = -91;
- var5 = 0;
- } else {
- var6 = var9;
- if (var9 < 0) {
- var6 = var9 + 256;
- }
-
- var5 = 2;
- }
- break;
- case 2:
- for(int var10 = 0; var10 < var6; ++var10) {
- var2[var8++] = var9;
- }
-
- var5 = 0;
- }
- }
-
- if (var5 != 0) {
- throw new InternalError("Bad run-length encoded byte array");
- } else if (var7 != var0.length()) {
- throw new InternalError("Excess data in RLE byte array string");
- } else {
- return var2;
- }
- }
-
- static final String formatForSource(String var0) {
- StringBuffer var1 = new StringBuffer();
- int var2 = 0;
-
- while(var2 < var0.length()) {
- if (var2 > 0) {
- var1.append("+\n");
- }
-
- var1.append(" \"");
- int var3 = 11;
-
- while(var2 < var0.length() && var3 < 80) {
- char var4 = var0.charAt(var2++);
- if (var4 >= ' ' && var4 != '"') {
- if (var4 <= '~') {
- var1.append(var4);
- ++var3;
- } else {
- var1.append("\\u");
- var1.append(HEX_DIGIT[(var4 & '\uf000') >> 12]);
- var1.append(HEX_DIGIT[(var4 & 3840) >> 8]);
- var1.append(HEX_DIGIT[(var4 & 240) >> 4]);
- var1.append(HEX_DIGIT[var4 & 15]);
- var3 += 6;
- }
- } else {
- var1.append('\\');
- var1.append(HEX_DIGIT[(var4 & 448) >> 6]);
- var1.append(HEX_DIGIT[(var4 & 56) >> 3]);
- var1.append(HEX_DIGIT[var4 & 7]);
- var3 += 4;
- }
- }
-
- var1.append('"');
- }
-
- return var1.toString();
- }
- }
-