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 }