Просмотр исходного кода

view: stable single type view ::front/::back functions

Michele Caini 2 лет назад
Родитель
Сommit
e3ce4e1567
2 измененных файлов с 5 добавлено и 2 удалено
  1. 2 2
      src/entt/entity/view.hpp
  2. 3 0
      test/entt/entity/view.cpp

+ 2 - 2
src/entt/entity/view.hpp

@@ -744,7 +744,7 @@ public:
      * otherwise.
      */
     [[nodiscard]] entity_type front() const noexcept {
-        return empty() ? null : *begin();
+        return (!view || view->empty()) ? null : *view->begin();
     }
 
     /**
@@ -753,7 +753,7 @@ public:
      * otherwise.
      */
     [[nodiscard]] entity_type back() const noexcept {
-        return empty() ? null : *rbegin();
+        return (!view || view->empty()) ? null : *view->rbegin();
     }
 
     /**

+ 3 - 0
test/entt/entity/view.cpp

@@ -80,6 +80,9 @@ TEST(SingleComponentView, InvalidView) {
     ASSERT_TRUE(view.empty());
     ASSERT_FALSE(view.contains(entt::null));
 
+    ASSERT_EQ(view.front(), static_cast<entt::entity>(entt::null));
+    ASSERT_EQ(view.back(), static_cast<entt::entity>(entt::null));
+
     ASSERT_EQ(view.begin(), typename decltype(view)::iterator{});
     ASSERT_EQ(view.begin(), view.end());