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 }