home *** CD-ROM | disk | FTP | other *** search
- package netrexx.lang;
-
- public final class RexxUtil extends Rexx {
- protected static final Rexx one = new Rexx(1);
- protected static final Rexx sixteen = new Rexx(16);
- private static final Rexx $$24 = new Rexx('0');
- // $FF: renamed from: $0 java.lang.String
- private static final String field_0 = "RexxUtil.nrx";
-
- public static final char[] translate(char[] var0, char[] var1, char[] var2, char var3) {
- boolean var5 = false;
- char var7 = '\u0000';
- char var9 = '\u0000';
- if (var2.length == 0) {
- return var0;
- } else {
- int var4 = -1;
- int var10 = var2.length - 1;
-
- for(int var14 = 0; var14 <= var10; ++var14) {
- if (var2[var14] > var4) {
- var4 = var2[var14];
- }
- }
-
- char[] var6 = new char[var4 + 1];
- int var11 = var4;
-
- for(int var15 = 0; var15 <= var11; ++var15) {
- var6[var15] = (char)var15;
- }
-
- byte var12 = 0;
-
- for(int var16 = var2.length - 1; var16 >= var12; --var16) {
- if (var16 >= var1.length) {
- var7 = var3;
- } else {
- var7 = var1[var16];
- }
-
- var6[var2[var16]] = var7;
- }
-
- char[] var8 = new char[var0.length];
- int var13 = var0.length - 1;
-
- for(int var17 = 0; var17 <= var13; ++var17) {
- var9 = var0[var17];
- if (var9 > var4) {
- var8[var17] = (char)var9;
- } else {
- var8[var17] = var6[var9];
- }
- }
-
- return var8;
- }
- }
-
- public static final char[] d2x(Rexx var0, int var1) {
- Object var2 = null;
- Object var3 = null;
- boolean var4 = false;
- byte var5 = 0;
- int var6 = 0;
- boolean var8 = false;
- int var9 = 0;
- boolean var10 = false;
- int var11 = 0;
- Object var12 = null;
- if (var0.ind == -2) {
- throw new NumberFormatException(Rexx.toString(var0));
- } else {
- RexxSet var15;
- if (var0.mant.length > 9) {
- var15 = new RexxSet(var0.mant.length);
- } else {
- var15 = null;
- }
-
- Rexx var16;
- if (var0.ind == -1) {
- if (var1 < 0) {
- throw new BadArgumentException(Rexx.toString(var0));
- }
-
- var16 = var0.OpMinus(var15).OpSub(var15, one);
- var4 = true;
- var5 = 70;
- } else {
- var16 = var0;
- var4 = false;
- var5 = 48;
- }
-
- if (var1 < 0) {
- var6 = var16.mant.length;
- } else {
- var6 = var1;
- }
-
- char[] var7 = new char[var6];
- byte var13 = 0;
-
- for(int var20 = var7.length - 1; var20 >= var13; --var20) {
- var9 = var16.OpRem(var15, sixteen).toint();
- var16 = var16.OpDivI(var15, sixteen);
- if (var4) {
- var7[var20] = Rexx.Hexes[15 - var9];
- } else {
- var7[var20] = Rexx.Hexes[var9];
- }
-
- if (var16.ind == 0) {
- if (var1 < 0) {
- if (var20 == 0) {
- return var7;
- }
-
- var11 = var7.length - var20;
- char[] var24 = new char[var11];
- System.arraycopy(var7, var20, var24, 0, var11);
- return var24;
- }
-
- byte var14 = 0;
-
- for(int var22 = var20 - 1; var22 >= var14; --var22) {
- var7[var22] = (char)var5;
- }
- break;
- }
- }
-
- return var7;
- }
- }
-
- public static final char[] x2b(Rexx var0) {
- boolean var2 = false;
- int var3 = 0;
- int var4 = 0;
- char[] var1 = new char[var0.chars.length * 4];
- int var5 = var0.chars.length;
-
- for(int var6 = 0; var5 > 0; ++var6) {
- --var5;
- var3 = hexint(var0.chars[var6]);
- if (var3 < 0) {
- throw new BadArgumentException(Rexx.toString(Rexx.toRexx("Bad hexadecimal").OpCcblank((RexxSet)null, var0)));
- }
-
- var4 = var6 * 4;
- if (var3 > 7) {
- var1[var4] = '1';
- } else {
- var1[var4] = '0';
- }
-
- if ((var3 & 4) != 0) {
- var1[var4 + 1] = '1';
- } else {
- var1[var4 + 1] = '0';
- }
-
- if ((var3 & 2) != 0) {
- var1[var4 + 2] = '1';
- } else {
- var1[var4 + 2] = '0';
- }
-
- if ((var3 & 1) != 0) {
- var1[var4 + 3] = '1';
- } else {
- var1[var4 + 3] = '0';
- }
- }
-
- return var1;
- }
-
- public static final char x2c(Rexx var0) {
- int var1 = 0;
- int var3 = 0;
- int var4 = var0.chars.length - 2;
-
- for(var1 = 0; var1 <= var4 && var0.chars[var1] == '0'; ++var1) {
- }
-
- int var2 = 0;
-
- for(int var5 = var0.chars.length - 1; var1 <= var5; ++var1) {
- var3 = hexint(var0.chars[var1]);
- if (var3 < 0) {
- throw new BadArgumentException(Rexx.toString(Rexx.toRexx("Bad hexadecimal").OpCcblank((RexxSet)null, var0)));
- }
-
- var2 = var2 * 16 + var3;
- if (var2 > 65535) {
- throw new BadArgumentException(Rexx.toString(Rexx.toRexx("Too big").OpCcblank((RexxSet)null, var0)));
- }
- }
-
- return (char)var2;
- }
-
- public static final char[] x2d(Rexx var0, int var1) {
- int var3 = 0;
- Object var5 = null;
- boolean var7 = false;
- int var8 = 0;
- boolean var2 = false;
- if (var1 == 0 | var0.chars.length == 0) {
- return Rexx.tochararray($$24);
- } else {
- if (var1 < 0) {
- var3 = 0;
- } else if (var1 > var0.chars.length) {
- var3 = 0;
- } else {
- var3 = var0.chars.length - var1;
- if (var0.chars[var3] > '7' | var0.chars[var3] < '0') {
- var2 = true;
- }
- }
-
- int var4 = var0.chars.length * 5 / 4 + 1;
- RexxSet var11;
- if (var4 > 9) {
- var11 = new RexxSet(var4);
- } else {
- var11 = null;
- }
-
- Rexx var6 = new Rexx(0);
- int var9 = var0.chars.length - 1;
-
- for(int var12 = var3; var12 <= var9; ++var12) {
- var8 = hexint(var0.chars[var12]);
- if (var8 < 0) {
- throw new BadArgumentException(Rexx.toString(Rexx.toRexx("Bad hexadecimal").OpCcblank((RexxSet)null, var0)));
- }
-
- if (var2) {
- var8 = 15 - var8;
- }
-
- var6 = var6.OpMult(var11, sixteen).OpAdd(var11, new Rexx(var8));
- }
-
- if (var2) {
- var6 = var6.OpAdd(var11, one).OpMinus(var11);
- }
-
- return Rexx.tochararray(var6);
- }
- }
-
- public static final double doublePow(double var0, int var2) {
- boolean var3 = false;
- int var6 = 0;
- if (var2 == 0) {
- return (double)1.0F;
- } else {
- if (var2 > 0) {
- var3 = false;
- } else {
- var2 = -var2;
- var3 = true;
- }
-
- double var4 = (double)1.0F;
- var6 = 1;
-
- while(true) {
- var2 += var2;
- if (var2 < 0) {
- var4 *= var0;
- }
-
- if (var6 == 31) {
- if (Double.isInfinite(var4)) {
- throw new NumberFormatException("Overflow");
- }
-
- if (var3) {
- return (double)1.0F / var4;
- }
-
- return var4;
- }
-
- var4 *= var4;
- ++var6;
- }
- }
- }
-
- public static final float floatPow(double var0, int var2) {
- float var3 = (float)doublePow(var0, var2);
- if (Float.isInfinite(var3)) {
- throw new NumberFormatException("Overflow");
- } else {
- return var3;
- }
- }
-
- public static final Rexx doubleToRexx(double var0, int var2) {
- boolean var5 = false;
- Object var14 = null;
- long var3 = Double.doubleToLongBits(var0);
- if (var3 >= 0L) {
- var5 = false;
- } else {
- var5 = true;
- var3 &= Long.MAX_VALUE;
- }
-
- if (var3 == 0L) {
- return new Rexx(0);
- } else {
- long var6 = var3 % 4503599627370496L;
- long var8 = var6 | 4503599627370496L;
- long var10 = var3 / 4503599627370496L;
- if (var10 == 2047L) {
- return var6 == 0L ? Rexx.toRexx("Infinity") : Rexx.toRexx("NaN");
- } else {
- RexxSet var12 = new RexxSet(var2 + 2);
- Rexx var13 = (new Rexx(var8)).OpDiv(var12, new Rexx("4503599627370496"));
- if (var10 != 0L) {
- Rexx var16 = (new Rexx((byte)2)).OpPow(var12, new Rexx(var10 - 1023L));
- var13 = var13.OpMult(var12, var16);
- }
-
- var12.digits = var2;
- if (var5 && var13.ind == 1) {
- var13.ind = -1;
- }
-
- return var13.OpDiv(var12, one);
- }
- }
- }
-
- public static final char[] trunc(Rexx var0, int var1) {
- Object var2 = null;
- RexxSet var4;
- if (var0.mant.length > 9) {
- var4 = new RexxSet(var0.mant.length);
- } else {
- var4 = null;
- }
-
- var0 = var0.OpPlus(var4);
- return nonexp(var0, var1, false);
- }
-
- public static final char[] nonexp(Rexx var0, int var1, boolean var2) {
- Object var4 = null;
- Object var7 = null;
- boolean var8 = false;
- int var3 = var0.mant.length + var1;
- if (var0.exp > 0) {
- var3 += var0.exp;
- }
-
- RexxSet var11;
- if (var3 > 9) {
- var11 = new RexxSet(var3);
- } else {
- var11 = null;
- }
-
- var0.exp += var1;
- boolean var5 = false;
- byte var6 = var0.ind;
- if (var2 && var0.exp < 0 && var0.mant.length + var0.exp >= 0) {
- var5 = var0.mant[var0.mant.length + var0.exp] >= '5';
- }
-
- var0 = var0.OpDivI(var11, one);
- if (var5) {
- if (var6 == -1) {
- var0 = var0.OpSub(var11, one);
- } else {
- var0 = var0.OpAdd(var11, one);
- }
- }
-
- if (var0.ind == 0) {
- var0.exp = var1;
- }
-
- if (var0.exp > 0) {
- char[] var12 = new char[var0.mant.length + var0.exp];
- System.arraycopy(var0.mant, 0, var12, 0, var0.mant.length);
- int var9 = var12.length - 1;
-
- for(int var13 = var0.mant.length; var13 <= var9; ++var13) {
- var12[var13] = '0';
- }
-
- var0.mant = var12;
- var0.exp = 0;
- }
-
- var0.exp -= var1;
- return var0.layoutnum();
- }
-
- public static final char[] format(Rexx var0, int var1, int var2, int var3, int var4, char var5) {
- Object var6 = null;
- Object var7 = null;
- int var8 = 0;
- int var9 = 0;
- Object var10 = null;
- boolean var11 = false;
- boolean var12 = false;
- Object var13 = null;
- int var14 = 0;
- int var15 = 0;
- int var16 = 0;
- RexxSet var19;
- if (var0.mant.length > 9) {
- var19 = new RexxSet(var0.mant.length);
- } else {
- var19 = null;
- }
-
- var0 = var0.OpPlus(var19);
- char[] var20;
- if (var4 == -1) {
- if (var2 == -1) {
- if (var0.exp >= 0) {
- var2 = 0;
- } else {
- var2 = -var0.exp;
- }
- }
-
- var20 = nonexp(var0, var2, true);
- } else {
- if (var2 >= 0) {
- while(true) {
- if (var5 == 'S') {
- var8 = var0.mant.length - 1;
- } else {
- var9 = (var0.exp + var0.mant.length - 1) % 3;
- if (var9 < 0) {
- var9 += 3;
- }
-
- ++var9;
- if (var9 >= var0.mant.length) {
- var8 = 0;
- } else {
- var8 = var0.mant.length - var9;
- }
- }
-
- if (var8 == var2) {
- break;
- }
-
- if (var8 < var2) {
- char[] var25 = new char[var0.mant.length + var2 - var8];
- System.arraycopy(var0.mant, 0, var25, 0, var0.mant.length);
- int var17 = var25.length - 1;
-
- for(int var26 = var0.mant.length; var26 <= var17; ++var26) {
- var25[var26] = '0';
- }
-
- var0.mant = var25;
- var0.exp -= var2 - var8;
- if (var0.exp < -999999999) {
- throw new ExponentOverflowException();
- }
- break;
- }
-
- var12 = var0.mant[var0.mant.length - (var8 - var2)] >= '5';
- char[] var24 = new char[var0.mant.length - (var8 - var2)];
- System.arraycopy(var0.mant, 0, var24, 0, var24.length);
- var0.mant = var24;
- var0.exp += var8 - var2;
- if (var0.exp > 999999999) {
- throw new ExponentOverflowException();
- }
-
- if (!var12) {
- break;
- }
-
- Rexx var28 = new Rexx(1);
- var28.ind = var0.ind;
- var28.exp = var0.exp;
- var0 = var0.OpAdd(var19, var28);
- }
- }
-
- if (var5 == 'S') {
- var0.form = 0;
- } else {
- var0.form = 1;
- }
-
- var0.dig = var4;
- var20 = var0.layoutnum();
- }
-
- if (var1 > 0) {
- var14 = RexxWords.pos('.', var20, 1);
- if (var14 > 0) {
- --var14;
- } else if (var4 == -1) {
- var14 = var20.length;
- } else {
- var14 = RexxWords.pos('E', var20, 1);
- if (var14 > 0) {
- --var14;
- } else {
- var14 = var20.length;
- }
- }
-
- if (var14 > var1) {
- throw new BadArgumentException(String.valueOf(var1));
- }
-
- if (var14 < var1) {
- var20 = (new Rexx(var20, true)).right(new Rexx(var20.length + var1 - var14)).toCharArray();
- }
- }
-
- if (var3 > 0) {
- var15 = RexxWords.pos('E', var20, 1);
- if (var15 == 0) {
- var20 = (new Rexx(var20, true)).left(new Rexx(var20.length + var3 + 2)).toCharArray();
- } else {
- var16 = var20.length - var15 - 1;
- if (var16 > var3) {
- throw new BadArgumentException(String.valueOf(var3));
- }
-
- if (var16 < var3) {
- var20 = (new Rexx(var20, true)).insert(Rexx.toRexx(""), new Rexx(var15 + 1), new Rexx(var3 - var16), new Rexx('0')).toCharArray();
- }
- }
- }
-
- return var20;
- }
-
- private static int hexint(char var0) {
- if (var0 >= '0' && var0 <= '9') {
- return var0 - 48;
- } else if (var0 >= 'A' && var0 <= 'F') {
- return var0 - 65 + 10;
- } else {
- return var0 >= 'a' && var0 <= 'f' ? var0 - 97 + 10 : -1;
- }
- }
-
- private RexxUtil() {
- }
- }
-