34 template<
class T,
class HashFunction,
class Equals = std::equal_to<T>>
requires(std::is_trivial<T>::value
and std::is_copy_constructible_v<T>)
35 class ScratchHashSet32;
44 template<
class T,
class HashFunction,
class Equals>
requires(std::is_trivial<T>::value
and std::is_copy_constructible_v<T>)
60 inline bool Insert(
const T&
key);
77 uint8* mOcupied =
nullptr;
92 template<
class T,
class HashFunction,
class Equals>
requires(std::is_trivial<T>::value
and std::is_copy_constructible_v<T>)
104 template<
class T,
class HashFunction,
class Equals>
requires(std::is_trivial<T>::value
and std::is_copy_constructible_v<T>)
107 const std::size_t capacity = GetCapacityForCount(
expectedCount);
108 return capacity *
sizeof(T)
109 + capacity *
sizeof(
uint8);
112 template<
class T,
class HashFunction,
class Equals>
requires(std::is_trivial<T>::value
and std::is_copy_constructible_v<T>)
120 template<
class T,
class HashFunction,
class Equals>
requires(std::is_trivial<T>::value
and std::is_copy_constructible_v<T>)
124 mMask = mCapacity - 1u;
127 const std::size_t
slotsBytes =
static_cast<std::size_t
>(mCapacity) *
sizeof(T);
128 const std::size_t
flagsBytes =
static_cast<std::size_t
>(mCapacity) *
sizeof(
uint8);
132 std::byte*
ptr =
static_cast<std::byte*
>(
memory);
133 mKeys =
reinterpret_cast<T*
>(
ptr);
139 template<
class T,
class HashFunction,
class Equals>
requires(std::is_trivial<T>::value
and std::is_copy_constructible_v<T>)
146 if (
not mOcupied[index])
154 if (mEquals(mKeys[index],
key))
159 index = (index + 1u) & mMask;
166 template<
class T,
class HashFunction,
class Equals>
requires(std::is_trivial<T>::value
and std::is_copy_constructible_v<T>)
173 if (
not mOcupied[index])
178 if (mEquals(mKeys[index],
key))
183 index = (index + 1u) & mMask;
189 template<
class T,
class HashFunction,
class Equals>
requires(std::is_trivial<T>::value
and std::is_copy_constructible_v<T>)
192 std::memset(mOcupied, 0,
static_cast<std::size_t
>(mCapacity) *
sizeof(
uint8));
#define JPL_ASSERT(inExpression,...)
Main assert macro, usage: JPL_ASSERT(condition, message) or JPL_ASSERT(condition)
Definition ErrorReporting.h:76
Definition ScratchHashSet.h:46
JPL_INLINE uint32 capacity() const
Definition ScratchHashSet.h:68
ScratchHashSet32()=default
JPL_INLINE uint32 size() const
Definition ScratchHashSet.h:67
Definition AcousticMaterial.h:36
std::uint32_t uint32
Definition Core.h:311
std::uint8_t uint8
Definition Core.h:309
JPL_INLINE simd min(const simd &a, const simd &b) noexcept
Element-wise min.
Definition SIMD.h:1813