#pragma once #include "HashFunctions.h" #include "kstdio.h" namespace AK { template struct GenericTraits { static bool equals(const T& a, const T& b) { return a == b; } }; template struct Traits : public GenericTraits { }; template<> struct Traits : public GenericTraits { static unsigned hash(int i) { return int_hash(i); } static void dump(int i) { kprintf("%d", i); } }; template<> struct Traits : public GenericTraits { static unsigned hash(unsigned u) { return int_hash(u); } static void dump(unsigned u) { kprintf("%u", u); } }; template<> struct Traits : public GenericTraits { static unsigned hash(word u) { return int_hash(u); } static void dump(word u) { kprintf("%u", u); } }; template struct Traits { static unsigned hash(const T* p) { return int_hash((unsigned)(__PTRDIFF_TYPE__)p); } static void dump(const T* p) { kprintf("%p", p); } static bool equals(const T* a, const T* b) { return a == b; } }; }