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 / NotExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  2.4 KB  |  70 lines

  1. package sun.tools.tree;
  2.  
  3. import java.util.Hashtable;
  4. import sun.tools.asm.Assembler;
  5. import sun.tools.asm.Label;
  6. import sun.tools.java.Environment;
  7. import sun.tools.java.Type;
  8.  
  9. public class NotExpression extends UnaryExpression {
  10.    public NotExpression(int var1, Expression var2) {
  11.       super(37, var1, Type.tBoolean, var2);
  12.    }
  13.  
  14.    void selectType(Environment var1, Context var2, int var3) {
  15.       super.right = ((Node)this).convert(var1, var2, Type.tBoolean, super.right);
  16.    }
  17.  
  18.    public void checkCondition(Environment var1, Context var2, Vset var3, Hashtable var4, ConditionVars var5) {
  19.       super.right.checkCondition(var1, var2, var3, var4, var5);
  20.       super.right = ((Node)this).convert(var1, var2, Type.tBoolean, super.right);
  21.       Vset var6 = var5.vsFalse;
  22.       var5.vsFalse = var5.vsTrue;
  23.       var5.vsTrue = var6;
  24.    }
  25.  
  26.    Expression eval(boolean var1) {
  27.       return new BooleanExpression(super.where, !var1);
  28.    }
  29.  
  30.    Expression simplify() {
  31.       switch (super.right.op) {
  32.          case 19:
  33.          case 20:
  34.          case 21:
  35.          case 22:
  36.          case 23:
  37.          case 24:
  38.             BinaryExpression var1 = (BinaryExpression)super.right;
  39.             if (var1.left.type.inMask(192)) {
  40.                return this;
  41.             } else {
  42.                switch (super.right.op) {
  43.                   case 19:
  44.                      return new EqualExpression(super.where, var1.left, var1.right);
  45.                   case 20:
  46.                      return new NotEqualExpression(super.where, var1.left, var1.right);
  47.                   case 21:
  48.                      return new LessExpression(super.where, var1.left, var1.right);
  49.                   case 22:
  50.                      return new LessOrEqualExpression(super.where, var1.left, var1.right);
  51.                   case 23:
  52.                      return new GreaterExpression(super.where, var1.left, var1.right);
  53.                   case 24:
  54.                      return new GreaterOrEqualExpression(super.where, var1.left, var1.right);
  55.                   default:
  56.                      return this;
  57.                }
  58.             }
  59.          case 37:
  60.             return ((NotExpression)super.right).right;
  61.          default:
  62.             return this;
  63.       }
  64.    }
  65.  
  66.    void codeBranch(Environment var1, Context var2, Assembler var3, Label var4, boolean var5) {
  67.       super.right.codeBranch(var1, var2, var3, var4, !var5);
  68.    }
  69. }
  70.