//+------------------------------------------------------------------+ //| 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 #ifndef YMLPARSERBYLEO_SRC_YMLDEFINES_MQH #define YMLPARSERBYLEO_SRC_YMLDEFINES_MQH //+------------------------------------------------------------------+ //| Defines de ayuda | //+------------------------------------------------------------------+ #define CYmlClas_IsDigit(c) ((c ^ '0') <= 9) #define CYmlClass_IsNorFilterChar(c) (c>=33) #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) #define YMLPARSER_ARROBJREF_BIT_INIT_CURR_POS (32) #define YMLPARSER_KEY_BIT_INIT_HASH (16) #define YMLPARSER_PTR_MAX_DEPTH (32) //--- 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, YML_PARSER_ERR_NO_SE_PUDO_PARSEAR_KEY_CAUSA_DESCONOCIDA = 18, YML_PARSER_ERR_LA_RECURSION_DE_PTR_HA_SUPERADO_LA_PROFUNDIDA = 19, YML_PARSER_ERR_NO_SE_PUEDE_USAR_VALORES_PLAIN_EN_ARR_OR_OBJ = 20, 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 }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #define YML_IDENT_STACK_MAX_SIZE (256) #define YML_MIN_INITIAL_RESERVE (32) #define YML_OFFESET_PTR_TO_VAL (2) //+------------------------------------------------------------------+ #endif // YMLPARSERBYLEO_SRC_YMLDEFINES_MQH