2026-06-26 12:44:41 -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 SIMPHASH_SRC_HASH_DEF_MQH
|
|
|
|
|
#define SIMPHASH_SRC_HASH_DEF_MQH
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
#include "..\\Def.mqh"
|
|
|
|
|
|
2026-06-27 21:28:54 -05:00
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
enum ENUM_HASH_UL1_TYPE
|
|
|
|
|
{
|
|
|
|
|
HASH_UL1_MUR_MUR,
|
|
|
|
|
HASH_UL1_SPLITMIX,
|
|
|
|
|
};
|
|
|
|
|
|
2026-06-28 17:05:25 -05:00
|
|
|
enum ENUM_TSN_PHASH_TYPE
|
|
|
|
|
{
|
|
|
|
|
TSN_PHASH_TYPE_FNV1A_64,
|
|
|
|
|
TSN_PHASH_TYPE_XXHASH_64
|
|
|
|
|
};
|
2026-06-27 21:28:54 -05:00
|
|
|
|
2026-06-26 12:44:41 -05:00
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
namespace TSN
|
|
|
|
|
{
|
2026-06-27 21:28:54 -05:00
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| Hash 0 |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
class CHashGeneratorBasis : public CPerfectHashHasher<ulong>
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
~CHashGeneratorBasis() {}
|
|
|
|
|
CHashGeneratorBasis() {}
|
|
|
|
|
|
|
|
|
|
ulong Hash(const ulong v) override final
|
|
|
|
|
{
|
|
|
|
|
return v; // Tal cual
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| Hash 1 |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
interface IHashGeneratorWSeed : public CPerfectHashHasherWSeed<ulong>
|
|
|
|
|
{
|
|
|
|
|
// Sin parametros..
|
|
|
|
|
void BuildString(string& data, const string& table_seeds_name);
|
|
|
|
|
void AddIncludes(string& data);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| Hash para string |
|
|
|
|
|
//+------------------------------------------------------------------+
|
2026-06-26 12:44:41 -05:00
|
|
|
class IHashGenerator : public CLoggerBase
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
IHashGenerator() {}
|
|
|
|
|
~IHashGenerator() {}
|
|
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
virtual ulong Hash(const string& key) = 0;
|
|
|
|
|
virtual bool Init(CYmlNode& node) = 0;
|
2026-06-27 21:28:54 -05:00
|
|
|
virtual void BuildString(string& data) = 0;
|
2026-06-26 12:44:41 -05:00
|
|
|
virtual void AddIncludes(string& data) = 0;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
#endif // SIMPHASH_SRC_HASH_DEF_MQH
|