forked from nique_372/CryptoByLeo
377 lines
13 KiB
MQL4
377 lines
13 KiB
MQL4
//+------------------------------------------------------------------+
|
|
//| 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
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
//--- Neceistamos la tabla hex
|
|
#ifndef TSNTABLE_USE_HEX_TABLE
|
|
#define TSNTABLE_USE_HEX_TABLE
|
|
#endif // TSNTABLE_USE_HEX_TABLE
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
#include <TSN\\BSFL\\Main.mqh>
|
|
#include <TSN\\Tables\\Swar.mqh>
|
|
#include <TSN\\Tables\\Main.mqh>
|
|
#include <TSN/MQLArticles/Utils/File.mqh>
|
|
#include <TSN/GCol/GenericHashes.mqh>
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
namespace TSN
|
|
{
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
#define RSPDATA_MASK_META_IS (1)
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
// 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]
|
|
// meta = 1 SLOT [4 bits = type | 1 bit = is [] | 1 bit = "is value cleaned" | 1 bit = "is key cleaned"
|
|
|
|
//--- 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)
|
|
|
|
//---
|
|
struct CRSPNode;
|
|
|
|
//---
|
|
#define RSPPARSER_TAPECACHE_EXT ("rsptc")
|
|
|
|
//----
|
|
enum ENUM_RSPDATA_TYPE
|
|
{
|
|
RSPDATA_TYPE_PLAIN_KEY,
|
|
RSPDATA_TYPE_PLAIN_VALUE,
|
|
RSPDATA_TYPE_META,
|
|
};
|
|
|
|
//---
|
|
//p=padding
|
|
enum ENUM_RSPDATA_TOK_TYPE
|
|
{
|
|
RSPDATA_TOK_TYPE_VALUE,
|
|
RSPDATA_TOK_TYPE_KEY,
|
|
RSPDATA_TOK_TYPE_COR,
|
|
RSPDATA_TOK_TYPE_COR_P,
|
|
RSPDATA_TOK_TYPE_COMMENT,
|
|
RSPDATA_TOK_TYPE_COMMENT_P,
|
|
RSPDATA_TOK_INVALID,
|
|
};
|
|
|
|
//---
|
|
enum ENUM_RSPPARSER_LAST_ERR
|
|
{
|
|
RSPPARSER_LAST_ERR_NOT,
|
|
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,
|
|
RSPPARSER_LAST_ERR_INVALID_NEXTT,
|
|
RSPPARSER_LAST_ERR_INVALID_EXT_FILE,
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
// 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
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
// #define RSPDATA_DESACTIVE_SWAR
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
const uchar g_tsn_rsp_t_to_tokesn[256] =
|
|
{
|
|
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
|
|
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
}
|
|
#endif // CRYPTOBYLEO_RSPPARSER_DEF_MQH
|
|
//+------------------------------------------------------------------+
|