29 constexpr static size_t find_first_of(
const char* data,
size_t len,
char toFind,
size_t startPos = 0) {
30 for (
size_t i = startPos; i < len; ++i) {
31 if (data[i] == toFind)
37 constexpr static size_t find_last_of(
const char* data,
size_t len,
char c,
size_t startPos =
size_t(-1)) {
38 const auto minValue = startPos <= len - 1 ? startPos : len - 1;
39 for (int64_t i = (int64_t)minValue; i >= 0; --i) {
48 static uint32_t id()
noexcept {
53 GAIA_NODISCARD
static constexpr const char* full_name()
noexcept {
54 return GAIA_PRETTY_FUNCTION;
58 GAIA_NODISCARD
static constexpr auto name()
noexcept {
75 while (GAIA_PRETTY_FUNCTION[strLen] !=
'\0')
79 const auto prefixPos = find_first_of(name.data(), name.size(), GAIA_PRETTY_FUNCTION_PREFIX);
80 const auto start = find_first_of(name.data(), name.size(),
' ', prefixPos + 1);
81 const auto end = find_last_of(name.data(), name.size(), GAIA_PRETTY_FUNCTION_SUFFIX);
82 return name.subspan(start + 1, end - start - 1);
86 GAIA_NODISCARD
static constexpr auto hash()
noexcept {
87#if GAIA_COMPILER_MSVC && _MSC_VER <= 1916
88 GAIA_MSVC_WARNING_PUSH()
89 GAIA_MSVC_WARNING_DISABLE(4307)
93 return core::calculate_hash64(n.data(), n.size());
95#if GAIA_COMPILER_MSVC && _MSC_VER <= 1916
96 GAIA_MSVC_WARNING_PUSH()