001 package toolbus.environment;
002
003 import toolbus.TBTermVar;
004 import aterm.ATerm;
005
006 /**
007 * Binding implements one (variable, value) pair.
008 */
009 public class Binding{
010 final TBTermVar var; // The variable in question
011 ATerm val; // Its value
012 private final String name; // Its cached name (for efficiency)
013
014 private boolean formal = false; // Is this a formal parameter or a local variable?
015 private boolean assignable = false; // Are there assignments to this variable in the current
016 // process expression?
017
018 public Binding(TBTermVar var, ATerm val, boolean isFormal){
019 this.var = var;
020 this.val = val;
021 this.formal = isFormal;
022 name = var.getVarName();
023 }
024
025 public Binding(TBTermVar var, ATerm val){
026 this(var, val, true);
027 }
028
029 public TBTermVar getVar(){
030 return var;
031 }
032
033 public ATerm getVal(){
034 return val;
035 }
036
037 public boolean isFormal(){
038 return formal;
039 }
040
041 public void setFormal(boolean b){
042 formal = b;
043 }
044
045 public boolean isAssignable(){
046 return assignable;
047 }
048
049 public void setAssignable(boolean b){
050 assignable = b;
051 }
052
053 public String getName(){
054 return name;
055 }
056
057 public String toString(){
058 String op = isFormal() ? ":->" : " : ";
059 if(assignable) op += "@";
060 return var + " " + op + " " + val;
061 }
062 }