Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

atcl:type [2018/05/10 11:22] (текущий)
nektomk создано
Строка 1: Строка 1:
 +====== Поддержка типов MQL ======
  
 +Все данные внутри Tcl инкапсулируются в виде объекта Tcl_Obj. Библиотека ATcl представляет программисту унифицированный интерфейс для конверсий типов MQL в Tcl_Obj и обратно
 +
 +В общем случае методы поддержки типов выглядят так:
 +<code c>
 +// type - поддерживаемый тип MQL
 +// создание объекта из значения или массива
 +Tcl_Obj Obj(type value);
 +Tcl_Obj Obj(type &​array[],​int pos=0,int count=WHOLE_ARRAY);​
 +
 +// получение значения из объекта
 +int ToType(Tcl_Obj obj,type &​valueRef);​ //​ если удачно вернёт TCL_OK, значение сохранит по ссылке
 +type Type(Tcl_Obj obj,type defaultValue);​ // конвертировать,​ при неудаче вернуть default
 +type Type(Tcl_Obj obj,int nth,type defaultValue);​ // получить nth элемент списка
 +
 +// присвоение значения переменной
 +Tcl_Obj Set(Tcl_Obj varObj,type value);
 +Tcl_Obj Set(string varName,​type value);
 +
 +// получение значения переменной
 +type Get(Tcl_Obj varObj,type defaultValue);​ // конвертировать значение в тип, при неудаче вернуть default
 +
 +// выполнить команду/​скрипт и сразу получить результат
 +type TypeEval(string script,type defaultValue);​
 +type TypeEval(Tcl_Obj scriptObj,​type defaultValue);​
 +type TypeCall(Tcl_Obj &​objv[],​int objc,type defaultValue);​
 +
 +// получить результат последней команды как type
 +type TypeResult();​
 +</​code>​
 +
 +На уровне библиотеки полностью поддерживаются типы [[Long|long]],​ [[Double|double]],​ [[String|string]],​ [[Datetime|datetime]] ; частично поддерживаются специальные типы [[MqlRates]] [[MqlTick]]