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