Browse Source

registry: ::sortable -> ::owned for component types (close #847)

Michele Caini 4 years ago
parent
commit
5adf332a5f
2 changed files with 19 additions and 19 deletions
  1. 5 5
      src/entt/entity/registry.hpp
  2. 14 14
      test/entt/entity/registry.cpp

+ 5 - 5
src/entt/entity/registry.hpp

@@ -1357,12 +1357,12 @@ public:
     /**
      * @brief Checks whether the given components belong to any group.
      * @tparam Component Types of components in which one is interested.
-     * @return True if the pools of the given components are sortable, false
+     * @return True if the pools of the given components are _free_, false
      * otherwise.
      */
     template<typename... Component>
-    [[nodiscard]] bool sortable() const {
-        return std::none_of(groups.cbegin(), groups.cend(), [](auto &&gdata) { return (gdata.owned(type_hash<std::remove_const_t<Component>>::value()) || ...); });
+    [[nodiscard]] bool owned() const {
+        return std::any_of(groups.cbegin(), groups.cend(), [](auto &&gdata) { return (gdata.owned(type_hash<std::remove_const_t<Component>>::value()) || ...); });
     }
 
     /**
@@ -1416,7 +1416,7 @@ public:
      */
     template<typename Component, typename Compare, typename Sort = std_sort, typename... Args>
     void sort(Compare compare, Sort algo = Sort{}, Args &&...args) {
-        ENTT_ASSERT(sortable<Component>(), "Cannot sort owned storage");
+        ENTT_ASSERT(!owned<Component>(), "Cannot sort owned storage");
         auto &cpool = assure<Component>();
 
         if constexpr(std::is_invocable_v<Compare, decltype(cpool.get({})), decltype(cpool.get({}))>) {
@@ -1448,7 +1448,7 @@ public:
      */
     template<typename To, typename From>
     void sort() {
-        ENTT_ASSERT(sortable<To>(), "Cannot sort owned storage");
+        ENTT_ASSERT(!owned<To>(), "Cannot sort owned storage");
         assure<To>().respect(assure<From>());
     }
 

+ 14 - 14
test/entt/entity/registry.cpp

@@ -874,7 +874,7 @@ TEST(Registry, NonOwningGroupInitOnFirstUse) {
     auto group = registry.group<>(entt::get<int, char>);
     group.each([&cnt](auto...) { ++cnt; });
 
-    ASSERT_TRUE((registry.sortable<int, char>()));
+    ASSERT_FALSE((registry.owned<int, char>()));
     ASSERT_EQ(cnt, 2u);
 }
 
@@ -891,7 +891,7 @@ TEST(Registry, NonOwningGroupInitOnEmplace) {
     std::size_t cnt{};
     group.each([&cnt](auto...) { ++cnt; });
 
-    ASSERT_TRUE((registry.sortable<int, char>()));
+    ASSERT_FALSE((registry.owned<int, char>()));
     ASSERT_EQ(cnt, 2u);
 }
 
@@ -908,9 +908,9 @@ TEST(Registry, FullOwningGroupInitOnFirstUse) {
     auto group = registry.group<int, char>();
     group.each([&cnt](auto...) { ++cnt; });
 
-    ASSERT_FALSE(registry.sortable<int>());
-    ASSERT_FALSE(registry.sortable<char>());
-    ASSERT_TRUE(registry.sortable<double>());
+    ASSERT_TRUE(registry.owned<int>());
+    ASSERT_TRUE(registry.owned<char>());
+    ASSERT_FALSE(registry.owned<double>());
     ASSERT_EQ(cnt, 2u);
 }
 
@@ -927,9 +927,9 @@ TEST(Registry, FullOwningGroupInitOnEmplace) {
     std::size_t cnt{};
     group.each([&cnt](auto...) { ++cnt; });
 
-    ASSERT_FALSE(registry.sortable<int>());
-    ASSERT_FALSE(registry.sortable<char>());
-    ASSERT_TRUE(registry.sortable<double>());
+    ASSERT_TRUE(registry.owned<int>());
+    ASSERT_TRUE(registry.owned<char>());
+    ASSERT_FALSE(registry.owned<double>());
     ASSERT_EQ(cnt, 2u);
 }
 
@@ -946,9 +946,9 @@ TEST(Registry, PartialOwningGroupInitOnFirstUse) {
     auto group = registry.group<int>(entt::get<char>);
     group.each([&cnt](auto...) { ++cnt; });
 
-    ASSERT_FALSE((registry.sortable<int, char>()));
-    ASSERT_FALSE(registry.sortable<int>());
-    ASSERT_TRUE(registry.sortable<char>());
+    ASSERT_TRUE((registry.owned<int, char>()));
+    ASSERT_TRUE(registry.owned<int>());
+    ASSERT_FALSE(registry.owned<char>());
     ASSERT_EQ(cnt, 2u);
 }
 
@@ -965,9 +965,9 @@ TEST(Registry, PartialOwningGroupInitOnEmplace) {
     std::size_t cnt{};
     group.each([&cnt](auto...) { ++cnt; });
 
-    ASSERT_FALSE((registry.sortable<int, char>()));
-    ASSERT_FALSE(registry.sortable<int>());
-    ASSERT_TRUE(registry.sortable<char>());
+    ASSERT_TRUE((registry.owned<int, char>()));
+    ASSERT_TRUE(registry.owned<int>());
+    ASSERT_FALSE(registry.owned<char>());
     ASSERT_EQ(cnt, 2u);
 }