CryptoByLeo/Src/RSPParser/Def.mqh

377 lines
13 KiB
MQL5
Raw Permalink Normal View History

2026-08-24 13:05:37 -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
#ifndef CRYPTOBYLEO_RSPPARSER_DEF_MQH
#define CRYPTOBYLEO_RSPPARSER_DEF_MQH
2026-08-24 21:32:18 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//--- Neceistamos la tabla hex
#ifndef TSNTABLE_USE_HEX_TABLE
#define TSNTABLE_USE_HEX_TABLE
#endif // TSNTABLE_USE_HEX_TABLE
2026-08-24 13:05:37 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include <TSN\\BSFL\\Main.mqh>
#include <TSN\\Tables\\Swar.mqh>
2026-08-24 21:32:18 -05:00
#include <TSN\\Tables\\Main.mqh>
2026-08-24 22:07:20 -05:00
#include <TSN/MQLArticles/Utils/File.mqh>
2026-08-25 08:02:51 -05:00
#include <TSN/GCol/GenericHashes.mqh>
2026-08-24 13:05:37 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
namespace TSN
{
2026-08-24 21:32:18 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define RSPDATA_MASK_META_IS (1)
2026-08-24 13:05:37 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
// En este caso usaremos 2 bits para el tipo
// key = 1 SLOT [4 bits = type | 28 = len | 32 = start]
// value = 1 SLOT [4 bits = type | 28 = len | 32 = start]
2026-08-24 15:46:14 -05:00
// meta = 1 SLOT [4 bits = type | 1 bit = is [] | 1 bit = "is value cleaned" | 1 bit = "is key cleaned"
2026-08-24 13:05:37 -05:00
2026-08-24 21:32:18 -05:00
//--- Clean
#define RSPDATA_BITSTART_ISVAL_CLEAN (5)
#define RSPDATA_BITSTART_ISVAL_CLEAN_F (1ULL<<RSPDATA_BITSTART_ISVAL_CLEAN)
#define RSPDATA_BITSTART_ISKEY_CLEAN (6)
#define RSPDATA_BITSTART_ISKEY_CLEAN_F (1ULL<<RSPDATA_BITSTART_ISKEY_CLEAN)
2026-08-24 22:33:45 -05:00
//---
struct CRSPNode;
2026-08-24 21:32:18 -05:00
2026-08-24 22:07:20 -05:00
//---
#define RSPPARSER_TAPECACHE_EXT ("rsptc")
2026-08-24 13:05:37 -05:00
//----
enum ENUM_RSPDATA_TYPE
{
RSPDATA_TYPE_PLAIN_KEY,
RSPDATA_TYPE_PLAIN_VALUE,
RSPDATA_TYPE_META,
};
//---
2026-08-24 15:46:14 -05:00
//p=padding
2026-08-24 13:05:37 -05:00
enum ENUM_RSPDATA_TOK_TYPE
{
RSPDATA_TOK_TYPE_VALUE,
2026-08-24 15:46:14 -05:00
RSPDATA_TOK_TYPE_KEY,
2026-08-24 13:05:37 -05:00
RSPDATA_TOK_TYPE_COR,
2026-08-24 15:46:14 -05:00
RSPDATA_TOK_TYPE_COR_P,
2026-08-24 13:05:37 -05:00
RSPDATA_TOK_TYPE_COMMENT,
2026-08-24 15:46:14 -05:00
RSPDATA_TOK_TYPE_COMMENT_P,
RSPDATA_TOK_INVALID,
2026-08-24 13:05:37 -05:00
};
//---
enum ENUM_RSPPARSER_LAST_ERR
{
2026-08-24 15:46:14 -05:00
RSPPARSER_LAST_ERR_NOT,
2026-08-24 13:05:37 -05:00
RSPPARSER_LAST_ERR_INVALID_TOKEN,
RSPPARSER_LAST_ERR_SE_BUSCABA_EQ,
RSPPARSER_LAST_ERR_SE_BUSCABA_FIN_DE_LINEA,
RSPPARSER_LAST_ERR_SE_BUSCABA_FIN_V,
2026-08-24 15:46:14 -05:00
RSPPARSER_LAST_ERR_INVALID_NEXTT,
2026-08-24 22:07:20 -05:00
RSPPARSER_LAST_ERR_INVALID_EXT_FILE,
2026-08-24 13:05:37 -05:00
};
2026-08-24 21:55:43 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
// Umbrales en make iterador
#ifndef RSPNODE_ITERADOR_MIN_PFH
#define RSPNODE_ITERADOR_MIN_PFH (8)
#endif // RSPNODE_ITERADOR_MIN_PFH
// minimo RSPNODE_ITERADOR_MIN_PFH elemenots (keys) para poder usar perfect hash
2026-08-24 13:05:37 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
// #define RSPDATA_DESACTIVE_SWAR
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
const uchar g_tsn_rsp_t_to_tokesn[256] =
{
2026-08-24 15:46:14 -05:00
RSPDATA_TOK_INVALID, // 0 - NUL
RSPDATA_TOK_INVALID, // 1 - SOH
RSPDATA_TOK_INVALID, // 2 - STX
RSPDATA_TOK_INVALID, // 3 - ETX
RSPDATA_TOK_INVALID, // 4 - EOT
RSPDATA_TOK_INVALID, // 5 - ENQ
RSPDATA_TOK_INVALID, // 6 - ACK
RSPDATA_TOK_INVALID, // 7 - BEL
RSPDATA_TOK_INVALID, // 8 - BS
RSPDATA_TOK_INVALID, // 9 - TAB
RSPDATA_TOK_INVALID, // 10 - LF (\n)
RSPDATA_TOK_INVALID, // 11 - VT
RSPDATA_TOK_INVALID, // 12 - FF
RSPDATA_TOK_INVALID, // 13 - CR
RSPDATA_TOK_INVALID, // 14 - SO
RSPDATA_TOK_INVALID, // 15 - SI
RSPDATA_TOK_INVALID, // 16 - DLE
RSPDATA_TOK_INVALID, // 17 - DC1
RSPDATA_TOK_INVALID, // 18 - DC2
RSPDATA_TOK_INVALID, // 19 - DC3
RSPDATA_TOK_INVALID, // 20 - DC4
RSPDATA_TOK_INVALID, // 21 - NAK
RSPDATA_TOK_INVALID, // 22 - SYN
RSPDATA_TOK_INVALID, // 23 - ETB
RSPDATA_TOK_INVALID, // 24 - CAN
RSPDATA_TOK_INVALID, // 25 - EM
RSPDATA_TOK_INVALID, // 26 - SUB
RSPDATA_TOK_INVALID, // 27 - ESC
RSPDATA_TOK_INVALID, // 28 - FS
RSPDATA_TOK_INVALID, // 29 - GS
RSPDATA_TOK_INVALID, // 30 - RS
RSPDATA_TOK_INVALID, // 31 - US
RSPDATA_TOK_INVALID, // 32 - SPACE
RSPDATA_TOK_TYPE_VALUE, // 33 - !
RSPDATA_TOK_TYPE_VALUE, // 34 - "
RSPDATA_TOK_TYPE_COMMENT, // 35 - #
RSPDATA_TOK_TYPE_VALUE, // 36 - $
RSPDATA_TOK_TYPE_VALUE, // 37 - %
RSPDATA_TOK_TYPE_VALUE, // 38 - &
RSPDATA_TOK_TYPE_VALUE, // 39 - '
RSPDATA_TOK_TYPE_VALUE, // 40 - (
RSPDATA_TOK_TYPE_VALUE, // 41 - )
RSPDATA_TOK_TYPE_VALUE, // 42 - *
RSPDATA_TOK_TYPE_VALUE, // 43 - +
RSPDATA_TOK_TYPE_VALUE, // 44 - ,
RSPDATA_TOK_TYPE_VALUE, // 45 - -
RSPDATA_TOK_TYPE_VALUE, // 46 - .
RSPDATA_TOK_TYPE_VALUE, // 47 - /
RSPDATA_TOK_TYPE_VALUE, // 48 - 0
RSPDATA_TOK_TYPE_VALUE, // 49 - 1
RSPDATA_TOK_TYPE_VALUE, // 50 - 2
RSPDATA_TOK_TYPE_VALUE, // 51 - 3
RSPDATA_TOK_TYPE_VALUE, // 52 - 4
RSPDATA_TOK_TYPE_VALUE, // 53 - 5
RSPDATA_TOK_TYPE_VALUE, // 54 - 6
RSPDATA_TOK_TYPE_VALUE, // 55 - 7
RSPDATA_TOK_TYPE_VALUE, // 56 - 8
RSPDATA_TOK_TYPE_VALUE, // 57 - 9
RSPDATA_TOK_TYPE_VALUE, // 58 - :
RSPDATA_TOK_TYPE_VALUE, // 59 - ;
RSPDATA_TOK_TYPE_VALUE, // 60 -
RSPDATA_TOK_TYPE_VALUE, // 61 - =
RSPDATA_TOK_TYPE_VALUE, // 62 - >
RSPDATA_TOK_TYPE_VALUE,// 63 - ?
RSPDATA_TOK_TYPE_VALUE, // 64 - @
RSPDATA_TOK_TYPE_VALUE, // 65 - A
RSPDATA_TOK_TYPE_VALUE, // 66 - B
RSPDATA_TOK_TYPE_VALUE, // 67 - C
RSPDATA_TOK_TYPE_VALUE, // 68 - D
RSPDATA_TOK_TYPE_VALUE, // 69 - E
RSPDATA_TOK_TYPE_VALUE, // 70 - F
RSPDATA_TOK_TYPE_VALUE, // 71 - G
RSPDATA_TOK_TYPE_VALUE, // 72 - H
RSPDATA_TOK_TYPE_VALUE, // 73 - I
RSPDATA_TOK_TYPE_VALUE, // 74 - J
RSPDATA_TOK_TYPE_VALUE, // 75 - K
RSPDATA_TOK_TYPE_VALUE, // 76 - L
RSPDATA_TOK_TYPE_VALUE, // 77 - M
RSPDATA_TOK_TYPE_VALUE, // 78 - N
RSPDATA_TOK_TYPE_VALUE, // 79 - O
RSPDATA_TOK_TYPE_VALUE, // 80 - P
RSPDATA_TOK_TYPE_VALUE, // 81 - Q
RSPDATA_TOK_TYPE_VALUE, // 82 - R
RSPDATA_TOK_TYPE_VALUE, // 83 - S
RSPDATA_TOK_TYPE_VALUE, // 84 - T
RSPDATA_TOK_TYPE_VALUE, // 85 - U
RSPDATA_TOK_TYPE_VALUE, // 86 - V
RSPDATA_TOK_TYPE_VALUE, // 87 - W
RSPDATA_TOK_TYPE_VALUE, // 88 - X
RSPDATA_TOK_TYPE_VALUE, // 89 - Y
RSPDATA_TOK_TYPE_VALUE, // 90 - Z
RSPDATA_TOK_TYPE_COR, // 91 - [
RSPDATA_TOK_TYPE_VALUE, // 92 - '\'
RSPDATA_TOK_TYPE_VALUE, // 93 - ]
RSPDATA_TOK_TYPE_VALUE, // 94 - ^
RSPDATA_TOK_TYPE_VALUE, // 95 - _
RSPDATA_TOK_TYPE_VALUE, // 96 - `
RSPDATA_TOK_TYPE_VALUE, // 97 - a
RSPDATA_TOK_TYPE_VALUE, // 98 - b
RSPDATA_TOK_TYPE_VALUE, // 99 - c
RSPDATA_TOK_TYPE_VALUE, // 100 - d
RSPDATA_TOK_TYPE_VALUE, // 101 - e
RSPDATA_TOK_TYPE_VALUE, // 102 - f
RSPDATA_TOK_TYPE_VALUE, // 103 - g
RSPDATA_TOK_TYPE_VALUE, // 104 - h
RSPDATA_TOK_TYPE_VALUE, // 105 - i
RSPDATA_TOK_TYPE_VALUE, // 106 - j
RSPDATA_TOK_TYPE_VALUE, // 107 - k
RSPDATA_TOK_TYPE_VALUE, // 108 - l
RSPDATA_TOK_TYPE_VALUE, // 109 - m
RSPDATA_TOK_TYPE_VALUE, // 110 - n
RSPDATA_TOK_TYPE_VALUE, // 111 - o
RSPDATA_TOK_TYPE_VALUE, // 112 - p
RSPDATA_TOK_TYPE_VALUE, // 113 - q
RSPDATA_TOK_TYPE_VALUE, // 114 - r
RSPDATA_TOK_TYPE_VALUE, // 115 - s
RSPDATA_TOK_TYPE_VALUE, // 116 - t
RSPDATA_TOK_TYPE_VALUE, // 117 - u
RSPDATA_TOK_TYPE_VALUE, // 118 - v
RSPDATA_TOK_TYPE_VALUE, // 119 - w
RSPDATA_TOK_TYPE_VALUE, // 120 - x
RSPDATA_TOK_TYPE_VALUE, // 121 - y
RSPDATA_TOK_TYPE_VALUE, // 122 - z
RSPDATA_TOK_TYPE_VALUE, // 123 - {
RSPDATA_TOK_TYPE_VALUE, // 124 - |
RSPDATA_TOK_TYPE_VALUE, // 125 - }
RSPDATA_TOK_TYPE_VALUE, // 126 - ~
RSPDATA_TOK_TYPE_VALUE, // 127 - DEL
RSPDATA_TOK_TYPE_VALUE, // 128
RSPDATA_TOK_TYPE_VALUE, // 129
RSPDATA_TOK_TYPE_VALUE, // 130
RSPDATA_TOK_TYPE_VALUE, // 131
RSPDATA_TOK_TYPE_VALUE, // 132
RSPDATA_TOK_TYPE_VALUE, // 133
RSPDATA_TOK_TYPE_VALUE, // 134
RSPDATA_TOK_TYPE_VALUE, // 135
RSPDATA_TOK_TYPE_VALUE, // 136
RSPDATA_TOK_TYPE_VALUE, // 137
RSPDATA_TOK_TYPE_VALUE, // 138
RSPDATA_TOK_TYPE_VALUE, // 139
RSPDATA_TOK_TYPE_VALUE, // 140
RSPDATA_TOK_TYPE_VALUE, // 141
RSPDATA_TOK_TYPE_VALUE, // 142
RSPDATA_TOK_TYPE_VALUE, // 143
RSPDATA_TOK_TYPE_VALUE, // 144
RSPDATA_TOK_TYPE_VALUE, // 145
RSPDATA_TOK_TYPE_VALUE, // 146
RSPDATA_TOK_TYPE_VALUE, // 147
RSPDATA_TOK_TYPE_VALUE, // 148
RSPDATA_TOK_TYPE_VALUE, // 149
RSPDATA_TOK_TYPE_VALUE, // 150
RSPDATA_TOK_TYPE_VALUE, // 151
RSPDATA_TOK_TYPE_VALUE, // 152
RSPDATA_TOK_TYPE_VALUE, // 153
RSPDATA_TOK_TYPE_VALUE, // 154
RSPDATA_TOK_TYPE_VALUE, // 155
RSPDATA_TOK_TYPE_VALUE, // 156
RSPDATA_TOK_TYPE_VALUE, // 157
RSPDATA_TOK_TYPE_VALUE, // 158
RSPDATA_TOK_TYPE_VALUE, // 159
RSPDATA_TOK_TYPE_VALUE, // 160
RSPDATA_TOK_TYPE_VALUE, // 161
RSPDATA_TOK_TYPE_VALUE, // 162
RSPDATA_TOK_TYPE_VALUE, // 163
RSPDATA_TOK_TYPE_VALUE, // 164
RSPDATA_TOK_TYPE_VALUE, // 165
RSPDATA_TOK_TYPE_VALUE, // 166
RSPDATA_TOK_TYPE_VALUE, // 167
RSPDATA_TOK_TYPE_VALUE, // 168
RSPDATA_TOK_TYPE_VALUE, // 169
RSPDATA_TOK_TYPE_VALUE, // 170
RSPDATA_TOK_TYPE_VALUE, // 171
RSPDATA_TOK_TYPE_VALUE, // 172
RSPDATA_TOK_TYPE_VALUE, // 173
RSPDATA_TOK_TYPE_VALUE, // 174
RSPDATA_TOK_TYPE_VALUE, // 175
RSPDATA_TOK_TYPE_VALUE, // 176
RSPDATA_TOK_TYPE_VALUE, // 177
RSPDATA_TOK_TYPE_VALUE, // 178
RSPDATA_TOK_TYPE_VALUE, // 179
RSPDATA_TOK_TYPE_VALUE, // 180
RSPDATA_TOK_TYPE_VALUE, // 181
RSPDATA_TOK_TYPE_VALUE, // 182
RSPDATA_TOK_TYPE_VALUE, // 183
RSPDATA_TOK_TYPE_VALUE, // 184
RSPDATA_TOK_TYPE_VALUE, // 185
RSPDATA_TOK_TYPE_VALUE, // 186
RSPDATA_TOK_TYPE_VALUE, // 187
RSPDATA_TOK_TYPE_VALUE, // 188
RSPDATA_TOK_TYPE_VALUE, // 189
RSPDATA_TOK_TYPE_VALUE, // 190
RSPDATA_TOK_TYPE_VALUE, // 191
RSPDATA_TOK_TYPE_VALUE, // 192
RSPDATA_TOK_TYPE_VALUE, // 193
RSPDATA_TOK_TYPE_VALUE, // 194
RSPDATA_TOK_TYPE_VALUE, // 195
RSPDATA_TOK_TYPE_VALUE, // 196
RSPDATA_TOK_TYPE_VALUE, // 197
RSPDATA_TOK_TYPE_VALUE, // 198
RSPDATA_TOK_TYPE_VALUE, // 199
RSPDATA_TOK_TYPE_VALUE, // 200
RSPDATA_TOK_TYPE_VALUE, // 201
RSPDATA_TOK_TYPE_VALUE, // 202
RSPDATA_TOK_TYPE_VALUE, // 203
RSPDATA_TOK_TYPE_VALUE, // 204
RSPDATA_TOK_TYPE_VALUE, // 205
RSPDATA_TOK_TYPE_VALUE, // 206
RSPDATA_TOK_TYPE_VALUE, // 207
RSPDATA_TOK_TYPE_VALUE, // 208
RSPDATA_TOK_TYPE_VALUE, // 209
RSPDATA_TOK_TYPE_VALUE, // 210
RSPDATA_TOK_TYPE_VALUE, // 211
RSPDATA_TOK_TYPE_VALUE, // 212
RSPDATA_TOK_TYPE_VALUE, // 213
RSPDATA_TOK_TYPE_VALUE, // 214
RSPDATA_TOK_TYPE_VALUE, // 215
RSPDATA_TOK_TYPE_VALUE, // 216
RSPDATA_TOK_TYPE_VALUE, // 217
RSPDATA_TOK_TYPE_VALUE, // 218
RSPDATA_TOK_TYPE_VALUE, // 219
RSPDATA_TOK_TYPE_VALUE, // 220
RSPDATA_TOK_TYPE_VALUE, // 221
RSPDATA_TOK_TYPE_VALUE, // 222
RSPDATA_TOK_TYPE_VALUE, // 223
RSPDATA_TOK_TYPE_VALUE, // 224
RSPDATA_TOK_TYPE_VALUE, // 225
RSPDATA_TOK_TYPE_VALUE, // 226
RSPDATA_TOK_TYPE_VALUE, // 227
RSPDATA_TOK_TYPE_VALUE, // 228
RSPDATA_TOK_TYPE_VALUE, // 229
RSPDATA_TOK_TYPE_VALUE, // 230
RSPDATA_TOK_TYPE_VALUE, // 231
RSPDATA_TOK_TYPE_VALUE, // 232
RSPDATA_TOK_TYPE_VALUE, // 233
RSPDATA_TOK_TYPE_VALUE, // 234
RSPDATA_TOK_TYPE_VALUE, // 235
RSPDATA_TOK_TYPE_VALUE, // 236
RSPDATA_TOK_TYPE_VALUE, // 237
RSPDATA_TOK_TYPE_VALUE, // 238
RSPDATA_TOK_TYPE_VALUE, // 239
RSPDATA_TOK_TYPE_VALUE, // 240
RSPDATA_TOK_TYPE_VALUE, // 241
RSPDATA_TOK_TYPE_VALUE, // 242
RSPDATA_TOK_TYPE_VALUE, // 243
RSPDATA_TOK_TYPE_VALUE, // 244
RSPDATA_TOK_TYPE_VALUE, // 245
RSPDATA_TOK_TYPE_VALUE, // 246
RSPDATA_TOK_TYPE_VALUE, // 247
RSPDATA_TOK_TYPE_VALUE, // 248
RSPDATA_TOK_TYPE_VALUE, // 249
RSPDATA_TOK_TYPE_VALUE, // 250
RSPDATA_TOK_TYPE_VALUE, // 251
RSPDATA_TOK_TYPE_VALUE, // 252
RSPDATA_TOK_TYPE_VALUE, // 253
RSPDATA_TOK_TYPE_VALUE, // 254
RSPDATA_TOK_TYPE_VALUE // 255
2026-08-24 13:05:37 -05:00
};
//+------------------------------------------------------------------+
}
2026-08-24 15:46:14 -05:00
#endif // CRYPTOBYLEO_RSPPARSER_DEF_MQH
//+------------------------------------------------------------------+