Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/H/hkStringPtr.h
T
2026-05-30 18:33:24 +12:00

54 lines
905 B
C++

#pragma once
namespace RE
{
class hkStringPtr
{
public:
using size_type = std::int32_t;
hkStringPtr() = default;
hkStringPtr(const char* a_data)
{
using func_t = std::add_pointer_t<void(hkStringPtr*, const char*)>;
static REL::Relocation<func_t> func{ ID::hkStringPtr::ctor };
func(this, a_data);
}
const char* data() const noexcept
{
return reinterpret_cast<const char*>(reinterpret_cast<std::uintptr_t>(m_data) & ~kManaged);
}
const char* c_str() const noexcept
{
return data();
}
bool empty() const noexcept
{
return !m_data || m_data[0] == '\0';
}
size_type size() const
{
return static_cast<size_type>(std::strlen(data()));
}
size_type length() const
{
return size();
}
protected:
enum : std::int32_t
{
kManaged = 1 << 0
};
const char* m_data{ nullptr }; // 0
};
static_assert(sizeof(hkStringPtr) == 0x8);
}