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    }