001    package toolbus;
002    
003    import aterm.AFun;
004    import aterm.ATerm;
005    import aterm.ATermAppl;
006    import aterm.ATermList;
007    
008    public class TBTermVar extends AbstractTBTerm{
009            
010            public TBTermVar(TBTermFactory tbfactory, ATermList annos, AFun fun, ATerm[] args){
011                    super(tbfactory, annos, fun, args);
012            }
013            
014            public shared.SharedObject duplicate(){
015                    return this;
016            }
017            
018            public boolean equivalent(shared.SharedObject peer){
019                    if(peer instanceof TBTermVar){
020                            return super.equivalent(peer);
021                    }
022                    return false;
023            }
024            
025            public int getType(){
026                    return TBTermFactory.VAR;
027            }
028            
029            public String getVarName(){
030                    return ((ATermAppl) getArgument(1)).getName();
031            }
032            
033            public String getExternalVarName(){
034                    String name = getVarName();
035                    int i = name.indexOf('$');
036                    if(i > 0) return name.substring(0, i);
037                    
038                    return name;
039            }
040            
041            public ATerm getVarType(){
042                    return getArgument(0);
043            }
044            
045            public TBTermVar setVarType(ATerm tp){
046                    TBTermVar v = tbfactory.makeTBTermVar(getVarName(), tp, getArgument(2));
047                    // System.err.println("setVarType(" + tp + "): " + this + " => " + v);
048                    return v;
049            }
050            
051            public boolean isResultVar(){
052                    return getArgument(2) == tbfactory.True;
053            }
054    }