From deed237bbed2993de4ea52f5b51d29cddfa3fd4e Mon Sep 17 00:00:00 2001 From: skypjack Date: Mon, 5 Jan 2026 12:15:34 +0100 Subject: [PATCH] meta: return a string_view from name() --- src/entt/meta/meta.hpp | 13 +++++++------ test/entt/meta/meta_data.cpp | 13 +++++++------ test/entt/meta/meta_func.cpp | 7 ++++--- test/entt/meta/meta_type.cpp | 9 +++++---- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/entt/meta/meta.hpp b/src/entt/meta/meta.hpp index b9aba3020..5f38cc853 100644 --- a/src/entt/meta/meta.hpp +++ b/src/entt/meta/meta.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include "../config/config.h" @@ -803,8 +804,8 @@ public: * @brief Returns the name assigned to a data member, if any. * @return The name assigned to the data member, if any. */ - [[nodiscard]] const char *name() const noexcept { - return node_or_assert().name; + [[nodiscard]] std::string_view name() const noexcept { + return (node_or_assert().name == nullptr) ? std::string_view{} : std::string_view{node_or_assert().name}; } /** @@ -943,8 +944,8 @@ public: * @brief Returns the name assigned to a member function, if any. * @return The name assigned to the member function, if any. */ - [[nodiscard]] const char *name() const noexcept { - return node_or_assert().name; + [[nodiscard]] std::string_view name() const noexcept { + return (node_or_assert().name == nullptr) ? std::string_view{} : std::string_view{node_or_assert().name}; } /** @@ -1153,8 +1154,8 @@ public: * @brief Returns the name assigned to a type, if any. * @return The name assigned to the type, if any. */ - [[nodiscard]] const char *name() const noexcept { - return fetch_node().name; + [[nodiscard]] std::string_view name() const noexcept { + return (fetch_node().name == nullptr) ? std::string_view{} : std::string_view{fetch_node().name}; } /** diff --git a/test/entt/meta/meta_data.cpp b/test/entt/meta/meta_data.cpp index f76cbfa6e..ee0980918 100644 --- a/test/entt/meta/meta_data.cpp +++ b/test/entt/meta/meta_data.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -169,13 +170,13 @@ TEST_F(MetaData, Name) { const entt::meta_type type = entt::resolve(); const entt::meta_type other = entt::resolve(); - ASSERT_EQ(type.data("i"_hs).name(), nullptr); - ASSERT_STREQ(type.data("j"_hs).name(), "j"); - ASSERT_STREQ(type.data("h"_hs).name(), "hhh"); + ASSERT_EQ(type.data("i"_hs).name(), std::string_view{}); + ASSERT_EQ(type.data("j"_hs).name(), std::string_view{"j"}); + ASSERT_EQ(type.data("h"_hs).name(), std::string_view{"hhh"}); - ASSERT_EQ(other.data("z"_hs).name(), nullptr); - ASSERT_STREQ(other.data("w"_hs).name(), "w"); - ASSERT_STREQ(other.data("z_ro"_hs).name(), "readonly"); + ASSERT_EQ(other.data("z"_hs).name(), std::string_view{}); + ASSERT_EQ(other.data("w"_hs).name(), std::string_view{"w"}); + ASSERT_EQ(other.data("z_ro"_hs).name(), std::string_view{"readonly"}); } TEST_F(MetaData, Comparison) { diff --git a/test/entt/meta/meta_func.cpp b/test/entt/meta/meta_func.cpp index bea7d509a..fbef90288 100644 --- a/test/entt/meta/meta_func.cpp +++ b/test/entt/meta/meta_func.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -214,9 +215,9 @@ TEST_F(MetaFunc, Name) { const entt::meta_type type = entt::resolve(); - ASSERT_EQ(type.func("setter_from_base"_hs).name(), nullptr); - ASSERT_STREQ(type.func("getter_from_base"_hs).name(), "getter_from_base"); - ASSERT_STREQ(type.func("static_setter_from_base"_hs).name(), "static setter"); + ASSERT_EQ(type.func("setter_from_base"_hs).name(), std::string_view{}); + ASSERT_EQ(type.func("getter_from_base"_hs).name(), std::string_view{"getter_from_base"}); + ASSERT_EQ(type.func("static_setter_from_base"_hs).name(), std::string_view{"static setter"}); } TEST_F(MetaFunc, Comparison) { diff --git a/test/entt/meta/meta_type.cpp b/test/entt/meta/meta_type.cpp index d5c355a5d..d73974cb7 100644 --- a/test/entt/meta/meta_type.cpp +++ b/test/entt/meta/meta_type.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -313,10 +314,10 @@ TEST_F(MetaType, IdAndInfo) { TEST_F(MetaType, Name) { using namespace entt::literals; - ASSERT_EQ(entt::resolve().name(), nullptr); - ASSERT_STREQ(entt::resolve().name(), "derived"); - ASSERT_STREQ(entt::resolve().name(), "uint"); - ASSERT_EQ(entt::resolve().name(), nullptr); + ASSERT_EQ(entt::resolve().name(), std::string_view{}); + ASSERT_EQ(entt::resolve().name(), std::string_view{"derived"}); + ASSERT_EQ(entt::resolve().name(), std::string_view{"uint"}); + ASSERT_EQ(entt::resolve().name(), std::string_view{}); } TEST_F(MetaType, SizeOf) {