Obj

Объекты Tcl представлены в библиотеке деcкрипторами типа Tcl_Obj. Для создания объектов из значений MQL служат методы Obj, диспетчеризуемые от типа передаваемого аргумента.

Tcl_Obj Obj();
 
Tcl_Obj Obj(string);
Tcl_Obj Obj(double);
Tcl_Obj Obj(long);
 
Tcl_Obj Obj(const string &stringArray[],int pos=0,int count=WHOLE_ARRAY);  
Tcl_Obj Obj(const double &doubleArray[],int pos=0,int count=WHOLE_ARRAY);  
Tcl_Obj Obj(const long &longArray[],int pos=0,int count=WHOLE_ARRAY);  

Метод Obj() создаёт пустой объект, Obj(string) создаёт объект из строки, и так далее. Также возможно создание объектов-списков из массивов с учётом серийности последних.

Все методы Obj создают временный объект который автоматически будет удалён после первого использования (за исключением получения строки и индекса). Для многократного использования необходимо дополнительно применять метод Ref.

Пример:

Tcl_Obj stringObj=tcl.Obj("String object"); // временный объект, будет удалён после использования
Tcl_Obj doubleObj=tcl.Ref(tcl.Obj(11.235)); // для удаления нужен Unref
string result=tcl.Call(tcl.Obj("concat"),stringObj,doubleObj); // типично - вызов Obj(xx) при формирование параметров
PrintFormat("result=%s",result);
tcl.Unref(doubleObj);	// удалить объект 

см.также

  • String Double Long - «обратное» преобразование, объект→ значение
  • Ref - управление ссылками на объект
  • Clone - создание дубликатов объекта