//+------------------------------------------------------------------+ //| Def.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_XXHASH_DEF_MQH #define TSNTABES_SRC_PHASH_XXHASH_DEF_MQH namespace TSN { //+------------------------------------------------------------------+ //| Defines | //+------------------------------------------------------------------+ #define XXH_PRIME64_1 0x9E3779B185EBCA87 /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */ #define XXH_PRIME64_2 0xC2B2AE3D27D4EB4F /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */ #define XXH_PRIME64_3 0x165667B19E3779F9 /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */ #define XXH_PRIME64_4 0x85EBCA77C2B2AE63 /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */ #define XXH_PRIME64_5 0x27D4EB2F165667C5 /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */ //--- #define XXH_GET_64(v,i) (ulong(v[i]) | ulong(v[i+1]) << 8 | ulong(v[i+2]) << 16 | ulong(v[i+3]) << 24 | ulong(v[i+4]) << 32 | ulong(v[i+5]) << 40| ulong(v[i+6]) << 48| ulong(v[i+7]) << 56) #define XXH_GET_32(v,i) (ulong(v[i]) | ulong(v[i+1]) << 8 | ulong(v[i+2]) << 16 | ulong(v[i+3]) << 24) //--- #define XXH_rotl32(x,r) (((x) << (r)) | ((x) >> (32 - (r)))) #define XXH_rotl64(x,r) (((x) << (r)) | ((x) >> (64 - (r)))) #define XXH64_round(acc, in, val_name) \ acc += in * XXH_PRIME64_2; \ acc = XXH_rotl64(acc, 31); \ acc *= XXH_PRIME64_1; \ const ulong val_name = acc; \ #define XXH64_round_i(acc, in, val_name) \ acc += in * XXH_PRIME64_2; \ acc = XXH_rotl64(acc, 31); \ acc *= XXH_PRIME64_1; \ val_name = acc; \ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ __forceinline ulong XXH64_MergeRound(ulong acc, ulong val) { ulong k = 0; XXH64_round_i(k, val, val) acc ^= val; acc = acc * XXH_PRIME64_1 + XXH_PRIME64_4; return acc; } } #endif // TSNTABES_SRC_PHASH_XXHASH_DEF_MQH