#include "utils/HashCode.h" #include "utils/Utility.h" template static u32 hashNumber(T t) { constexpr u32 L = sizeof(T) / 4 + (sizeof(T) % 4 != 0); u32 parts[L]; Core::memorySet(parts, 0, sizeof(parts)); Core::memoryCopy(parts, &t, sizeof(T)); u32 hash = 0; for(u32 i = 0; i < L; i++) { hash ^= parts[i]; } return hash; } u32 Core::hashCode(char key) { return hashNumber(key); } u32 Core::hashCode(signed char key) { return hashNumber(key); } u32 Core::hashCode(signed short key) { return hashNumber(key); } u32 Core::hashCode(signed int key) { return hashNumber(key); } u32 Core::hashCode(signed long key) { return hashNumber(key); } u32 Core::hashCode(signed long long key) { return hashNumber(key); } u32 Core::hashCode(unsigned char key) { return hashNumber(key); } u32 Core::hashCode(unsigned short key) { return hashNumber(key); } u32 Core::hashCode(unsigned int key) { return hashNumber(key); } u32 Core::hashCode(unsigned long key) { return hashNumber(key); } u32 Core::hashCode(unsigned long long key) { return hashNumber(key); }