FastCollections-FastHashMap/Src/ColHash/Hash/Number/Int.mqh
2026-09-15 22:38:44 -05:00

101 lines
No EOL
3.5 KiB
MQL5

//+------------------------------------------------------------------+
//| Int.mqh |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com"
#property strict
#ifndef FASTCOLLECTIONSBYLEO_COLHASH_HASH_GENERIC_NUMBER_INT_MQH
#define FASTCOLLECTIONSBYLEO_COLHASH_HASH_GENERIC_NUMBER_INT_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include "Def.mqh"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
namespace TSN
{
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define GCOL_GENERICH_HASH_SIMPLE(TYPE) \
class CGenericHash_##TYPE : public CGenericHash_eq_simple<TYPE> \
{ \
public: \
CGenericHash_##TYPE() {} \
~CGenericHash_##TYPE() {} \
static ulong Hash(TYPE v) \
{ \
ulong x = (ulong)v; \
GENERICHHASH_SPLITMIX(x) \
return x; \
} \
}; \
class CGenericHash_##TYPE##_fmix : public CGenericHash_eq_simple<TYPE> \
{ \
public: \
CGenericHash_##TYPE##_fmix() {} \
~CGenericHash_##TYPE##_fmix() {} \
static ulong Hash(TYPE v) \
{ \
ulong x = (ulong)v; \
GENERICHHASH_FMIX(x) \
return x; \
} \
}; \
class CGenericHash_##TYPE##_fibbo : public CGenericHash_eq_simple<TYPE> \
{ \
public: \
CGenericHash_##TYPE##_fibbo() {} \
~CGenericHash_##TYPE##_fibbo() {} \
static __forceinline ulong Hash(const TYPE v) \
{ \
return ulong(v) * 0x9E3779B97F4A7C15; \
} \
}; \
class CGenericHash_##TYPE##_fibbo_plus : public CGenericHash_eq_simple<TYPE> \
{ \
public: \
CGenericHash_##TYPE##_fibbo_plus() {} \
~CGenericHash_##TYPE##_fibbo_plus() {} \
static __forceinline ulong Hash(TYPE v) \
{ \
ulong x = (ulong)v; \
GENERICHHASH_FIBBO_PLUS(x) \
return x; \
} \
}; \
class CGenericHash_##TYPE##_murmur : public CGenericHash_eq_simple<TYPE> \
{ \
public: \
CGenericHash_##TYPE##_murmur() {} \
~CGenericHash_##TYPE##_murmur() {} \
static ulong Hash(TYPE v) \
{ \
ulong x = (ulong)v; \
GENERICHHASH_FIBBO_MURMUR(x) \
return x; \
} \
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
GCOL_GENERICH_HASH_SIMPLE(int)
GCOL_GENERICH_HASH_SIMPLE(short)
GCOL_GENERICH_HASH_SIMPLE(char)
GCOL_GENERICH_HASH_SIMPLE(long)
GCOL_GENERICH_HASH_SIMPLE(datetime)
GCOL_GENERICH_HASH_SIMPLE(color)
GCOL_GENERICH_HASH_SIMPLE(uint)
GCOL_GENERICH_HASH_SIMPLE(ushort)
GCOL_GENERICH_HASH_SIMPLE(uchar)
}
#endif // FASTCOLLECTIONSBYLEO_COLHASH_HASH_GENERIC_NUMBER_INT_MQH
//+------------------------------------------------------------------+