Различия

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

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

en:atcl:class [2018/01/27 11:52] (текущий)
nektomk создано
Строка 1: Строка 1:
 +====== class ATcl ======
 +<code c>
 +class ATcl {
 +protected:
 +   ​Tcl_Interp interp;
 +public:
 +   ​ATcl(bool safe=false); ​ // создание нового инерпретатора
 +   ​ATcl(Tcl_Interp); ​      // создание объекта из готового интерпретатора
  
 +   ​Tcl_Interp CreateSlave(string name,bool safe=false);​ // создать дочерный интерпретатор
 +   ​Tcl_Interp CreateSlave(Tcl_Obj name,bool safe=false);​
 +
 +   ​Tcl_Interp Interp(); // получить интерпретатор (например для вызова Tcl C API)
 +   
 +   ​~ATcl();​
 +   
 +   bool Ready(); ​ // =true если можно исполнять команды
 +   int Update(); // запустить проход EventLoop
 +   
 +   // MQL specific handlers
 +   int OnInit();
 +   void OnDeinit(const int reason);
 +   void OnTimer();
 +   void OnChartEvent();​
 +   void OnChartEvent(const int id,const long lparam,​const double dparam,​const string sparam);
 +
 +   // Objects
 +   ​Tcl_Obj Obj(); ​            // создать пустой временный объект
 +   ​Tcl_Obj Ref(Tcl_Obj obj);  // увеличить счётчик ссылок
 +   ​Tcl_Obj Unref(Tcl_Obj obj);// уменьшить счётчик ссылок,​ удалить объект при обнулении
 +   int Shared(Tcl_Obj obj);   // =true если объект зашарен и не может быть изменнён
 +   ​Tcl_Obj Clone(Tcl_Obj obj);// дублировать объект
 +   
 +   ​Tcl_Obj Obj(MqlTick &​tick); ​  // список из структуры tick: time bid ask last volume flags time_msc
 +   ​Tcl_Obj Obj(MqlRates &​rates);​ // список из структуры rates: time open high low close tick_volume spread real_volume
 +   ///////////////////////////////  ​
 +   // Исполнение команд и скриптов
 +   ///////////////////////////////​
 +   // методы возвращают код реультата:​ (стандартные коды: TCL_OK - успех, TCL_ERROR, TCL_BREAK,​TCL_CONTINUE)
 +   // и сохраняют объект-"​результат",​ который можно потом получить методоми Result(),​StringResult(),​...
 +   // Флаги: TCL_EVAL_GLOBAL - исполнять на глобальном уровне,​ TCL_EVAL_DIRECT - исполнять сразу, без компиляции
 +   int Eval(string script,int flags=0);
 +   int Eval(Tcl_Obj script,int flags=0);
 +   ​Tcl_Obj ObjEval(string script,int flags=0); ​ // simplified - Eval and return Result as Tcl_Obj
 +   ​Tcl_Obj ObjEval(Tcl_Obj script,int flags=0);
 +   
 +   int Call(Tcl_Obj &​objv[],​int flags=0);
 +   int Call(Tcl_Obj obj1,​Tcl_Obj obj2=0,​Tcl_Obj obj3=0,​Tcl_Obj obj4=0,​Tcl_Obj obj5=0,​Tcl_Obj obj6=0,​Tcl_Obj obj7=0,​Tcl_Obj obj8=0,​Tcl_Obj obj9=0,​Tcl_Obj obj10=0,​Tcl_Obj obj11=0);
 +   
 +   ​Tcl_Obj ObjCall(Tcl_Obj &​objv[],​int flags=0);// simplified - Call and return Result as Tcl_Obj
 +   ​Tcl_Obj ObjCall(Tcl_Obj obj1,​Tcl_Obj obj2=0,​Tcl_Obj obj3=0,​Tcl_Obj obj4=0,​Tcl_Obj obj5=0,​Tcl_Obj obj6=0,​Tcl_Obj obj7=0,​Tcl_Obj obj8=0,​Tcl_Obj obj9=0,​Tcl_Obj obj10=0,​Tcl_Obj obj11=0);
 +   
 +   ​Tcl_Obj Result(int ignoreThis=0); ​ // получить объект-результат
 +   ​int ​  ​ResetResult(); ​            // сбросить(обнулить) результат
 +
 +   ////////////////////////////////////////​
 +   // Source - чтение и исполнение скриптов
 +   //////////////////////////////////////// ​
 +   // use : Eval("​source filename.tcl"​) оr Call("​source","​filename.tcl"​);​
 +   // int Source(const string fileName,​const string encoding=""​);​
 +   // int Source(Tcl_Obj fileName,​Tcl_Obj encoding=0);​
 +
 +   /////////////////​
 +   // List - Списки
 +   /////////////////​
 +   ​Tcl_Obj ListIndex(Tcl_Obj obj,int index=0);
 +   ​Tcl_Obj ObjIndex(Tcl_Obj obj,int index=0); ​  // alias ListIndex
 +   
 +   int ListLength(Tcl_Obj obj);  // =кол-во элементов списка
 +   int Count(Tcl_Obj obj);       // синоним
 +   
 +   int ListAppend(Tcl_Obj list,​Tcl_Obj element); ​  // добавить эл-т к списку. список должен быть !Shared()
 +   int Append(Tcl_Obj list,​Tcl_Obj element); // синоним
 +   
 +   /////////////////////////////////////////​
 +   // Set: задать объект-значение переменной
 +   /////////////////////////////////////////​
 +   // аналог в tcl: set var $value ; set hash($key) $value ​
 +   ​Tcl_Obj Set(Tcl_Obj var,Tcl_Obj value);
 +   ​Tcl_Obj Set(Tcl_Obj hash,​Tcl_Obj key,Tcl_Obj value);
 +   ​Tcl_Obj Set(string var,Tcl_Obj value);
 +   ​Tcl_Obj Set(string hash,string key,Tcl_Obj value);
 +   
 +   ///////////////////////////////////////////​
 +   // Get: получить значение переменной в виде объекта
 +   //////////////////////////////////////////​
 +   // аналог в tcl: set var ; set hash($key)
 +   ​Tcl_Obj Get(Tcl_Obj var);
 +   ​Tcl_Obj Get(Tcl_Obj hash,​Tcl_Obj key);
 +   ​Tcl_Obj Get(string var);
 +   ​Tcl_Obj Get(string hash,string key);
 +   
 +   // IsSet: проверить существование переменной
 +   int IsSet(Tcl_Obj var);
 +   int IsSet(Tcl_Obj hash,​Tcl_Obj key);
 +   int IsSet(string var);
 +   int IsSet(string hash,string key);
 +   
 +   // IsArray - проверить что hash это действительно хеш :-)
 +   int IsArray(Tcl_Obj hash);
 +   int IsArray(string hash);
 +   
 +   // Unset: удалить переменную или элемент хеша
 +   int Unset(Tcl_Obj var);
 +   int Unset(Tcl_Obj hash,​Tcl_Obj key);
 +   int Unset(string var);
 +   int Unset(string hash,string key);
 +   
 +   // Link: связать скалярную переменную с элементом массива
 +   int Link(double &​arr[],​int pos,Tcl_Obj hash,​Tcl_Obj key=0);
 +   int Link(double &​arr[],​int pos,string hash,string key=""​);​
 +   // Unlink: разорвать свзяь
 +   int Unlink(Tcl_Obj hash,​Tcl_Obj key=0);
 +   int Unlink(string hash,string key=""​);​
 +
 +   //////////////////////////​
 +   // Double
 +   ​Tcl_Obj Obj(double); ​               // создать объект из double
 +   ​Tcl_Obj Obj(const double &​arr[],​int pos=0,int count=WHOLE_ARRAY);​ // создать объект из массива double
 +   ​double Double(Tcl_Obj); ​            // конвертировать объект в double
 +   ​double Double(Tcl_Obj,​int index); ​  // получить эл-т списка как double ​  
 +   ​double DoubleResult(int ignoreThis=0); ​ // получить последний результат как double
 +   // упрощенный доступ к Call,​Eval ​  
 +   // исполнить скрипт и срузу получить результат как double (0 при ошибке)
 +   ​double DoubleEval(string script,int flags=0); ​
 +   ​double DoubleEval(Tcl_Obj script,int flags=0);
 +   // вызвать команду и сразу получить результат как double
 +   ​double DoubleCall(Tcl_Obj command,​Tcl_Obj arg1=0,​Tcl_Obj arg2=0,​Tcl_Obj arg3=0,​Tcl_Obj arg4=0,​Tcl_Obj arg5=0,​Tcl_Obj arg6=0,​Tcl_Obj arg7=0,​Tcl_Obj arg8=0,​Tcl_Obj arg9=0,​Tcl_Obj arg10=0);
 +   ​double DoubleCall(Tcl_Obj &​objv[],​int objc=WHOLE_ARRAY);​
 +   
 +   ///////////////////////////​
 +   // String
 +   ​Tcl_Obj Obj(string);​
 +   ​Tcl_Obj Obj(const string &​arr[],​int pos=0,int count=WHOLE_ARRAY);​
 +   ​string String(Tcl_Obj);​
 +   ​string String(Tcl_Obj,​int index);
 +   ​string StringResult(int ignoreThis=0);​
 +   
 +   ​string StringEval(string script,int flags=0); ​
 +   ​string StringEval(Tcl_Obj script,int flags=0);
 +   ​string StringCall(Tcl_Obj command,​Tcl_Obj arg1=0,​Tcl_Obj arg2=0,​Tcl_Obj arg3=0,​Tcl_Obj arg4=0,​Tcl_Obj arg5=0,​Tcl_Obj arg6=0,​Tcl_Obj arg7=0,​Tcl_Obj arg8=0,​Tcl_Obj arg9=0,​Tcl_Obj arg10=0);
 +   ​string StringCall(Tcl_Obj &​objv[],​int objc=WHOLE_ARRAY);​
 +   
 +   int StringLength(Tcl_Obj);​
 +   
 +   ///////////////////////////​
 +   // Long
 +   ​Tcl_Obj Obj(long);
 +   ​Tcl_Obj Obj(const long &​arr[],​int pos=0,int count=WHOLE_ARRAY);​
 +   long Long(Tcl_Obj);​
 +   long Long(Tcl_Obj,​int index);
 +   long LongResult(int ignoreThis=0);​
 +   
 +   long LongEval(string script,int flags=0); ​
 +   long LongEval(Tcl_Obj script,int flags=0);
 +   long LongCall(Tcl_Obj command,​Tcl_Obj arg1=0,​Tcl_Obj arg2=0,​Tcl_Obj arg3=0,​Tcl_Obj arg4=0,​Tcl_Obj arg5=0,​Tcl_Obj arg6=0,​Tcl_Obj arg7=0,​Tcl_Obj arg8=0,​Tcl_Obj arg9=0,​Tcl_Obj arg10=0);
 +   long LongCall(Tcl_Obj &​objv[],​int objc=WHOLE_ARRAY);​
 +   
 +   ///////////////////////////​
 +   // Datetime
 +   ​Tcl_Obj Obj(datetime);​
 +   ​Tcl_Obj Obj(const datetime &​arr[],​int pos=0,int count=WHOLE_ARRAY);​
 +   ​datetime Datetime(Tcl_Obj);​
 +   ​datetime Datetime(Tcl_Obj,​int index);
 +   ​datetime DatetimeResult(int ignoreThis=0);​
 +   
 +   ​datetime DatetimeEval(string script,int flags=0); ​
 +   ​datetime DatetimeEval(Tcl_Obj script,int flags=0);
 +   ​datetime DatetimeCall(Tcl_Obj command,​Tcl_Obj arg1=0,​Tcl_Obj arg2=0,​Tcl_Obj arg3=0,​Tcl_Obj arg4=0,​Tcl_Obj arg5=0,​Tcl_Obj arg6=0,​Tcl_Obj arg7=0,​Tcl_Obj arg8=0,​Tcl_Obj arg9=0,​Tcl_Obj arg10=0);
 +   ​datetime DatetimeCall(Tcl_Obj &​objv[],​int objc=WHOLE_ARRAY);​
 +   
 +};
 +</​code>​
 +FIXME **Эта страница пока что не переведена полностью. Пожалуйста,​ помогите завершить перевод.**\\ //​(Сотрите это сообщение по окончании перевода.)//​