//+------------------------------------------------------------------+ //| Def.mqh | //| Copyright 2026, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, MetaQuotes Ltd." #property link "https://www.mql5.com" #property strict #ifndef BASESPARSERSLAN_SRC_QUERY_DEF_MQH #define BASESPARSERSLAN_SRC_QUERY_DEF_MQH //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #include "..\\DomImp.mqh" #include "Table\\T.mqh" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ namespace TSN { //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // PB = path bytes #define TSN_DOMPATH_REGTYPE_JSONPB (0) // foramto asm de path #define TSN_DOMPATH_REGTYPE_JSONPASM (1) //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #define TSN_DOMPATH_MAX_DEPTH_ITER (128) #define TSN_DOMPATH_MAX_SIZE_REG (512) #define TSN_DOMPATH_MAX_SIZE_STR (256) #define TSN_DOMPATH_MAX_SIZE_DNODES (256) //+------------------------------------------------------------------+ //| Mascaras bits | //+------------------------------------------------------------------+ #define TSN_DOMPATH_MASK_INS_TYPE (0xff) #define TSN_DOMPATH_BIT_INS_ETYPE (8) #define TSN_DOMPATH_MASK_COMPARE (0xf) //--- Indices de registros mascara de 28 bits siempre #define TSN_DOMPATH_INS_MASK_INDEX_REG (0xfffffff) #define TSN_DOMPATH_INS_MASK_INDEX_JMP (0xfffffff) //--- Accceso index jump #define TSN_DOMPATH_INS_ACCESO_INDEX_JUMP_BIT_S (36) #define TSN_DOMPATH_INS_MASK_INDEX_ACCES (0xfffffff) //--- Iteracion #define TSN_DOMPATH_INS_ITER_MASK_JUMP (0xfffffff) #define TSN_DOMPATH_INS_BIT_START_ITER_TYPE_ACCEP (36) #define TSN_DOMPATH_INS_ITER_ALL_TYPES (0xff) //--- Instruccion save #define TSN_DOMPATH_INS_SAVE_BIT_START_INS_IX (32) //--- Math \ Compare //--- form #define TSN_DOMPATH_INS_MATH_BIT_START_REG_2 (36) #define TSN_DOMPATH_INS_MATH_BIT_START_FORM_T (28) #define TSN_DOMPATH_INS_MATH_BIT_START_REG_A (2) #define TSN_DOMPATH_INS_MATH_MASK_TYPE (2) #define TSN_DOMPATH_INS_MATH_BIT_GET_C(v) (int(v >> TSN_DOMPATH_INS_MATH_BIT_START_REG_2)) #define TSN_DOMPATH_INS_MATH_BIT_GET_B(v) (int(v >> TSN_DOMPATH_BIT_INS_ETYPE) & TSN_DOMPATH_INS_MASK_INDEX_REG) #define TSN_DOMPATH_INS_MATH_BIT_GET_A(v) (int(v & TSN_DOMPATH_INS_MASK_INDEX_REG)) //--- jump cmp #define TSN_DOMPATH_BIT_INS_JUMP_MASK_CMP (0xfffffff) #define TSN_DOMPATH_BIT_INS_JUMP_START_CMPFALSE (2) #define TSN_DOMPATH_BIT_INS_GET_JUMP(v) (int(v >> TSN_DOMPATH_BIT_INS_JUMP_START_CMPFALSE) & TSN_DOMPATH_BIT_INS_JUMP_MASK_CMP) //- mask para valor esperado cmp #define TSN_DOMPATH_BIT_INS_MASK_CMP (1) //- math jump en caos error #define TSN_DOMPATH_BIT_INS_JUMP_START_MATHERR (28) //-- #define TSN_DOMPATH_BIT_INS_JUMP_START_UNARY_MATHERR (36) //--- IS especifico #define TSN_DOMPATH_BIT_INS_JUMP_START_CMPIS_FALSE (36) //--- save jump fail #define TSN_DOMPATH_BIT_INS_SAVEPTR_JUMP_BIT_START (36) //--- funciones #define TSN_DOMPATH_BIT_INS_BIT_START_NARGS (36) //--- slicing completo #define TSN_DOMPATH_BIT_INS_BIT_START_SLSTART (36) #define TSN_DOMPATH_BIT_INS_MASK_SLMASK (0xfffffff) #define TSN_DOMPATH_BIT_INS_BIT_START_SLPASO (28) //--- #define TSN_DOMPATH_CREATE_MASK(s, mask) (~((long)mask << s)) //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //--- #define DOMPATHV_TYPE_INV 6 #define DOMPATHV_TYPE_ARR 5 #define DOMPATHV_TYPE_OBJ 4 #define DOMPATHV_TYPE_STR 3 #define DOMPATHV_TYPE_FLT 2 #define DOMPATHV_TYPE_INT 1 #define DOMPATHV_TYPE_BOL 0 //--- #define DOMPATHV_F_INV 64 #define DOMPATHV_F_ARR 32 #define DOMPATHV_F_OBJ 16 #define DOMPATHV_F_STR 8 #define DOMPATHV_F_FLT 4 #define DOMPATHV_F_INT 2 #define DOMPATHV_F_BOL 1 //--- struct pack(8) DomPathV { /* //--- DomPathV(const long lv) : tt(DOMPATHV_TYPE_INT) { v.iv = lv; } DomPathV(const bool lv) : tt(DOMPATHV_TYPE_BOL) { v.bv = lv; } DomPathV(const double lv) : tt(DOMPATHV_TYPE_FLT) { v.dv = lv; } DomPathV() : tt(DOMPATHV_TYPE_INV) {} */ //--- union TSNDomPathValues { long iv; int ix; double dv; bool bv; } v; uchar tt; }; //--- enum ENUM_DOMPATH_QUERY_INS_TYPE { DOMPATH_QUERY_INS_TYPE_ACCESO_KEY, // 2 SLOTS: [type=8|jump=28][hash=64] DOMPATH_QUERY_INS_TYPE_ACCESO_KEY_F, // 2 SLOTS: [type=8][hash=64] DOMPATH_QUERY_INS_TYPE_ACCESO_IDX, // 1 SLOTS: [type=8|Index=28|Jump=28] DOMPATH_QUERY_INS_TYPE_ACCESO_IDX_F, // 1 SLOTS: [type=8|Index=28] DOMPATH_QUERY_INS_TYPE_INICIAR_ITERACION, // 1 SLOT: [type=8|TipoPermitido=8] DOMPATH_QUERY_INS_TYPE_ITER_ASSING, // 1 SLOT: [type=8|JumpCuandoTermina=28] DOMPATH_QUERY_INS_TYPE_EXIST, // 2 SLOT: [type=8|JumpEnCasoFalle=28][Hash=64] // save DOMPATH_QUERY_INS_TYPE_SAVE, // 1 SLOT: [type=8|IndexRegistro=28|JumpFailed=28] DOMPATH_QUERY_INS_TYPE_SAVE_NO_RESET, // 1 SLOT: [type=8|IndexRegistro=28|JumpFailed=28] // mates // 2 SLOT: [type=8|B=28|C=28][A=28|JumpFailed=28] DOMPATH_QUERY_INS_TYPE_M_MUL, DOMPATH_QUERY_INS_TYPE_M_RES, DOMPATH_QUERY_INS_TYPE_M_DIV, DOMPATH_QUERY_INS_TYPE_M_SUM, DOMPATH_QUERY_INS_TYPE_M_MOD, DOMPATH_QUERY_INS_TYPE_M_BIT_OR, DOMPATH_QUERY_INS_TYPE_M_BIT_AND, DOMPATH_QUERY_INS_TYPE_M_BIT_XOR, DOMPATH_QUERY_INS_TYPE_M_BIT_DEZ_IZQ, DOMPATH_QUERY_INS_TYPE_M_BIT_DEZ_DRC, // unary // B=Valor base -> A = Valor final // 2 SLOT: [type=8|B=28|Jump=28] [A=28] DOMPATH_QUERY_INS_TYPE_M_BIT_NOT, DOMPATH_QUERY_INS_TYPE_M_UNARY_NOT, // comaradores // 2 SLOT: [type=8|B=28|C=28][ValorEsperado=1|JumpFailed=28] DOMPATH_QUERY_INS_TYPE_COMPARE_EQ, DOMPATH_QUERY_INS_TYPE_COMPARE_MENOR, DOMPATH_QUERY_INS_TYPE_COMPARE_MENOR_EQ, // 2 SLOT [type=8|RegistroIndex=28|JumpFailid=28] [1=Esperado] DOMPATH_QUERY_INS_TYPE_COMPARE_IS, //--- Funciones // 2 SLOT [8type|Reg Start value params=28|28=Numero de argumentos] [Indice funcion - Name] DOMPATH_QUERY_INS_TYPE_CALL, //--- // 1 SLOT [8type] DOMPATH_QUERY_INS_TYPE_RESERVE, //--- Slicing de arrays // 2 SLOTS: [8type | 28=jump | 28=strat][28=end | 28=step] DOMPATH_QUERY_INS_TYPE_SLICING, //--- // 1 SLOT: [8byt type | 28bit=jump dir] DOMPATH_QUERY_INS_TYPE_JUMP, //--- // 1 SLOT: [8=type|28bit=JUMP en caso de fallo ] DOMPATH_QUERY_INS_TYPE_COPY_ALL, //--- extra // 1 SLOT: [8=type] DOMPATH_QUERY_INS_TYPE_APPEND, // 1 SLOT: [8=type] DOMPATH_QUERY_INS_TYPE_SALIDA, }; } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ #endif // BASESPARSERSLAN_SRC_QUERY_DEF_MQH