00001 package edu.ksu.cis.bandera.jext;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 import ca.mcgill.sable.soot.*;
00036 import ca.mcgill.sable.soot.jimple.*;
00037 import ca.mcgill.sable.soot.grimp.*;
00038 import ca.mcgill.sable.util.*;
00039 import java.util.*;
00040 public class LogicalOrExpr implements BinopExpr, ToBriefString {
00041 protected ValueBox op1Box;
00042 protected ValueBox op2Box;
00043
00044
00045
00046
00047
00048 public LogicalOrExpr(Value v1, Value v2) {
00049 this(Grimp.v().newArgBox(v1), Grimp.v().newArgBox(v2));
00050 }
00051
00052
00053
00054
00055
00056 public LogicalOrExpr(ValueBox valueBox1, ValueBox valueBox2) {
00057 op1Box = valueBox1;
00058 op2Box = valueBox2;
00059 }
00060
00061
00062
00063
00064 public void apply(Switch sw) {
00065 ((BanderaExprSwitch) sw).caseLogicalOrExpr(this);
00066 }
00067
00068
00069
00070 public Value getOp1() {
00071 return op1Box.getValue();
00072 }
00073
00074
00075
00076 public ValueBox getOp1Box() {
00077 return op1Box;
00078 }
00079
00080
00081
00082 public Value getOp2() {
00083 return op2Box.getValue();
00084 }
00085
00086
00087
00088 public ValueBox getOp2Box() {
00089 return op2Box;
00090 }
00091
00092
00093
00094 public String getSymbol() {
00095 return " || ";
00096 }
00097
00098
00099
00100 public ca.mcgill.sable.soot.Type getType() {
00101 return ca.mcgill.sable.soot.BooleanType.v();
00102 }
00103
00104
00105
00106 public ca.mcgill.sable.util.List getUseBoxes() {
00107 ca.mcgill.sable.util.List list = new ca.mcgill.sable.util.ArrayList();
00108
00109 list.addAll(op1Box.getValue().getUseBoxes());
00110 list.add(op1Box);
00111 list.addAll(op2Box.getValue().getUseBoxes());
00112 list.add(op2Box);
00113
00114 return list;
00115 }
00116
00117
00118
00119 public void setOp1(Value op1) {
00120 op1Box.setValue(op1);
00121 }
00122
00123
00124
00125 public void setOp2(Value op2) {
00126 op2Box.setValue(op2);
00127 }
00128
00129
00130
00131 public String toBriefString() {
00132 Value op1 = op1Box.getValue(), op2 = op2Box.getValue();
00133 String leftOp = ((ToBriefString)op1).toBriefString(),
00134 rightOp = ((ToBriefString)op2).toBriefString();
00135
00136 return leftOp + getSymbol() + rightOp;
00137 }
00138
00139
00140
00141
00142 public String toString() {
00143 Value op1 = op1Box.getValue(), op2 = op2Box.getValue();
00144 String leftOp = op1.toString(), rightOp = op2.toString();
00145
00146 return leftOp + getSymbol() + rightOp;
00147 }
00148 }