00001 package edu.ksu.cis.bandera.jext;
00002
00003 import ca.mcgill.sable.soot.*;
00004 import ca.mcgill.sable.soot.grimp.*;
00005 import ca.mcgill.sable.soot.jimple.*;
00006 import ca.mcgill.sable.util.*;
00007
00008
00009
00010
00011
00012 public class LogicalNotExpr implements Expr {
00013 private ValueBox op;
00014 public LogicalNotExpr(Value v) { this(Grimp.v().newArgBox(v)); }
00015 public LogicalNotExpr(ValueBox v) { op = v; }
00016
00017
00018
00019 public void apply(Switch sw)
00020 {
00021 ((PAExprSwitch) sw).caseLogicalNotExpr(this);
00022 }
00023 public String getSymbol() { return "!"; }
00024
00025
00026
00027 public Type getType() {
00028 return BooleanType.v();
00029 }
00030
00031
00032
00033 public List getUseBoxes() {
00034 ca.mcgill.sable.util.List list = new ca.mcgill.sable.util.ArrayList();
00035 list.addAll(op.getValue().getUseBoxes());
00036 list.add(op);
00037 return list;
00038 }
00039
00040
00041
00042 public String toBriefString() {
00043 return getSymbol() + ((ToBriefString)op).toBriefString();
00044 }
00045 public String toString()
00046 {
00047 return getSymbol() + op.toString();
00048 }
00049 }