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