2026-04-03 21:12:36 -05:00
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| YmlDefines.mqh |
|
|
|
|
|
//| Copyright 2025, Niquel Mendoza. |
|
|
|
|
|
//| https://www.mql5.com/es/users/nique_372 |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
#property copyright "Copyright 2025, Niquel Mendoza."
|
|
|
|
|
#property link "https://www.mql5.com/es/users/nique_372"
|
|
|
|
|
#property strict
|
|
|
|
|
|
2026-04-04 20:27:55 -05:00
|
|
|
#ifndef YMLPARSERBYLEO_SRC_YMLDEFINES_MQH
|
|
|
|
|
#define YMLPARSERBYLEO_SRC_YMLDEFINES_MQH
|
|
|
|
|
|
2026-04-03 21:12:36 -05:00
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| Defines de ayuda |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
#define CYmlClas_IsDigit(c) ((c ^ '0') <= 9)
|
2026-04-05 22:25:16 -05:00
|
|
|
#define CYmlClass_IsNorFilterChar(c) (c>=33)
|
2026-04-03 21:12:36 -05:00
|
|
|
#define CYmlClass_IsFilterChar(c) (c<33)
|
|
|
|
|
#define CYmlClass_AvanzarHastaLaSiguienteCharNoFilter while(!CYmlClass_IsFilterChar(m_yml[m_yml_pos])) { m_yml_pos++; }
|
|
|
|
|
|
|
|
|
|
#define CYmlClass_AvanzarHastaLaSiguienteLetra while(CYmlClass_IsFilterChar(m_yml[m_yml_pos])) { m_yml_pos++; }
|
|
|
|
|
#define CYmlClass_AvanzarHastaLaSiguienteEspacio while(m_yml[m_yml_pos] != ' ') { m_yml_pos++; }
|
|
|
|
|
#define CYmlClass_AvanzarHastaElIniDelNumber while(!CYmlClas_IsDigit(m_yml[m_yml_pos])) { m_yml_pos++; }
|
|
|
|
|
#define CYmlClass_AvanzarHastaElFinDelNumber while(CYmlClas_IsDigit(m_yml[m_yml_pos])) { m_yml_pos++; }
|
|
|
|
|
#define CYmlClass_AvanzarHastaLaSiguienteChar(c) while(m_yml[m_yml_pos] != c) { m_yml_pos++; }
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| Enums |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//---
|
|
|
|
|
enum ENUM_YML_TOKEN_STRUCTURE
|
|
|
|
|
{
|
|
|
|
|
YML_TOKEN_TYPE_BLOCK = 0, // hijo en siguiente linea
|
|
|
|
|
YML_TOKEN_TYPE_LIST_INLINE = 1, // [1,2,3]
|
|
|
|
|
YML_TOKEN_TYPE_OBJ_INLINE = 2, // {a:1}
|
|
|
|
|
YML_TOKEN_TYPE_MULTILINE_CON = 3, // |
|
|
|
|
|
YML_TOKEN_TYPE_MULTILINE_SIN = 4, // >
|
|
|
|
|
YML_TOKEN_TYPE_REF_CREATE = 5, // &anchor
|
|
|
|
|
YML_TOKEN_TYPE_REF_USE = 6, // *ref
|
|
|
|
|
YML_TOKEN_TYPE_SCALAR_QUOTED = 7, // "valor"
|
|
|
|
|
YML_TOKEN_TYPE_SCALAR = 8, // valor normal
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
enum ENUM_YML_CLASIFIER_TYPE_VAL
|
|
|
|
|
{
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_KEY = 0,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_STR = 1,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_INTEGER = 2,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_DBL = 3,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_BOOL = 4,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_NULL = 5,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_STR_MULTILINE = 6,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_ARR = 7,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_OBJ = 8,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_REFERENCE_SIMPLE = 9,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_REFERENCE_COMPLEX = 10,
|
|
|
|
|
YML_CLASIFIER_TOKEN_TYPE_PTR = 11
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
#define YMLPARSER_BIT_END_TYPE (4)
|
2026-04-03 22:17:13 -05:00
|
|
|
#define YMLPARSER_ARROBJREF_BIT_INIT_CURR_POS (32)
|
2026-04-03 21:12:36 -05:00
|
|
|
#define YMLPARSER_KEY_BIT_INIT_HASH (16)
|
2026-04-04 08:07:02 -05:00
|
|
|
#define YMLPARSER_PTR_MAX_DEPTH (32)
|
2026-04-03 21:12:36 -05:00
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
enum ENUM_YML_PARSER_LAST_ERR
|
|
|
|
|
{
|
|
|
|
|
YML_PARSER_ERR_NO_COMILLAS = 0, // No se han cerrado las comillas
|
|
|
|
|
YML_PARSER_ERR_SE_HA_SUPERADO_EL_LEN = 1, // Se supero el len mientras se buscaban chars
|
|
|
|
|
YML_PARSER_ERR_NO_SEPUEDE_USAR_MULTILINEA = 2,
|
|
|
|
|
YML_PARSER_ERR_OBJ_MALFORMADO = 3,
|
|
|
|
|
YML_PARSER_ERR_ESTRUCUTRA_INVALIDA_NO_SE_PARSEO = 4,
|
|
|
|
|
YML_PARSER_ERR_NOMBRE_DE_REFERENCE_NO_TIENE_CHARS = 5,
|
|
|
|
|
YML_PARSER_ERR_NO_SE_PUEDE_USAR_REFCREATE = 6,
|
|
|
|
|
YML_PARSER_ERR_NO_SE_PUEDE_USAR_BLOQUES = 7,
|
|
|
|
|
YML_PARSER_ERR_ITEM_LISTA_VACIO = 8,
|
|
|
|
|
YML_PARSER_ERR_BLOCK_SE_ESPERABA_UNA_LISTA = 9,
|
|
|
|
|
YML_PARSER_ERR_BLOCK_SE_ESPERABA_UNA_KEY = 10,
|
|
|
|
|
YML_PARSER_ERR_HASHKEY_ANCHOR_HA_SUPERADO_COLISIONES_MAX = 11,
|
|
|
|
|
YML_PARSER_ERR_REFUSE_CIRCULAR = 12,
|
|
|
|
|
YML_PARSER_ERR_NO_SE_ENCONTRO_REFNAME_EN_HASHMAP = 13,
|
|
|
|
|
YML_PARSER_ERR_NO_SE_PARSEO_VALORTALCUAL_FORMATO_DESCONOCIDO = 14,
|
|
|
|
|
YML_PARSER_ERR_KEY_INVALIDA_NO_TIENE_CHARS = 15,
|
|
|
|
|
YML_PARSER_ERR_KEY_SE_ESPERABA_EL_FIN_KEY = 16,
|
|
|
|
|
YML_PARSER_ERR_KEY_MAL_FORMADA_COMENTARIO_FUE_PRIMERO = 17,
|
2026-04-04 08:07:02 -05:00
|
|
|
YML_PARSER_ERR_NO_SE_PUDO_PARSEAR_KEY_CAUSA_DESCONOCIDA = 18,
|
2026-04-04 10:28:45 -05:00
|
|
|
YML_PARSER_ERR_LA_RECURSION_DE_PTR_HA_SUPERADO_LA_PROFUNDIDA = 19,
|
2026-04-05 11:18:49 -05:00
|
|
|
YML_PARSER_ERR_NO_SE_PUEDE_USAR_VALORES_PLAIN_EN_ARR_OR_OBJ = 20,
|
2026-04-05 22:25:16 -05:00
|
|
|
YML_PARSER_ERR_OPEN_FILE = 21,
|
|
|
|
|
YML_PARSER_ERR_NO_SE_PUEDE_TENER_STR_KEY_EN_VARIAS_LINEAS = 22,
|
|
|
|
|
YML_PARSER_ERR_INDENTACION_INCORRECTA = 23
|
2026-04-03 21:12:36 -05:00
|
|
|
};
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
#define YML_IDENT_STACK_MAX_SIZE (256)
|
2026-04-04 10:28:45 -05:00
|
|
|
#define YML_MIN_INITIAL_RESERVE (32)
|
2026-04-04 16:19:18 -05:00
|
|
|
#define YML_OFFESET_PTR_TO_VAL (2)
|
2026-04-03 21:12:36 -05:00
|
|
|
//+------------------------------------------------------------------+
|
2026-04-05 11:18:49 -05:00
|
|
|
#endif // YMLPARSERBYLEO_SRC_YMLDEFINES_MQH
|