//+-------------------------------------------------------------------+ //| 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 #ifndef BASESPARSERSLAN_SRC_QUERY_TABLE_T_MQH #define BASESPARSERSLAN_SRC_QUERY_TABLE_T_MQH //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #define BASESPARSERSLAN_DOMPATH_ASMINS_FTABLE_SIZE (41ULL) #define BASESPARSERSLAN_DOMPATH_ASMINS_BUCKETS_SIZE (8ULL) //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ namespace TSN { const ulong g_dompath_bsplf_ins_seeds[BASESPARSERSLAN_DOMPATH_ASMINS_BUCKETS_SIZE] = { 1ULL, 13ULL, 73ULL, 2ULL, 27ULL, 0ULL, 6ULL, 0ULL }; const ulong g_dompath_bsplf_ins_hashes[BASESPARSERSLAN_DOMPATH_ASMINS_FTABLE_SIZE] = { 16669826521637673764ULL, // INS_JUMP 3566059518513560209ULL, // INS_M_UNARY_NOT 15196081024477955610ULL, // INS_ACCESO_IDX 16723409585714899617ULL, // INS_M_BIT_XOR 929790873407168254ULL, // INS_M_RES 0ULL, // invalid 17145026178470747254ULL, // INS_INICIAR_ITERACION 0ULL, // invalid 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 0ULL, // invalid 14813308009111128418ULL, // INS_COMPARE_EQ 12502527800581014336ULL, // INS_APPEND 0ULL, // invalid 0ULL, // invalid 2420732293469154808ULL, // INS_CALL 3107240819906201454ULL, // INS_M_BIT_DEZ_IZQ 17663658560961614708ULL, // INS_M_MOD 18266067870342221787ULL, // INS_EXIST 5318296392847528401ULL, // INS_M_BIT_OR 607664033161113844ULL, // jsonpasm 0ULL, // invalid 0ULL, // invalid 14160026704502597608ULL, // INS_COMPARE_MENOR_EQ 8418542857013072539ULL, // INS_ACCESO_IDX_F 5499915945293442029ULL, // INS_M_BIT_NOT 14886692180082204693ULL, // INS_SAVE 5861794546094138563ULL, // INS_ACCESO_KEY_F 9761424973485312109ULL, // INS_COMPARE_MENOR 1577945465427876909ULL, // INS_COPY_ALL 17673224312125158158ULL, // INS_M_MUL 14801826908691619856ULL, // INS_COMPARE_IS 12364759675171626733ULL, // INS_M_BIT_AND 3048882993403562588ULL, // INS_ITER_ASSING 12160966801573422299ULL }; const long g_dompath_bsplf_ins_values[BASESPARSERSLAN_DOMPATH_ASMINS_FTABLE_SIZE] = { 28, // INS_JUMP 20, // INS_M_UNARY_NOT 2, // INS_ACCESO_IDX 16, // INS_M_BIT_XOR 10, // INS_M_RES -1, 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 -1, 21, // INS_COMPARE_EQ 30, // INS_APPEND -1, -1, 25, // INS_CALL 17, // INS_M_BIT_DEZ_IZQ 13, // INS_M_MOD 6, // INS_EXIST 14, // INS_M_BIT_OR 1, // jsonpasm -1, -1, 23, // INS_COMPARE_MENOR_EQ 3, // INS_ACCESO_IDX_F 19, // INS_M_BIT_NOT 7, // INS_SAVE 1, // INS_ACCESO_KEY_F 22, // INS_COMPARE_MENOR 29, // INS_COPY_ALL 9, // INS_M_MUL 24, // INS_COMPARE_IS 15, // INS_M_BIT_AND 5, // INS_ITER_ASSING 11 // INS_M_DIV }; 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; } //--- 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; } //--- 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; } } #endif // BASESPARSERSLAN_SRC_QUERY_TABLE_T_MQH