Поделиться ... Twitter Facebook Интерфейс класса ATcl 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); };