2026-07-23 11:13:47 -05:00
|
|
|
//+-------------------------------------------------------------------+
|
|
|
|
|
//| Include generado por la herramienta PerfectHash SimPHash |
|
|
|
|
|
//| Esta heramienta forma parte del ecositema TSN |
|
|
|
|
|
//| Repositorio: https://forge.mql5.io/nique_372/SimPHash |
|
|
|
|
|
//+-------------------------------------------------------------------+
|
|
|
|
|
#property copyright "Copyright 2026, Niquel Mendoza"
|
|
|
|
|
#property link "https://www.mql5.com/"
|
|
|
|
|
#property strict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
#include <TSN/Tables/AllHashes.mqh>
|
|
|
|
|
#ifndef BASESPARSERSLAN_SRC_QUERY_TABLE_T_MQH
|
|
|
|
|
#define BASESPARSERSLAN_SRC_QUERY_TABLE_T_MQH
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
2026-07-24 22:33:42 -05:00
|
|
|
#define BASESPARSERSLAN_DOMPATH_ASMINS_FTABLE_SIZE (41ULL)
|
2026-07-23 12:38:08 -05:00
|
|
|
#define BASESPARSERSLAN_DOMPATH_ASMINS_BUCKETS_SIZE (8ULL)
|
2026-07-23 11:13:47 -05:00
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
namespace TSN
|
|
|
|
|
{
|
|
|
|
|
const ulong g_dompath_bsplf_ins_seeds[BASESPARSERSLAN_DOMPATH_ASMINS_BUCKETS_SIZE] =
|
|
|
|
|
{
|
2026-07-24 22:33:42 -05:00
|
|
|
1ULL,
|
|
|
|
|
13ULL,
|
|
|
|
|
73ULL,
|
|
|
|
|
2ULL,
|
|
|
|
|
27ULL,
|
2026-07-23 11:13:47 -05:00
|
|
|
0ULL,
|
2026-07-24 22:33:42 -05:00
|
|
|
6ULL,
|
2026-07-23 12:38:08 -05:00
|
|
|
0ULL
|
2026-07-23 11:13:47 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const ulong g_dompath_bsplf_ins_hashes[BASESPARSERSLAN_DOMPATH_ASMINS_FTABLE_SIZE] =
|
|
|
|
|
{
|
2026-07-24 22:33:42 -05:00
|
|
|
16669826521637673764ULL, // INS_JUMP
|
|
|
|
|
3566059518513560209ULL, // INS_M_UNARY_NOT
|
2026-07-23 12:38:08 -05:00
|
|
|
15196081024477955610ULL, // INS_ACCESO_IDX
|
2026-07-24 22:33:42 -05:00
|
|
|
16723409585714899617ULL, // INS_M_BIT_XOR
|
|
|
|
|
929790873407168254ULL, // INS_M_RES
|
2026-07-23 11:13:47 -05:00
|
|
|
0ULL, // invalid
|
2026-07-24 22:33:42 -05:00
|
|
|
17145026178470747254ULL, // INS_INICIAR_ITERACION
|
2026-07-23 11:13:47 -05:00
|
|
|
0ULL, // invalid
|
2026-07-24 22:33:42 -05:00
|
|
|
11367582633176548621ULL, // INS_SLICING
|
|
|
|
|
1544553113344653707ULL, // INS_M_SUM
|
|
|
|
|
9877242875776894995ULL, // INS_M_BIT_DEZ_DRC
|
|
|
|
|
12892904500534247848ULL, // INS_SALIDA
|
|
|
|
|
9660030022021964721ULL, // jsonpb
|
|
|
|
|
13956305797695255026ULL, // INS_ACCESO_KEY
|
|
|
|
|
9922828245035254137ULL, // INS_SAVE_NO_RESET
|
|
|
|
|
13014568533281766000ULL, // INS_RESERVE
|
2026-07-23 11:13:47 -05:00
|
|
|
0ULL, // invalid
|
2026-07-24 22:33:42 -05:00
|
|
|
14813308009111128418ULL, // INS_COMPARE_EQ
|
|
|
|
|
12502527800581014336ULL, // INS_APPEND
|
2026-07-23 11:13:47 -05:00
|
|
|
0ULL, // invalid
|
2026-07-24 22:33:42 -05:00
|
|
|
0ULL, // invalid
|
|
|
|
|
2420732293469154808ULL, // INS_CALL
|
|
|
|
|
3107240819906201454ULL, // INS_M_BIT_DEZ_IZQ
|
2026-07-23 12:38:08 -05:00
|
|
|
17663658560961614708ULL, // INS_M_MOD
|
|
|
|
|
18266067870342221787ULL, // INS_EXIST
|
2026-07-24 22:33:42 -05:00
|
|
|
5318296392847528401ULL, // INS_M_BIT_OR
|
|
|
|
|
607664033161113844ULL, // jsonpasm
|
2026-07-23 11:13:47 -05:00
|
|
|
0ULL, // invalid
|
|
|
|
|
0ULL, // invalid
|
2026-07-24 22:33:42 -05:00
|
|
|
14160026704502597608ULL, // INS_COMPARE_MENOR_EQ
|
|
|
|
|
8418542857013072539ULL, // INS_ACCESO_IDX_F
|
|
|
|
|
5499915945293442029ULL, // INS_M_BIT_NOT
|
|
|
|
|
14886692180082204693ULL, // INS_SAVE
|
2026-07-23 12:38:08 -05:00
|
|
|
5861794546094138563ULL, // INS_ACCESO_KEY_F
|
2026-07-24 22:33:42 -05:00
|
|
|
9761424973485312109ULL, // INS_COMPARE_MENOR
|
|
|
|
|
1577945465427876909ULL, // INS_COPY_ALL
|
|
|
|
|
17673224312125158158ULL, // INS_M_MUL
|
|
|
|
|
14801826908691619856ULL, // INS_COMPARE_IS
|
2026-07-23 12:38:08 -05:00
|
|
|
12364759675171626733ULL, // INS_M_BIT_AND
|
|
|
|
|
3048882993403562588ULL, // INS_ITER_ASSING
|
2026-07-24 22:33:42 -05:00
|
|
|
12160966801573422299ULL
|
2026-07-23 11:13:47 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const long g_dompath_bsplf_ins_values[BASESPARSERSLAN_DOMPATH_ASMINS_FTABLE_SIZE] =
|
|
|
|
|
{
|
2026-07-24 22:33:42 -05:00
|
|
|
28, // INS_JUMP
|
|
|
|
|
20, // INS_M_UNARY_NOT
|
2026-07-23 12:38:08 -05:00
|
|
|
2, // INS_ACCESO_IDX
|
2026-07-24 22:33:42 -05:00
|
|
|
16, // INS_M_BIT_XOR
|
|
|
|
|
10, // INS_M_RES
|
2026-07-23 11:13:47 -05:00
|
|
|
-1,
|
2026-07-24 22:33:42 -05:00
|
|
|
4, // INS_INICIAR_ITERACION
|
|
|
|
|
-1,
|
|
|
|
|
27, // INS_SLICING
|
|
|
|
|
12, // INS_M_SUM
|
|
|
|
|
18, // INS_M_BIT_DEZ_DRC
|
|
|
|
|
31, // INS_SALIDA
|
|
|
|
|
0, // jsonpb
|
|
|
|
|
0, // INS_ACCESO_KEY
|
|
|
|
|
8, // INS_SAVE_NO_RESET
|
|
|
|
|
26, // INS_RESERVE
|
2026-07-23 11:13:47 -05:00
|
|
|
-1,
|
2026-07-24 22:33:42 -05:00
|
|
|
21, // INS_COMPARE_EQ
|
|
|
|
|
30, // INS_APPEND
|
2026-07-23 11:13:47 -05:00
|
|
|
-1,
|
|
|
|
|
-1,
|
2026-07-24 22:33:42 -05:00
|
|
|
25, // INS_CALL
|
|
|
|
|
17, // INS_M_BIT_DEZ_IZQ
|
2026-07-23 12:38:08 -05:00
|
|
|
13, // INS_M_MOD
|
|
|
|
|
6, // INS_EXIST
|
2026-07-24 22:33:42 -05:00
|
|
|
14, // INS_M_BIT_OR
|
|
|
|
|
1, // jsonpasm
|
2026-07-23 11:13:47 -05:00
|
|
|
-1,
|
|
|
|
|
-1,
|
2026-07-24 22:33:42 -05:00
|
|
|
23, // INS_COMPARE_MENOR_EQ
|
|
|
|
|
3, // INS_ACCESO_IDX_F
|
|
|
|
|
19, // INS_M_BIT_NOT
|
|
|
|
|
7, // INS_SAVE
|
2026-07-23 12:38:08 -05:00
|
|
|
1, // INS_ACCESO_KEY_F
|
2026-07-24 22:33:42 -05:00
|
|
|
22, // INS_COMPARE_MENOR
|
|
|
|
|
29, // INS_COPY_ALL
|
|
|
|
|
9, // INS_M_MUL
|
|
|
|
|
24, // INS_COMPARE_IS
|
2026-07-23 12:38:08 -05:00
|
|
|
15, // INS_M_BIT_AND
|
|
|
|
|
5, // INS_ITER_ASSING
|
2026-07-24 22:33:42 -05:00
|
|
|
11 // INS_M_DIV
|
2026-07-23 11:13:47 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
long DomPathExtBSPLF(const string& key)
|
|
|
|
|
{
|
|
|
|
|
//---
|
|
|
|
|
const int len = StringLen(key);
|
|
|
|
|
ulong key_hash = 14695981039346656037ULL;
|
|
|
|
|
FNV1a_64_AsM_Str(key, len, key_hash, 1099511628211ULL)
|
|
|
|
|
|
|
|
|
|
const int seed_index = int(key_hash % BASESPARSERSLAN_DOMPATH_ASMINS_BUCKETS_SIZE);
|
|
|
|
|
//---
|
|
|
|
|
ulong h = key_hash + g_dompath_bsplf_ins_seeds[seed_index] * 0x9e3779b97f4a7c15;
|
|
|
|
|
h = (h ^ (h >> 30)) * 0xbf58476d1ce4e5b9;
|
|
|
|
|
h = (h ^ (h >> 27)) * 0x94d049bb133111eb;
|
|
|
|
|
h ^= (h >> 31);
|
|
|
|
|
|
|
|
|
|
const int fi = int(h % BASESPARSERSLAN_DOMPATH_ASMINS_FTABLE_SIZE);
|
|
|
|
|
return g_dompath_bsplf_ins_hashes[fi] == key_hash ? g_dompath_bsplf_ins_values[fi] : -1;
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-24 22:33:42 -05:00
|
|
|
//---
|
2026-07-23 11:13:47 -05:00
|
|
|
long DomPathExtBSPLF(const ulong key_hash)
|
|
|
|
|
{
|
|
|
|
|
const int seed_index = int(key_hash % BASESPARSERSLAN_DOMPATH_ASMINS_BUCKETS_SIZE);
|
|
|
|
|
//---
|
|
|
|
|
ulong h = key_hash + g_dompath_bsplf_ins_seeds[seed_index] * 0x9e3779b97f4a7c15;
|
|
|
|
|
h = (h ^ (h >> 30)) * 0xbf58476d1ce4e5b9;
|
|
|
|
|
h = (h ^ (h >> 27)) * 0x94d049bb133111eb;
|
|
|
|
|
h ^= (h >> 31);
|
|
|
|
|
|
|
|
|
|
const int fi = int(h % BASESPARSERSLAN_DOMPATH_ASMINS_FTABLE_SIZE);
|
|
|
|
|
return g_dompath_bsplf_ins_hashes[fi] == key_hash ? g_dompath_bsplf_ins_values[fi] : -1;
|
|
|
|
|
}
|
2026-07-24 22:33:42 -05:00
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
long DomPathExtBSPLF_File(const string& key)
|
|
|
|
|
{
|
|
|
|
|
//---
|
|
|
|
|
const int len = StringLen(key);
|
|
|
|
|
ulong key_hash = 14695981039346656037ULL;
|
|
|
|
|
|
|
|
|
|
// Custom para extension files...
|
|
|
|
|
bool is = false;
|
|
|
|
|
for(int i = 0; i < len; i++)
|
|
|
|
|
{
|
|
|
|
|
if(is)
|
|
|
|
|
{
|
|
|
|
|
key_hash ^= (uchar)key[i];
|
|
|
|
|
key_hash *= 1099511628211ULL;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if(key[i] == '.')
|
|
|
|
|
is = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
const int seed_index = int(key_hash % BASESPARSERSLAN_DOMPATH_ASMINS_BUCKETS_SIZE);
|
|
|
|
|
//---
|
|
|
|
|
ulong h = key_hash + g_dompath_bsplf_ins_seeds[seed_index] * 0x9e3779b97f4a7c15;
|
|
|
|
|
h = (h ^ (h >> 30)) * 0xbf58476d1ce4e5b9;
|
|
|
|
|
h = (h ^ (h >> 27)) * 0x94d049bb133111eb;
|
|
|
|
|
h ^= (h >> 31);
|
|
|
|
|
|
|
|
|
|
const int fi = int(h % BASESPARSERSLAN_DOMPATH_ASMINS_FTABLE_SIZE);
|
|
|
|
|
return g_dompath_bsplf_ins_hashes[fi] == key_hash ? g_dompath_bsplf_ins_values[fi] : -1;
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-23 11:13:47 -05:00
|
|
|
}
|
|
|
|
|
#endif // BASESPARSERSLAN_SRC_QUERY_TABLE_T_MQH
|