#ifndef CORE_HASH_CODE_H
#define CORE_HASH_CODE_H

#include "utils/Utility.h"

namespace Core {
    template<typename H>
    u32 hashCode(const H& key) {
        return key.hashCode();
    }

    u32 hashCode(char key);
    u32 hashCode(signed char key);
    u32 hashCode(signed short key);
    u32 hashCode(signed int key);
    u32 hashCode(signed long key);
    u32 hashCode(signed long long key);
    u32 hashCode(unsigned char key);
    u32 hashCode(unsigned short key);
    u32 hashCode(unsigned int key);
    u32 hashCode(unsigned long key);
    u32 hashCode(unsigned long long key);
}

#endif