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 }