CommonLibSSE (Parapets fork)
Loading...
Searching...
No Matches
GHashsetNodeEntry.h
Go to the documentation of this file.
1#pragma once
2
3namespace RE
4{
5 template <class T, class Hash>
7 {
8 public:
10 nextInChain(-2)
11 {}
12
14 nextInChain(a_entry.nextInChain),
15 value(a_entry.value)
16 {}
17
18 GHashsetNodeEntry(const T& a_key, SPInt a_next) :
19 nextInChain(a_next),
20 value(a_key)
21 {}
22
23 GHashsetNodeEntry(const typename T::NodeRef& a_keyRef, SPInt a_next) :
24 nextInChain(a_next),
25 value(a_keyRef)
26 {}
27
28 [[nodiscard]] bool IsEmpty() const
29 {
30 return nextInChain == -2;
31 }
32
33 [[nodiscard]] bool IsEndOfChain() const
34 {
35 return nextInChain == -1;
36 }
37
38 [[nodiscard]] UPInt GetCachedHash(UPInt a_maskValue) const
39 {
40 return Hash()(value) & a_maskValue;
41 }
42
43 void SetCachedHash([[maybe_unused]] UPInt a_hashValue)
44 {}
45
46 void Clear()
47 {
48 value.~T();
49 nextInChain = -2;
50 }
51
52 void Free()
53 {
54 Clear();
55 }
56
57 // members
59 T value; // 08
60 };
61 // size == 0x8 + sizeof(T)
62}
Definition: GHashsetNodeEntry.h:7
void Free()
Definition: GHashsetNodeEntry.h:52
GHashsetNodeEntry()
Definition: GHashsetNodeEntry.h:9
T value
Definition: GHashsetNodeEntry.h:59
bool IsEmpty() const
Definition: GHashsetNodeEntry.h:28
bool IsEndOfChain() const
Definition: GHashsetNodeEntry.h:33
GHashsetNodeEntry(const GHashsetNodeEntry &a_entry)
Definition: GHashsetNodeEntry.h:13
void Clear()
Definition: GHashsetNodeEntry.h:46
SPInt nextInChain
Definition: GHashsetNodeEntry.h:58
UPInt GetCachedHash(UPInt a_maskValue) const
Definition: GHashsetNodeEntry.h:38
void SetCachedHash(UPInt a_hashValue)
Definition: GHashsetNodeEntry.h:43
GHashsetNodeEntry(const typename T::NodeRef &a_keyRef, SPInt a_next)
Definition: GHashsetNodeEntry.h:23
GHashsetNodeEntry(const T &a_key, SPInt a_next)
Definition: GHashsetNodeEntry.h:18
Definition: AbsorbEffect.h:6
std::size_t UPInt
Definition: SFTypes.h:5
std::ptrdiff_t SPInt
Definition: SFTypes.h:8