Переглянути джерело

sparse_set: bump returns the version in use (for convenience)

Michele Caini 3 роки тому
батько
коміт
312d3aba84
2 змінених файлів з 6 додано та 4 видалено
  1. 3 1
      src/entt/entity/sparse_set.hpp
  2. 3 3
      test/entt/entity/sparse_set.cpp

+ 3 - 1
src/entt/entity/sparse_set.hpp

@@ -748,12 +748,14 @@ public:
      * sparse set results in undefined behavior.
      *
      * @param entt A valid identifier.
+     * @return The version of the given identifier.
      */
-    void bump(const entity_type entt) {
+    version_type bump(const entity_type entt) {
         auto &entity = sparse_ref(entt);
         ENTT_ASSERT(entt != tombstone && entity != null, "Cannot set the required version");
         entity = traits_type::combine(traits_type::to_integral(entity), traits_type::to_integral(entt));
         packed[static_cast<size_type>(traits_type::to_entity(entity))] = entt;
+        return traits_type::to_version(entt);
     }
 
     /**

+ 3 - 3
test/entt/entity/sparse_set.cpp

@@ -372,9 +372,9 @@ TEST(SparseSet, Bump) {
     ASSERT_EQ(set.current(entities[1u]), 0u);
     ASSERT_EQ(set.current(entities[2u]), 3u);
 
-    set.bump(entities[0u]);
-    set.bump(traits_type::construct(traits_type::to_entity(entities[1u]), 1));
-    set.bump(traits_type::construct(traits_type::to_entity(entities[2u]), 0));
+    ASSERT_EQ(set.bump(entities[0u]), 0u);
+    ASSERT_EQ(set.bump(traits_type::construct(traits_type::to_entity(entities[1u]), 1)), 1u);
+    ASSERT_EQ(set.bump(traits_type::construct(traits_type::to_entity(entities[2u]), 0)), 0u);
 
     ASSERT_EQ(set.current(entities[0u]), 0u);
     ASSERT_EQ(set.current(entities[1u]), 1u);