home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / tools / tree / ConvertExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  3.6 KB  |  138 lines

  1. package sun.tools.tree;
  2.  
  3. import java.io.PrintStream;
  4. import java.util.Hashtable;
  5. import sun.tools.asm.Assembler;
  6. import sun.tools.java.ClassNotFound;
  7. import sun.tools.java.CompilerError;
  8. import sun.tools.java.Constants;
  9. import sun.tools.java.Environment;
  10. import sun.tools.java.Type;
  11.  
  12. public class ConvertExpression extends UnaryExpression {
  13.    public ConvertExpression(int var1, Type var2, Expression var3) {
  14.       super(55, var1, var2, var3);
  15.    }
  16.  
  17.    public Vset checkValue(Environment var1, Context var2, Vset var3, Hashtable var4) {
  18.       return super.right.checkValue(var1, var2, var3, var4);
  19.    }
  20.  
  21.    Expression simplify() {
  22.       switch (super.right.op) {
  23.          case 62:
  24.          case 63:
  25.          case 64:
  26.          case 65:
  27.             int var5 = ((IntegerExpression)super.right).value;
  28.             switch (super.type.getTypeCode()) {
  29.                case 1:
  30.                   return new ByteExpression(super.right.where, (byte)var5);
  31.                case 2:
  32.                   return new CharExpression(super.right.where, (char)var5);
  33.                case 3:
  34.                   return new ShortExpression(super.right.where, (short)var5);
  35.                case 4:
  36.                   return new IntExpression(super.right.where, var5);
  37.                case 5:
  38.                   return new LongExpression(super.right.where, (long)var5);
  39.                case 6:
  40.                   return new FloatExpression(super.right.where, (float)var5);
  41.                case 7:
  42.                   return new DoubleExpression(super.right.where, (double)var5);
  43.                default:
  44.                   return this;
  45.             }
  46.          case 66:
  47.             long var4 = ((LongExpression)super.right).value;
  48.             switch (super.type.getTypeCode()) {
  49.                case 1:
  50.                   return new ByteExpression(super.right.where, (byte)((int)var4));
  51.                case 2:
  52.                   return new CharExpression(super.right.where, (char)((int)var4));
  53.                case 3:
  54.                   return new ShortExpression(super.right.where, (short)((int)var4));
  55.                case 4:
  56.                   return new IntExpression(super.right.where, (int)var4);
  57.                case 5:
  58.                default:
  59.                   return this;
  60.                case 6:
  61.                   return new FloatExpression(super.right.where, (float)var4);
  62.                case 7:
  63.                   return new DoubleExpression(super.right.where, (double)var4);
  64.             }
  65.          case 67:
  66.             float var3 = ((FloatExpression)super.right).value;
  67.             switch (super.type.getTypeCode()) {
  68.                case 1:
  69.                   return new ByteExpression(super.right.where, (byte)((int)var3));
  70.                case 2:
  71.                   return new CharExpression(super.right.where, (char)((int)var3));
  72.                case 3:
  73.                   return new ShortExpression(super.right.where, (short)((int)var3));
  74.                case 4:
  75.                   return new IntExpression(super.right.where, (int)var3);
  76.                case 5:
  77.                   return new LongExpression(super.right.where, (long)var3);
  78.                case 6:
  79.                default:
  80.                   return this;
  81.                case 7:
  82.                   return new DoubleExpression(super.right.where, (double)var3);
  83.             }
  84.          case 68:
  85.             double var1 = ((DoubleExpression)super.right).value;
  86.             switch (super.type.getTypeCode()) {
  87.                case 1:
  88.                   return new ByteExpression(super.right.where, (byte)((int)var1));
  89.                case 2:
  90.                   return new CharExpression(super.right.where, (char)((int)var1));
  91.                case 3:
  92.                   return new ShortExpression(super.right.where, (short)((int)var1));
  93.                case 4:
  94.                   return new IntExpression(super.right.where, (int)var1);
  95.                case 5:
  96.                   return new LongExpression(super.right.where, (long)var1);
  97.                case 6:
  98.                   return new FloatExpression(super.right.where, (float)var1);
  99.             }
  100.       }
  101.  
  102.       return this;
  103.    }
  104.  
  105.    public boolean equals(int var1) {
  106.       return super.right.equals(var1);
  107.    }
  108.  
  109.    public boolean equals(boolean var1) {
  110.       return super.right.equals(var1);
  111.    }
  112.  
  113.    public Expression inline(Environment var1, Context var2) {
  114.       if (super.right.type.inMask(1792) && super.type.inMask(1792)) {
  115.          try {
  116.             if (!var1.implicitCast(super.right.type, super.type)) {
  117.                return ((UnaryExpression)this).inlineValue(var1, var2);
  118.             }
  119.          } catch (ClassNotFound var4) {
  120.             throw new CompilerError(var4);
  121.          }
  122.       }
  123.  
  124.       return super.inline(var1, var2);
  125.    }
  126.  
  127.    public void codeValue(Environment var1, Context var2, Assembler var3) {
  128.       super.right.codeValue(var1, var2, var3);
  129.       ((Expression)this).codeConversion(var1, var2, var3, super.right.type, super.type);
  130.    }
  131.  
  132.    public void print(PrintStream var1) {
  133.       var1.print("(" + Constants.opNames[super.op] + " " + super.type.toString() + " ");
  134.       super.right.print(var1);
  135.       var1.print(")");
  136.    }
  137. }
  138.