26 static inline void release8(
const char*& a_entry)
33 static inline void release16(
const wchar_t*& a_entry)
43 std::uint16_t expected{ 0 };
49 }
while (!flags.compare_exchange_weak(expected,
static_cast<std::uint16_t
>(expected + 1)));
52 [[nodiscard]]
constexpr std::uint16_t
crc() const noexcept {
return _crc; }
55 [[nodiscard]]
const T*
data() const noexcept;
58 [[nodiscard]] inline const
char*
data<
char>() const noexcept
64 [[nodiscard]]
inline const wchar_t* data<wchar_t>() const noexcept
70 [[nodiscard]]
constexpr std::uint32_t
size() const noexcept {
return length(); }
72 [[nodiscard]]
inline const char*
u8() const noexcept
75 return reinterpret_cast<const char*
>(
this + 1);
78 [[nodiscard]]
inline const wchar_t*
u16() const noexcept
81 return reinterpret_cast<const wchar_t*
>(
this + 1);
84 [[nodiscard]]
constexpr bool wide() const noexcept {
return static_cast<bool>(
_flags &
kWide); }
89 volatile std::uint16_t
_crc;
96 static_assert(
sizeof(Entry) == 0x18);
98 static_assert(std::is_empty_v<BSStringPool>);
Definition: BSAtomic.h:49
Definition: BSStringPool.h:14
constexpr bool wide() const noexcept
Definition: BSStringPool.h:84
constexpr std::uint32_t length() const noexcept
Definition: BSStringPool.h:69
std::uint32_t _length
Definition: BSStringPool.h:92
static void release16(const wchar_t *&a_entry)
Definition: BSStringPool.h:33
Entry * _left
Definition: BSStringPool.h:87
@ kRefCountMask
Definition: BSStringPool.h:19
@ kLengthMask
Definition: BSStringPool.h:20
@ kWide
Definition: BSStringPool.h:18
constexpr std::uint16_t crc() const noexcept
Definition: BSStringPool.h:52
static void release(const char *&a_entry)
Definition: BSStringPool.h:23
constexpr std::uint32_t size() const noexcept
Definition: BSStringPool.h:70
volatile std::uint16_t _crc
Definition: BSStringPool.h:89
const char * u8() const noexcept
Definition: BSStringPool.h:72
static void release(const wchar_t *&a_entry)
Definition: BSStringPool.h:24
Entry * _right
Definition: BSStringPool.h:93
std::uint16_t _flags
Definition: BSStringPool.h:88
const wchar_t * u16() const noexcept
Definition: BSStringPool.h:78
static void release8(const char *&a_entry)
Definition: BSStringPool.h:26
const T * data() const noexcept
void acquire()
Definition: BSStringPool.h:40
Definition: Relocation.h:858
constexpr REL::ID Release16(static_cast< std::uint64_t >(69193))
constexpr REL::ID Release8(static_cast< std::uint64_t >(69192))
Definition: AbsorbEffect.h:6
char * GlobalStringHandle
Definition: BSStringPool.h:7
wchar_t * GlobalStringHandleW
Definition: BSStringPool.h:8
Definition: BSStringPool.h:11
Definition: BSStringPool.h:101
HashMask
Definition: BSStringPool.h:103
@ kEntryIndexMask
Definition: BSStringPool.h:104
@ kLockIndexMask
Definition: BSStringPool.h:105
bool initialized
Definition: BSStringPool.h:113
BSStringPool::Entry * buckets[0x10000]
Definition: BSStringPool.h:111
static BucketTable * GetSingleton()
BSSpinLock locks[0x10000/0x800]
Definition: BSStringPool.h:112