Call

Вызов команд tcl

int Call(Tcl_Obj &objv[],int objc=WHOLE_ARRAY,int flags=0);
int Call(Tcl_Obj command,Tcl_Obj arg1,...);
 
Tcl_Obj ObjCall(Tcl_Obj &objv[],int objc=WHOLE_ARRAY,int flags=0);
Tcl_Obj ObjCall(Tcl_Obj command,Tcl_Obj arg1,...);
 
string StringCall(Tcl_Obj &objv[],int objc=WHOLE_ARRAY,int flags=0);
string StringCall(Tcl_Obj command,Tcl_Obj arg1,...);
...
 

Call вызывает команду интерпретатора и передаёт ей аргументы в виде Tcl_Obj. Аргументы могут быть переданны в виде массива(без ограничений на количество) или непосредственно до 10 шт. Возвращаемые значения и их интерпретация аналогичны Eval

Пример:

ATcl *tcl=new ATcl;
...
Tcl_Obj cmd=tcl.Ref(tcl.Obj("join")); // создать постоянный объект 
if (tcl.Call(cmd,tcl.Obj("one two three"),tcl.Obj(","))!=TCL_OK) {
	Print("Error in command");	  
} else {
  	PrintFormat("joined: %s",StringResult()); // "joined : one,two,three"
}
PrintFormat("Another: %s",StringCall(cmd,tcl.Obj("1 2 3"),tcl.Obj(";")) ); // "Another: 1;2;3"