mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-25 09:00:22 +00:00
AK: Add a u64 Trait type
This allows u64s to be used in HashMaps.
This commit is contained in:
parent
9e22b83343
commit
d5fea1b235
Notes:
sideshowbarker
2024-07-19 10:21:27 +09:00
Author: https://github.com/shannonbooth Commit: https://github.com/SerenityOS/serenity/commit/d5fea1b2352 Pull-request: https://github.com/SerenityOS/serenity/pull/1009
2 changed files with 14 additions and 0 deletions
|
@ -17,3 +17,10 @@ inline unsigned pair_int_hash(u32 key1, u32 key2)
|
|||
{
|
||||
return int_hash((int_hash(key1) * 209) ^ (int_hash(key2 * 413)));
|
||||
}
|
||||
|
||||
inline unsigned u64_hash(u64 key)
|
||||
{
|
||||
u32 first = key & 0xFFFFFFFF;
|
||||
u32 last = key >> 32;
|
||||
return pair_int_hash(first, last);
|
||||
}
|
||||
|
|
|
@ -37,6 +37,13 @@ struct Traits<u16> : public GenericTraits<u16> {
|
|||
static void dump(u16 u) { kprintf("%u", u); }
|
||||
};
|
||||
|
||||
template<>
|
||||
struct Traits<u64> : public GenericTraits<u64> {
|
||||
static constexpr bool is_trivial() { return true; }
|
||||
static unsigned hash(u64 u) { return u64_hash(u); }
|
||||
static void dump(u64 u) { kprintf("%u", (unsigned)u); } // FIXME: Implement unsigned long long printf specifier, instead of this sadness :(
|
||||
};
|
||||
|
||||
template<>
|
||||
struct Traits<char> : public GenericTraits<char> {
|
||||
static constexpr bool is_trivial() { return true; }
|
||||
|
|
Loading…
Reference in a new issue