SetFileByLeo/Src/Def.mqh

421 righe
15 KiB
MQL5

2026-07-06 18:10:19 -05:00
//+------------------------------------------------------------------+
//| Def.mqh |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com/"
#property strict
2026-07-07 12:33:21 -05:00
#ifndef SETFILEBYLEO_SRC_DEF_MQH
#define SETFILEBYLEO_SRC_DEF_MQH
2026-07-07 10:12:20 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//--- Neceistamos la tabla de hexponentes
#ifndef TSNTABLE_USE_POWEXP_TABLE
#define TSNTABLE_USE_POWEXP_TABLE
#endif // TSNTABLE_USE_POWEXP_TABLE
2026-07-06 18:10:19 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include <TSN\\Tables\\Main.mqh>
#include <TSN\\Tables\\Swar.mqh>
#include <TSN\\Tables\\UE.mqh>
#include <TSN\\PHash\\Main.mqh>
2026-07-07 12:33:21 -05:00
#include <TSN/Tables/AllHashes.mqh>
#include <TSN/MQLArticles/Utils/File.mqh>
2026-07-06 18:10:19 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
namespace TSN
{
2026-07-07 12:33:21 -05:00
//+------------------------------------------------------------------+
//| Implementacion de hashers para el hash perfecto |
//+------------------------------------------------------------------+
class CSetFHasherGenUl : public CPerfectHashHasher<ulong>
{
public:
CSetFHasherGenUl(void) {}
~CSetFHasherGenUl(void) {}
#ifdef TSN_PHBL_DESACTIVE_REF
ulong Hash(const ulong v) override final // key a hash ulong
#else
ulong Hash(const ulong& v) override final // key a hash ulong
#endif // TSN_PHBL_DESACTIVE_REF
{
return v; // Hasher 0
}
};
//+------------------------------------------------------------------+
class CSetFHasherGenUl1 : public CPerfectHashHasherWSeed<ulong>
{
public:
CSetFHasherGenUl1(void) {}
~CSetFHasherGenUl1(void) {}
#ifdef TSN_PHBL_DESACTIVE_REF
ulong Hash(const ulong v, const ulong seed) override final // key a hash ulong
#else
ulong Hash(const ulong& v, const ulong seed) override final // key a hash ulong
#endif // TSN_PHBL_DESACTIVE_REF
{
ulong h = v + seed * 0x9e3779b97f4a7c15;
h = (h ^ (h >> 30)) * 0xbf58476d1ce4e5b9;
h = (h ^ (h >> 27)) * 0x94d049bb133111eb;
h ^= (h >> 31);
return h; // Hasher 1
}
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//--- Extensiones extra (naming)
#define TSNSETF_EXT_SETTC ("settc")
//---
#define TSNSETF_RI_SET_FILE 0
#define TSNSETF_RI_SETTC_FILE 1
//---
#define TSN_SETFPARSER_SETTC_TYPE_FILE 0
#define TSN_SETFPARSER_SETTC_TYPE_EMBEBED 1
2026-07-06 18:10:19 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define TSN_SETFILE_BIT_START_STR (32)
2026-07-07 10:12:20 -05:00
#define TSN_SETFILE_BIT_START_LEN_PLAIN (4)
2026-07-06 18:10:19 -05:00
#define TSN_SETFILE_BIT_END_TYPE (4)
2026-07-07 12:33:21 -05:00
//---
#define TSN_SETFILE_BIT_START_JIT_TRY (36)
#define TSN_SETFILE_MASK_COUNT (0xFFFFFFFF) // 32 bits: de END_TYPE(4) a START_JIT_TRY(36)
2026-07-07 15:36:07 -05:00
#define TSN_SETFILE_MASK_JIT_TRY (0xFFFFF) // 20 bits: de START_JIT_TRY(36) hasta bit 56
2026-07-07 12:33:21 -05:00
//---
#ifndef TSN_SETFILE_JIT_MIN_REF_TO_HASING
2026-07-07 15:36:07 -05:00
#define TSN_SETFILE_JIT_MIN_REF_TO_HASING (15)
2026-07-07 12:33:21 -05:00
#endif // TSN_SETFILE_JIT_MIN_REF_TO_HASING
2026-07-06 18:10:19 -05:00
2026-07-07 10:12:20 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
struct CSetNode;
2026-07-06 18:10:19 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum ENUM_SETFILE_TOKENS
{
SETFILE_TOK_ROOT,
SETFILE_TOK_INTEGER,
SETFILE_TOK_REAL,
SETFILE_TOK_BOOLEAN,
2026-07-07 10:12:20 -05:00
SETFILE_TOK_STRING,
2026-07-06 18:10:19 -05:00
SETFILE_TOK_KEY, // [type=4][is=1][len=27][start=32]
SETFILE_TOK_META, // [type=4][op_type=4]
};
enum ENUM_SETFILE_TOKENS_INT
{
SETFILE_TOKENS_INT_NUMBER,
SETFILE_TOKENS_INT_STRING,
SETFILE_TOKENS_INT_TRUE,
SETFILE_TOKENS_INT_FALSE,
SETFILE_TOKENS_INT_AFTER_TRUE_FASE_OPT,
SETFILE_TOKENS_INT_KEY,
SETFILE_TOKENS_INT_COMENTARIO,
2026-07-07 10:12:20 -05:00
SETFILE_TOKENS_INT_INVALID
2026-07-06 18:10:19 -05:00
};
enum ENUM_SETFILE_TOK_OP_TYPE
{
SETFILE_TOK_OP_TYPE_VAL,
SETFILE_TOK_OP_TYPE_Y,
SETFILE_TOK_OP_TYPE_N
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
enum ENUM_SETFILE_PARSER_ERROR
{
SETFILE_PARSER_ERROR_INVALID_TOKEN,
2026-07-07 12:33:21 -05:00
SETFILE_PARSER_ERROR_INVALID_EXT_FILE,
2026-07-06 18:10:19 -05:00
};
2026-07-07 10:12:20 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
const uchar g_tsn_setfile_tokens[256] =
{
SETFILE_TOKENS_INT_INVALID, // 0 - NUL
SETFILE_TOKENS_INT_INVALID, // 1 - SOH
SETFILE_TOKENS_INT_INVALID, // 2 - STX
SETFILE_TOKENS_INT_INVALID, // 3 - ETX
SETFILE_TOKENS_INT_INVALID, // 4 - EOT
SETFILE_TOKENS_INT_INVALID, // 5 - ENQ
SETFILE_TOKENS_INT_INVALID, // 6 - ACK
SETFILE_TOKENS_INT_INVALID, // 7 - BEL
SETFILE_TOKENS_INT_INVALID, // 8 - BS
SETFILE_TOKENS_INT_INVALID, // 9 - TAB
SETFILE_TOKENS_INT_INVALID, // 10 - LF (\n)
SETFILE_TOKENS_INT_INVALID, // 11 - VT
SETFILE_TOKENS_INT_INVALID, // 12 - FF
SETFILE_TOKENS_INT_INVALID, // 13 - CR
SETFILE_TOKENS_INT_INVALID, // 14 - SO
SETFILE_TOKENS_INT_INVALID, // 15 - SI
SETFILE_TOKENS_INT_INVALID, // 16 - DLE
SETFILE_TOKENS_INT_INVALID, // 17 - DC1
SETFILE_TOKENS_INT_INVALID, // 18 - DC2
SETFILE_TOKENS_INT_INVALID, // 19 - DC3
SETFILE_TOKENS_INT_INVALID, // 20 - DC4
SETFILE_TOKENS_INT_INVALID, // 21 - NAK
SETFILE_TOKENS_INT_INVALID, // 22 - SYN
SETFILE_TOKENS_INT_INVALID, // 23 - ETB
SETFILE_TOKENS_INT_INVALID, // 24 - CAN
SETFILE_TOKENS_INT_INVALID, // 25 - EM
SETFILE_TOKENS_INT_INVALID, // 26 - SUB
SETFILE_TOKENS_INT_INVALID, // 27 - ESC
SETFILE_TOKENS_INT_INVALID, // 28 - FS
SETFILE_TOKENS_INT_INVALID, // 29 - GS
SETFILE_TOKENS_INT_INVALID, // 30 - RS
SETFILE_TOKENS_INT_INVALID, // 31 - US
SETFILE_TOKENS_INT_INVALID, // 32 - SPACE (manejado en NEXT)
SETFILE_TOKENS_INT_STRING, // 33 - !
SETFILE_TOKENS_INT_STRING, // 34 - "
SETFILE_TOKENS_INT_STRING, // 35 - #
SETFILE_TOKENS_INT_STRING, // 36 - $
SETFILE_TOKENS_INT_STRING, // 37 - %
SETFILE_TOKENS_INT_STRING, // 38 - &
SETFILE_TOKENS_INT_STRING, // 39 - '
SETFILE_TOKENS_INT_STRING, // 40 - (
SETFILE_TOKENS_INT_STRING, // 41 - )
SETFILE_TOKENS_INT_STRING, // 42 - *
SETFILE_TOKENS_INT_STRING, // 43 - +
SETFILE_TOKENS_INT_STRING, // 44 - ,
SETFILE_TOKENS_INT_NUMBER, // 45 - -
SETFILE_TOKENS_INT_STRING, // 46 - .
SETFILE_TOKENS_INT_STRING, // 47 - /
SETFILE_TOKENS_INT_NUMBER, // 48 - 0
SETFILE_TOKENS_INT_NUMBER, // 49 - 1
SETFILE_TOKENS_INT_NUMBER, // 50 - 2
SETFILE_TOKENS_INT_NUMBER, // 51 - 3
SETFILE_TOKENS_INT_NUMBER, // 52 - 4
SETFILE_TOKENS_INT_NUMBER, // 53 - 5
SETFILE_TOKENS_INT_NUMBER, // 54 - 6
SETFILE_TOKENS_INT_NUMBER, // 55 - 7
SETFILE_TOKENS_INT_NUMBER, // 56 - 8
SETFILE_TOKENS_INT_NUMBER, // 57 - 9
SETFILE_TOKENS_INT_STRING, // 58 - :
SETFILE_TOKENS_INT_COMENTARIO, // 59 - ;
SETFILE_TOKENS_INT_STRING, // 60 -
SETFILE_TOKENS_INT_STRING, // 61 - =
SETFILE_TOKENS_INT_STRING, // 62 - >
SETFILE_TOKENS_INT_STRING,// 63 - ?
SETFILE_TOKENS_INT_STRING, // 64 - @
SETFILE_TOKENS_INT_STRING, // 65 - A
SETFILE_TOKENS_INT_STRING, // 66 - B
SETFILE_TOKENS_INT_STRING, // 67 - C
SETFILE_TOKENS_INT_STRING, // 68 - D
SETFILE_TOKENS_INT_STRING, // 69 - E
SETFILE_TOKENS_INT_STRING, // 70 - F
SETFILE_TOKENS_INT_STRING, // 71 - G
SETFILE_TOKENS_INT_STRING, // 72 - H
SETFILE_TOKENS_INT_STRING, // 73 - I
SETFILE_TOKENS_INT_STRING, // 74 - J
SETFILE_TOKENS_INT_STRING, // 75 - K
SETFILE_TOKENS_INT_STRING, // 76 - L
SETFILE_TOKENS_INT_STRING, // 77 - M
SETFILE_TOKENS_INT_STRING, // 78 - N
SETFILE_TOKENS_INT_STRING, // 79 - O
SETFILE_TOKENS_INT_STRING, // 80 - P
SETFILE_TOKENS_INT_STRING, // 81 - Q
SETFILE_TOKENS_INT_STRING, // 82 - R
SETFILE_TOKENS_INT_STRING, // 83 - S
SETFILE_TOKENS_INT_STRING, // 84 - T
SETFILE_TOKENS_INT_STRING, // 85 - U
SETFILE_TOKENS_INT_STRING, // 86 - V
SETFILE_TOKENS_INT_STRING, // 87 - W
SETFILE_TOKENS_INT_STRING, // 88 - X
SETFILE_TOKENS_INT_STRING, // 89 - Y
SETFILE_TOKENS_INT_STRING, // 90 - Z
SETFILE_TOKENS_INT_STRING, // 91 - [
SETFILE_TOKENS_INT_STRING, // 92 - '\'
SETFILE_TOKENS_INT_STRING, // 93 - ]
SETFILE_TOKENS_INT_STRING, // 94 - ^
SETFILE_TOKENS_INT_STRING, // 95 - _
SETFILE_TOKENS_INT_STRING, // 96 - `
SETFILE_TOKENS_INT_STRING, // 97 - a
SETFILE_TOKENS_INT_STRING, // 98 - b
SETFILE_TOKENS_INT_STRING, // 99 - c
SETFILE_TOKENS_INT_STRING, // 100 - d
SETFILE_TOKENS_INT_STRING, // 101 - e
SETFILE_TOKENS_INT_FALSE, // 102 - f
SETFILE_TOKENS_INT_STRING, // 103 - g
SETFILE_TOKENS_INT_STRING, // 104 - h
SETFILE_TOKENS_INT_STRING, // 105 - i
SETFILE_TOKENS_INT_STRING, // 106 - j
SETFILE_TOKENS_INT_STRING, // 107 - k
SETFILE_TOKENS_INT_STRING, // 108 - l
SETFILE_TOKENS_INT_STRING, // 109 - m
SETFILE_TOKENS_INT_STRING, // 110 - n
SETFILE_TOKENS_INT_STRING, // 111 - o
SETFILE_TOKENS_INT_STRING, // 112 - p
SETFILE_TOKENS_INT_STRING, // 113 - q
SETFILE_TOKENS_INT_STRING, // 114 - r
SETFILE_TOKENS_INT_STRING, // 115 - s
SETFILE_TOKENS_INT_TRUE, // 116 - t
SETFILE_TOKENS_INT_STRING, // 117 - u
SETFILE_TOKENS_INT_STRING, // 118 - v
SETFILE_TOKENS_INT_STRING, // 119 - w
SETFILE_TOKENS_INT_STRING, // 120 - x
SETFILE_TOKENS_INT_STRING, // 121 - y
SETFILE_TOKENS_INT_STRING, // 122 - z
SETFILE_TOKENS_INT_STRING, // 123 - {
SETFILE_TOKENS_INT_STRING, // 124 - |
SETFILE_TOKENS_INT_STRING, // 125 - }
SETFILE_TOKENS_INT_STRING, // 126 - ~
SETFILE_TOKENS_INT_STRING, // 127 - DEL
SETFILE_TOKENS_INT_STRING, // 128
SETFILE_TOKENS_INT_STRING, // 129
SETFILE_TOKENS_INT_STRING, // 130
SETFILE_TOKENS_INT_STRING, // 131
SETFILE_TOKENS_INT_STRING, // 132
SETFILE_TOKENS_INT_STRING, // 133
SETFILE_TOKENS_INT_STRING, // 134
SETFILE_TOKENS_INT_STRING, // 135
SETFILE_TOKENS_INT_STRING, // 136
SETFILE_TOKENS_INT_STRING, // 137
SETFILE_TOKENS_INT_STRING, // 138
SETFILE_TOKENS_INT_STRING, // 139
SETFILE_TOKENS_INT_STRING, // 140
SETFILE_TOKENS_INT_STRING, // 141
SETFILE_TOKENS_INT_STRING, // 142
SETFILE_TOKENS_INT_STRING, // 143
SETFILE_TOKENS_INT_STRING, // 144
SETFILE_TOKENS_INT_STRING, // 145
SETFILE_TOKENS_INT_STRING, // 146
SETFILE_TOKENS_INT_STRING, // 147
SETFILE_TOKENS_INT_STRING, // 148
SETFILE_TOKENS_INT_STRING, // 149
SETFILE_TOKENS_INT_STRING, // 150
SETFILE_TOKENS_INT_STRING, // 151
SETFILE_TOKENS_INT_STRING, // 152
SETFILE_TOKENS_INT_STRING, // 153
SETFILE_TOKENS_INT_STRING, // 154
SETFILE_TOKENS_INT_STRING, // 155
SETFILE_TOKENS_INT_STRING, // 156
SETFILE_TOKENS_INT_STRING, // 157
SETFILE_TOKENS_INT_STRING, // 158
SETFILE_TOKENS_INT_STRING, // 159
SETFILE_TOKENS_INT_STRING, // 160
SETFILE_TOKENS_INT_STRING, // 161
SETFILE_TOKENS_INT_STRING, // 162
SETFILE_TOKENS_INT_STRING, // 163
SETFILE_TOKENS_INT_STRING, // 164
SETFILE_TOKENS_INT_STRING, // 165
SETFILE_TOKENS_INT_STRING, // 166
SETFILE_TOKENS_INT_STRING, // 167
SETFILE_TOKENS_INT_STRING, // 168
SETFILE_TOKENS_INT_STRING, // 169
SETFILE_TOKENS_INT_STRING, // 170
SETFILE_TOKENS_INT_STRING, // 171
SETFILE_TOKENS_INT_STRING, // 172
SETFILE_TOKENS_INT_STRING, // 173
SETFILE_TOKENS_INT_STRING, // 174
SETFILE_TOKENS_INT_STRING, // 175
SETFILE_TOKENS_INT_STRING, // 176
SETFILE_TOKENS_INT_STRING, // 177
SETFILE_TOKENS_INT_STRING, // 178
SETFILE_TOKENS_INT_STRING, // 179
SETFILE_TOKENS_INT_STRING, // 180
SETFILE_TOKENS_INT_STRING, // 181
SETFILE_TOKENS_INT_STRING, // 182
SETFILE_TOKENS_INT_STRING, // 183
SETFILE_TOKENS_INT_STRING, // 184
SETFILE_TOKENS_INT_STRING, // 185
SETFILE_TOKENS_INT_STRING, // 186
SETFILE_TOKENS_INT_STRING, // 187
SETFILE_TOKENS_INT_STRING, // 188
SETFILE_TOKENS_INT_STRING, // 189
SETFILE_TOKENS_INT_STRING, // 190
SETFILE_TOKENS_INT_STRING, // 191
SETFILE_TOKENS_INT_STRING, // 192
SETFILE_TOKENS_INT_STRING, // 193
SETFILE_TOKENS_INT_STRING, // 194
SETFILE_TOKENS_INT_STRING, // 195
SETFILE_TOKENS_INT_STRING, // 196
SETFILE_TOKENS_INT_STRING, // 197
SETFILE_TOKENS_INT_STRING, // 198
SETFILE_TOKENS_INT_STRING, // 199
SETFILE_TOKENS_INT_STRING, // 200
SETFILE_TOKENS_INT_STRING, // 201
SETFILE_TOKENS_INT_STRING, // 202
SETFILE_TOKENS_INT_STRING, // 203
SETFILE_TOKENS_INT_STRING, // 204
SETFILE_TOKENS_INT_STRING, // 205
SETFILE_TOKENS_INT_STRING, // 206
SETFILE_TOKENS_INT_STRING, // 207
SETFILE_TOKENS_INT_STRING, // 208
SETFILE_TOKENS_INT_STRING, // 209
SETFILE_TOKENS_INT_STRING, // 210
SETFILE_TOKENS_INT_STRING, // 211
SETFILE_TOKENS_INT_STRING, // 212
SETFILE_TOKENS_INT_STRING, // 213
SETFILE_TOKENS_INT_STRING, // 214
SETFILE_TOKENS_INT_STRING, // 215
SETFILE_TOKENS_INT_STRING, // 216
SETFILE_TOKENS_INT_STRING, // 217
SETFILE_TOKENS_INT_STRING, // 218
SETFILE_TOKENS_INT_STRING, // 219
SETFILE_TOKENS_INT_STRING, // 220
SETFILE_TOKENS_INT_STRING, // 221
SETFILE_TOKENS_INT_STRING, // 222
SETFILE_TOKENS_INT_STRING, // 223
SETFILE_TOKENS_INT_STRING, // 224
SETFILE_TOKENS_INT_STRING, // 225
SETFILE_TOKENS_INT_STRING, // 226
SETFILE_TOKENS_INT_STRING, // 227
SETFILE_TOKENS_INT_STRING, // 228
SETFILE_TOKENS_INT_STRING, // 229
SETFILE_TOKENS_INT_STRING, // 230
SETFILE_TOKENS_INT_STRING, // 231
SETFILE_TOKENS_INT_STRING, // 232
SETFILE_TOKENS_INT_STRING, // 233
SETFILE_TOKENS_INT_STRING, // 234
SETFILE_TOKENS_INT_STRING, // 235
SETFILE_TOKENS_INT_STRING, // 236
SETFILE_TOKENS_INT_STRING, // 237
SETFILE_TOKENS_INT_STRING, // 238
SETFILE_TOKENS_INT_STRING, // 239
SETFILE_TOKENS_INT_STRING, // 240
SETFILE_TOKENS_INT_STRING, // 241
SETFILE_TOKENS_INT_STRING, // 242
SETFILE_TOKENS_INT_STRING, // 243
SETFILE_TOKENS_INT_STRING, // 244
SETFILE_TOKENS_INT_STRING, // 245
SETFILE_TOKENS_INT_STRING, // 246
SETFILE_TOKENS_INT_STRING, // 247
SETFILE_TOKENS_INT_STRING, // 248
SETFILE_TOKENS_INT_STRING, // 249
SETFILE_TOKENS_INT_STRING, // 250
SETFILE_TOKENS_INT_STRING, // 251
SETFILE_TOKENS_INT_STRING, // 252
SETFILE_TOKENS_INT_STRING, // 253
SETFILE_TOKENS_INT_STRING, // 254
SETFILE_TOKENS_INT_STRING // 255
};
2026-07-06 18:10:19 -05:00
}
//+------------------------------------------------------------------+
2026-07-07 12:33:21 -05:00
#endif // SETFILEBYLEO_SRC_DEF_MQH