home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Extras / OSpace / jgl.exe / jgl_2_0 / COM / objectspace / jgl / NumberHelper.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-03-12  |  4.8 KB  |  187 lines

  1. package COM.objectspace.jgl;
  2.  
  3. import java.math.BigDecimal;
  4. import java.math.BigInteger;
  5.  
  6. final class NumberHelper {
  7.    private static Class classInteger = (new Integer(0)).getClass();
  8.    private static Class classLong = (new Long(0L)).getClass();
  9.    private static Class classFloat = (new Float(0.0F)).getClass();
  10.    private static Class classDouble = (new Double((double)0.0F)).getClass();
  11.    private static Class classByte = (new Byte((byte)0)).getClass();
  12.    private static Class classShort = (new Short((short)0)).getClass();
  13.    private static Class classBigInteger = (new BigInteger("0")).getClass();
  14.    private static Class classBigDecimal = (new BigDecimal("0")).getClass();
  15.    static Class classNumber = (new Integer(0)).getClass().getSuperclass();
  16.  
  17.    private NumberHelper() {
  18.    }
  19.  
  20.    static BigDecimal asBigDecimal(Number var0) {
  21.       return var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString());
  22.    }
  23.  
  24.    static BigInteger asBigInteger(Number var0) {
  25.       return var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger();
  26.    }
  27.  
  28.    static Number plus(Number var0, Number var1, Class var2) {
  29.       if (var2.equals(classInteger)) {
  30.          return new Integer(var0.intValue() + var1.intValue());
  31.       } else if (var2.equals(classLong)) {
  32.          return new Long(var0.longValue() + var1.longValue());
  33.       } else if (var2.equals(classFloat)) {
  34.          return new Float(var0.floatValue() + var1.floatValue());
  35.       } else if (var2.equals(classDouble)) {
  36.          return new Double(var0.doubleValue() + var1.doubleValue());
  37.       } else if (var2.equals(classByte)) {
  38.          return new Byte((byte)(var0.byteValue() + var1.byteValue()));
  39.       } else if (var2.equals(classShort)) {
  40.          return new Short((short)(var0.shortValue() + var1.shortValue()));
  41.       } else if (var2.equals(classBigInteger)) {
  42.          return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).add(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
  43.       } else if (var2.equals(classBigDecimal)) {
  44.          return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).add(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()));
  45.       } else {
  46.          throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
  47.       }
  48.    }
  49.  
  50.    static Number minus(Number var0, Number var1, Class var2) {
  51.       if (var2.equals(classInteger)) {
  52.          return new Integer(var0.intValue() - var1.intValue());
  53.       } else if (var2.equals(classLong)) {
  54.          return new Long(var0.longValue() - var1.longValue());
  55.       } else if (var2.equals(classFloat)) {
  56.          return new Float(var0.floatValue() - var1.floatValue());
  57.       } else if (var2.equals(classDouble)) {
  58.          return new Double(var0.doubleValue() - var1.doubleValue());
  59.       } else if (var2.equals(classByte)) {
  60.          return new Byte((byte)(var0.byteValue() - var1.byteValue()));
  61.       } else if (var2.equals(classShort)) {
  62.          return new Short((short)(var0.shortValue() - var1.shortValue()));
  63.       } else if (var2.equals(classBigInteger)) {
  64.          return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).subtract(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
  65.       } else if (var2.equals(classBigDecimal)) {
  66.          return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).subtract(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()));
  67.       } else {
  68.          throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
  69.       }
  70.    }
  71.  
  72.    static Number multiply(Number var0, Number var1, Class var2) {
  73.       if (var2.equals(classInteger)) {
  74.          return new Integer(var0.intValue() * var1.intValue());
  75.       } else if (var2.equals(classLong)) {
  76.          return new Long(var0.longValue() * var1.longValue());
  77.       } else if (var2.equals(classFloat)) {
  78.          return new Float(var0.floatValue() * var1.floatValue());
  79.       } else if (var2.equals(classDouble)) {
  80.          return new Double(var0.doubleValue() * var1.doubleValue());
  81.       } else if (var2.equals(classByte)) {
  82.          return new Byte((byte)(var0.byteValue() * var1.byteValue()));
  83.       } else if (var2.equals(classShort)) {
  84.          return new Short((short)(var0.shortValue() * var1.shortValue()));
  85.       } else if (var2.equals(classBigInteger)) {
  86.          return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).multiply(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
  87.       } else if (var2.equals(classBigDecimal)) {
  88.          return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).multiply(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()));
  89.       } else {
  90.          throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
  91.       }
  92.    }
  93.  
  94.    static Number divides(Number var0, Number var1, Class var2, int var3) {
  95.       if (var2.equals(classInteger)) {
  96.          return new Integer(var0.intValue() / var1.intValue());
  97.       } else if (var2.equals(classLong)) {
  98.          return new Long(var0.longValue() / var1.longValue());
  99.       } else if (var2.equals(classFloat)) {
  100.          return new Float(var0.floatValue() / var1.floatValue());
  101.       } else if (var2.equals(classDouble)) {
  102.          return new Double(var0.doubleValue() / var1.doubleValue());
  103.       } else if (var2.equals(classByte)) {
  104.          return new Byte((byte)(var0.byteValue() / var1.byteValue()));
  105.       } else if (var2.equals(classShort)) {
  106.          return new Short((short)(var0.shortValue() / var1.shortValue()));
  107.       } else if (var2.equals(classBigInteger)) {
  108.          return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).divide(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
  109.       } else if (var2.equals(classBigDecimal)) {
  110.          return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).divide(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()), var3);
  111.       } else {
  112.          throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
  113.       }
  114.    }
  115.  
  116.    static Number modulus(Number var0, Number var1, Class var2, int var3) {
  117.       if (var2.equals(classInteger)) {
  118.          return new Integer(var0.intValue() % var1.intValue());
  119.       } else if (var2.equals(classLong)) {
  120.          return new Long(var0.longValue() % var1.longValue());
  121.       } else if (var2.equals(classFloat)) {
  122.          return new Float(var0.floatValue() % var1.floatValue());
  123.       } else if (var2.equals(classDouble)) {
  124.          return new Double(var0.doubleValue() % var1.doubleValue());
  125.       } else if (var2.equals(classByte)) {
  126.          return new Byte((byte)(var0.byteValue() % var1.byteValue()));
  127.       } else if (var2.equals(classShort)) {
  128.          return new Short((short)(var0.shortValue() % var1.shortValue()));
  129.       } else if (var2.equals(classBigInteger)) {
  130.          return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).mod(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
  131.       } else if (var2.equals(classBigDecimal)) {
  132.          BigDecimal var4 = var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString());
  133.          BigDecimal var5 = var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString());
  134.          BigDecimal var6 = var4.divide(var5, var3);
  135.          return var4.subtract(var6.multiply(var5));
  136.       } else {
  137.          throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
  138.       }
  139.    }
  140.  
  141.    static int compare(Number var0, Number var1, Class var2) {
  142.       if (var2.equals(classInteger)) {
  143.          if (var0.intValue() < var1.intValue()) {
  144.             return -1;
  145.          } else {
  146.             return var0.intValue() > var1.intValue() ? 1 : 0;
  147.          }
  148.       } else if (var2.equals(classLong)) {
  149.          if (var0.longValue() < var1.longValue()) {
  150.             return -1;
  151.          } else {
  152.             return var0.longValue() > var1.longValue() ? 1 : 0;
  153.          }
  154.       } else if (var2.equals(classFloat)) {
  155.          if (var0.floatValue() < var1.floatValue()) {
  156.             return -1;
  157.          } else {
  158.             return var0.floatValue() > var1.floatValue() ? 1 : 0;
  159.          }
  160.       } else if (var2.equals(classDouble)) {
  161.          if (var0.doubleValue() < var1.doubleValue()) {
  162.             return -1;
  163.          } else {
  164.             return var0.doubleValue() > var1.doubleValue() ? 1 : 0;
  165.          }
  166.       } else if (var2.equals(classByte)) {
  167.          if (var0.byteValue() < var1.byteValue()) {
  168.             return -1;
  169.          } else {
  170.             return var0.byteValue() > var1.byteValue() ? 1 : 0;
  171.          }
  172.       } else if (var2.equals(classShort)) {
  173.          if (var0.shortValue() < var1.shortValue()) {
  174.             return -1;
  175.          } else {
  176.             return var0.shortValue() > var1.shortValue() ? 1 : 0;
  177.          }
  178.       } else if (var2.equals(classBigInteger)) {
  179.          return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).compareTo(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
  180.       } else if (var2.equals(classBigDecimal)) {
  181.          return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).compareTo(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()));
  182.       } else {
  183.          throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
  184.       }
  185.    }
  186. }
  187.