70 lines
2.2 KiB
MQL5
70 lines
2.2 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| Main.mqh |
|
|
//| Copyright 2026, Niquel Mendoza. |
|
|
//| https://www.mql5.com/ |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2026, Niquel Mendoza."
|
|
#property link "https://www.mql5.com/"
|
|
#property strict
|
|
|
|
#ifndef TSNTABES_SRC_PHASH_FNV1_1A_MAIN_MQH
|
|
#define TSNTABES_SRC_PHASH_FNV1_1A_MAIN_MQH
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
#define FNV_OFFSET_BASIS 0xcbf29ce484222325
|
|
#define FNV_PRIME 0x100000001b3
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
namespace TSN
|
|
{
|
|
ulong FNV1a_64(const string& str, int len)
|
|
{
|
|
ulong h = FNV_OFFSET_BASIS;
|
|
for(int i = 0; i < len; i++)
|
|
{
|
|
h ^= (uchar)str[i];
|
|
h *= FNV_PRIME;
|
|
}
|
|
return h;
|
|
}
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
// H pregiamtne iniciado..
|
|
#define FNV1a_64_AsM_Str(str, len, h, prime) \
|
|
for(int i = 0; i < len; i++) \
|
|
{ \
|
|
h ^= (uchar)str[i]; \
|
|
h *= prime; \
|
|
}
|
|
// conr rangos
|
|
#define FNV1a_64_AsM_Str_range(str, s, e, h, prime) \
|
|
for(int i = s; i <=e; i++) \
|
|
{ \
|
|
h ^= (uchar)str[i]; \
|
|
h *= prime; \
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
// H pregiamtne iniciado..
|
|
#define FNV1a_64_AsM_U(str, len, h, prime) \
|
|
for(int i = 0; i < len; i++) \
|
|
{ \
|
|
h ^= str[i]; \
|
|
h *= prime; \
|
|
}
|
|
// conr rangos
|
|
#define FNV1a_64_AsM_U_range(str, s, e, h, prime) \
|
|
for(int i = s; i <=e; i++) \
|
|
{ \
|
|
h ^= str[i]; \
|
|
h *= prime; \
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
}
|
|
#endif // TSNTABES_SRC_PHASH_FNV1_1A_MAIN_MQH
|
|
//+------------------------------------------------------------------+
|