--- /dev/null
+package IR.Tree;
+
+import IR.*;
+
+public class FlagEffect {
+ FlagDescriptor flag;
+ boolean status;
+ String name;
+
+ public FlagEffect(String flag, boolean status) {
+ this.name=flag;
+ this.status=status;
+ }
+
+ public void setFlag(FlagDescriptor flag) {
+ this.flag=flag;
+ }
+
+ public FlagDescriptor getFlag() {
+ return flag;
+ }
+
+ public int kind() {
+ return Kind.FlagNode;
+ }
+
+ public String printNode(int indent) {
+ if (status)
+ return name;
+ else
+ return "!"+name;
+ }
+}
--- /dev/null
+package IR.Tree;
+
+import IR.*;
+
+public class FlagEffects {
+ Vector effects;
+ String name;
+
+ public FlagEffects(String name) {
+ this.name=name;
+ effects=new Vector();
+ }
+
+ public void addEffect(FlagEffect fe) {
+ effects.add(fe);
+ }
+
+ public String printNode(int indent) {
+ String st=name+"(";
+ for(int i=0;i<effects.size();i++) {
+ FlagEffect fe=(FlagEffect)effects.get(i);
+ st+=fe.printNode(0);
+ if ((i+1)!=effects.size())
+ st+=",";
+ }
+ return st+")";
+ }
+}