101 lines
3.5 KiB
MQL5
101 lines
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
| |||
//+------------------------------------------------------------------+
|