TsnTables/Src/PHash/FNV1-1A/Main.mqh
Nique_372 b0350848d4
2026-07-03 16:05:36 -05:00

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
//+------------------------------------------------------------------+