فهرست منبع

meta: return a string_view from name()

skypjack 1 ماه پیش
والد
کامیت
deed237bbe
4فایلهای تغییر یافته به همراه23 افزوده شده و 19 حذف شده
  1. 7 6
      src/entt/meta/meta.hpp
  2. 7 6
      test/entt/meta/meta_data.cpp
  3. 4 3
      test/entt/meta/meta_func.cpp
  4. 5 4
      test/entt/meta/meta_type.cpp

+ 7 - 6
src/entt/meta/meta.hpp

@@ -5,6 +5,7 @@
 #include <cstddef>
 #include <iterator>
 #include <memory>
+#include <string_view>
 #include <type_traits>
 #include <utility>
 #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};
     }
 
     /**

+ 7 - 6
test/entt/meta/meta_data.cpp

@@ -1,5 +1,6 @@
 #include <cstdlib>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <gtest/gtest.h>
 #include <entt/core/hashed_string.hpp>
@@ -169,13 +170,13 @@ TEST_F(MetaData, Name) {
     const entt::meta_type type = entt::resolve<clazz>();
     const entt::meta_type other = entt::resolve<setter_getter>();
 
-    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) {

+ 4 - 3
test/entt/meta/meta_func.cpp

@@ -1,4 +1,5 @@
 #include <cstddef>
+#include <string_view>
 #include <type_traits>
 #include <utility>
 #include <gtest/gtest.h>
@@ -214,9 +215,9 @@ TEST_F(MetaFunc, Name) {
 
     const entt::meta_type type = entt::resolve<derived>();
 
-    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) {

+ 5 - 4
test/entt/meta/meta_type.cpp

@@ -2,6 +2,7 @@
 #include <cstdint>
 #include <map>
 #include <memory>
+#include <string_view>
 #include <utility>
 #include <vector>
 #include <gtest/gtest.h>
@@ -313,10 +314,10 @@ TEST_F(MetaType, IdAndInfo) {
 TEST_F(MetaType, Name) {
     using namespace entt::literals;
 
-    ASSERT_EQ(entt::resolve<base>().name(), nullptr);
-    ASSERT_STREQ(entt::resolve<derived>().name(), "derived");
-    ASSERT_STREQ(entt::resolve<unsigned int>().name(), "uint");
-    ASSERT_EQ(entt::resolve<void>().name(), nullptr);
+    ASSERT_EQ(entt::resolve<base>().name(), std::string_view{});
+    ASSERT_EQ(entt::resolve<derived>().name(), std::string_view{"derived"});
+    ASSERT_EQ(entt::resolve<unsigned int>().name(), std::string_view{"uint"});
+    ASSERT_EQ(entt::resolve<void>().name(), std::string_view{});
 }
 
 TEST_F(MetaType, SizeOf) {