2026-10-26 22:11:57 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| Defines.mqh |
|
| | | //| Copyright 2026, Niquel Mendoza. |
|
| | | //| https://www.mql5.com |
|
| | | //+------------------------------------------------------------------+
|
| | | #property copyright "Copyright 2026, Niquel Mendoza."
|
| | | #property link "https://www.mql5.com"
|
| | | #property strict
|
| | |
|
| | | #ifndef TSNTRANSLATIONS_SRC_LANBACKEND_DEFINES_MQH
|
| | | #define TSNTRANSLATIONS_SRC_LANBACKEND_DEFINES_MQH
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-10-27 10:48:31 -05:00 | | | //--- tablas solo de json
|
| | | #include <TSN\\Json\\UET.mqh>
|
| | | //--- main basic
|
| | | #include <TSN\\BSFL\\Main.mqh>
|
| | | //--- bit tricks
|
| | | #include <TSN\\Tables\\Bits.mqh>
|
2026-10-26 22:11:57 -05:00 | | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | namespace TSN
|
| | | {
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | //---
|
| | | enum ENUM_TSN_JSONTRANSLATE_VTYPE
|
| | | {
|
| | | TSN_JSONTRANSLATE_VTYPE_ARR,
|
| | | TSN_JSONTRANSLATE_VTYPE_OBJ,
|
2026-10-27 10:48:31 -05:00 | | | TSN_JSONTRANSLATE_VTYPE_KEY,
|
| | | TSN_JSONTRANSLATE_VTYPE_STR,
|
2026-10-26 22:11:57 -05:00 | | | };
|
| | |
|
| | | //---
|
| | | enum ENUM_TSN_JSONTRANSLATE_TOKS
|
| | | {
|
| | | //---
|
2026-10-27 10:48:31 -05:00 | | | TSN_JSONTRANSLATE_TOK_STRING=0u,
|
2026-10-26 22:11:57 -05:00 | | | TSN_JSONTRANSLATE_TOK_KEY,
|
| | |
|
| | | //---
|
| | | TSN_JSONTRANSLATE_TOK_COMMA,
|
| | |
|
| | | //--- ini
|
| | | TSN_JSONTRANSLATE_TOK_LLAVE_INI,
|
| | | TSN_JSONTRANSLATE_TOK_COR_INI,
|
| | |
|
| | | //--- end
|
| | | TSN_JSONTRANSLATE_TOK_LLAVE_END,
|
| | | TSN_JSONTRANSLATE_TOK_COR_END,
|
| | |
|
| | | //---
|
| | | TSN_JSONTRANSLATE_TOK_COMMENT_MQL,
|
| | | TSN_JSONTRANSLATE_TOK_EXT_NONEXT_KEY,
|
| | | TSN_JSONTRANSLATE_TOK_EXT_NEXT_OBJV,
|
| | | TSN_JSONTRANSLATE_TOK_EXT_NEXT_VV,
|
| | |
|
| | | //--- Invalid
|
| | | TSN_JSONTRANSLATE_TOK_INVALID,
|
| | | };
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | // Hay 4 tipos
|
| | | // // comentario
|
| | | // # comentario
|
| | | // -- comentario
|
| | | // ; comentario
|
2026-10-27 10:48:31 -05:00 | | | #define TSN_JSONTRANSLATE_IS_COMMENT(C) ((C)=='/'||(C)=='-'||(C)=='#'||(C)==';')
|
2026-10-26 22:11:57 -05:00 | | |
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| Flags |
|
| | | //+------------------------------------------------------------------+
|
| | | /*
|
| | | //--- flag create
|
| | | #define TSNTRANSLAN_TF(TOK) (1 << (TOK))
|
| | |
|
| | | //--- banderas misce
|
| | | #define TSNTRANSLAN_F_STR (TSNTRANSLAN_TF(TSN_JSONTRANSLATE_TOK_STRING))
|
| | | #define TSNTRANSLAN_F_COMMA (TSNTRANSLAN_TF(TSN_JSONTRANSLATE_TOK_COMMA))
|
| | | #define TSNTRANSLAN_F_COR_INI (TSNTRANSLAN_TF(TSN_JSONTRANSLATE_TOK_COR_INI))
|
| | | #define TSNTRANSLAN_F_COR_END (TSNTRANSLAN_TF(TSN_JSONTRANSLATE_TOK_COR_END))
|
| | | #define TSNTRANSLAN_F_OBJ_INI (TSNTRANSLAN_TF(TSN_JSONTRANSLATE_TOK_LLAVE_INI))
|
| | | #define TSNTRANSLAN_F_OBJ_END (TSNTRANSLAN_TF(TSN_JSONTRANSLATE_TOK_LLAVE_END))
|
| | | #define TSNTRANSLAN_F_CM_MQ (TSNTRANSLAN_TF(TSN_JSONTRANSLATE_TOK_COMMENT_MQL))
|
| | |
|
| | | //---
|
| | | #define TSN_TRANSLAN_F_ALL_COM (TSNTRANSLAN_F_CM_MQ)
|
| | |
|
| | |
|
| | | //--- Banderas
|
| | | // inicio de estrucutrales
|
| | | #define TSNTRANSLAN_F_STRUCTURALS_INI (TSNTRANSLAN_F_COR_INI| TSNTRANSLAN_F_OBJ_INI)
|
| | | // finales
|
| | |
|
| | |
|
| | | //--- val
|
| | | // Se busca un valor (por ejemplo luego del cor ini [ { o tambien "": o tambien ,)
|
| | | // Aqui es obligraorio el valor (por ejemplo "": )
|
| | | #define TSNTRANSLAN_F_ALL_VAL_VALID (TSNTRANSLAN_F_STR | TSNTRANSLAN_F_STRUCTURALS_INI | TSN_TRANSLAN_F_ALL_COM)
|
| | | // After coma en obj
|
| | | #define TSNTRANSLAN_F_OBJ_VAL_LCOMMA (TSNTRANSLAN_F_STR | TSN_TRANSLAN_F_ALL_COM)*/
|
| | |
|
2026-10-27 10:48:31 -05:00 | | | //---
|
| | | // Solo los caracters finales
|
| | | #define TSNTRANSLAN_CTX_OBJ ('}')
|
| | | #define TSNTRANSLAN_CTX_ARR (']')
|
| | |
|
| | |
|
2026-10-26 22:11:57 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | enum ENUM_TSN_JSONTRANSLATE_ERR
|
| | | {
|
| | | TSN_JSONTRANSLATE_ERR_NOT,
|
| | | TSN_JSONTRANSLATE_EXPECTED_TWO_POINT_AFT_KEY,
|
| | | TSN_JSONTRANSLATE_MALFORMED_AFTER_VAL,
|
| | | TSN_JSONTRANSLATE_MALFORMED_FIND_VAL,
|
| | | TSN_JSONTRANSLATE_MALFORMED_AFTER_COMMA_OBJ,
|
| | | };
|
| | |
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | /*
|
2026-10-27 10:48:31 -05:00 | | | OBJ: [type(3)|num_el(29)<<3|cinta_saltar(31)<<32|is_jit(1)<<63][obj_index or jit attemps, si isjit=0 entonces jitattemps, si es 1 jitindex]
|
| | | ARR: [type(3)|num_el(29)<<3|cinta_saltar(31)<<32]
|
| | | KEY: [type(3)][FVN1A64_hash(64)]
|
| | | STR: [type(3)|LEN(30)<<3|START(31)<<33] index es el indice en el buffer de valores
|
2026-10-26 22:11:57 -05:00 | | |
|
| | | */
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | //--- Tipo
|
2026-10-27 10:48:31 -05:00 | | | #define TSNTRANSLAN_BITMASK_TYPE (B'111')
|
| | | #define TSNTRANSLAN_BITEND_TYPE (3)
|
2026-10-26 22:11:57 -05:00 | | |
|
| | | //--- Numero de elemtnos
|
2026-10-27 10:48:31 -05:00 | | | #define TSNTRANSLAN_BITSTART_NUMEL (TSNTRANSLAN_BITEND_TYPE)
|
| | | #define TSNTRANSLAN_BITMASK_NUMEL (0x1fffffff)
|
2026-10-26 22:11:57 -05:00 | | |
|
| | | //--- A saltar
|
| | | #define TSNTRANSLAN_BITSTART_CINSALTAR (32)
|
| | | #define TSNTRANSLAN_BITMASK_CINSALTAR (0x7fffffff)
|
| | |
|
| | | //--- Jit is
|
| | | #define TSNTRANSLAN_BITSTART_ISJIT (63)
|
| | |
|
| | | //---
|
2026-10-27 10:48:31 -05:00 | | | #define TSNTRANSLAN_BITSTART_STRINDEX (TSNTRANSLAN_BITEND_TYPE)
|
| | |
|
| | | //--- Str
|
| | | #define TSNTRANSLAN_BITMASK_STR_LEN (0x3fffffff)
|
| | | #define TSNTRANSLAN_BITSTART_STR_LEN (TSNTRANSLAN_BITEND_TYPE)
|
2026-10-26 22:11:57 -05:00 | | |
|
2026-10-27 10:48:31 -05:00 | | | #define TSNTRANSLAN_BITSTART_STR_START (33)
|
2026-10-26 22:11:57 -05:00 | | |
|
| | |
|
2026-10-27 10:48:31 -05:00 | | | //---
|
| | | // obj=1
|
| | | // arr=0
|
| | | #define TSNTRANSLAN_MAKESTATE(T) (']' | (uchar(T) << 5))
|
| | |
|
2026-10-26 22:11:57 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | //--- La idea con el hash perfecto es que se aplcia por cada "namespace" y resulve key=index buff
|
| | | struct TSNTransLanPfh
|
| | | {
|
| | | ushort seeds[]; // Seeds..
|
| | | ulong key_hash[]; // Key hash
|
| | | int pos_index[]; // Key->IndexTemplate + 1 = key
|
| | | ulong sizes; // Tamaños
|
| | | int table_size; // Tamaño de tabla
|
| | | };
|
| | | /*
|
| | | {
|
| | | "valor": "valor" ,
|
| | |
|
| | | }
|
| | | */
|
| | | //---
|
| | | }
|
| | | //+------------------------------------------------------------------+
|
| | | #endif // TSNTRANSLATIONS_SRC_LANBACKEND_DEFINES_MQH
|
| | |
|
| | | //+------------------------------------------------------------------+
|