]> git.seodisparate.com - EntityComponentMetaSystem/commitdiff
Change CleanupReturnType to std::vector
authorStephen Seo <seo.disparate@gmail.com>
Fri, 24 Nov 2017 05:58:00 +0000 (14:58 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Fri, 24 Nov 2017 05:58:00 +0000 (14:58 +0900)
src/EC/Manager.hpp
src/test/ECTest.cpp

index 064feaa31297885697c235560580eb530c5eda00..1c2a357f5537ba50c54da5d177958a923019b7be 100644 (file)
@@ -21,7 +21,6 @@
 #include <unordered_set>
 #include <algorithm>
 #include <thread>
-#include <queue>
 #include <mutex>
 
 #ifndef NDEBUG
@@ -331,13 +330,13 @@ namespace EC
             parameter is undefined as it is not used in that case.
         */
         using CleanupReturnType =
-            std::queue<std::tuple<bool, std::size_t, std::size_t> >;
+            std::vector<std::tuple<bool, std::size_t, std::size_t> >;
         CleanupReturnType cleanup()
         {
-            CleanupReturnType changedQueue;
+            CleanupReturnType changedVector;
             if(currentSize == 0)
             {
-                return changedQueue;
+                return changedVector;
             }
 
             std::size_t rhs = currentSize - 1;
@@ -350,9 +349,9 @@ namespace EC
                     if(rhs == 0)
                     {
                         currentSize = 0;
-                        return changedQueue;
+                        return changedVector;
                     }
-                    changedQueue.push(std::make_tuple(false, rhs, 0));
+                    changedVector.push_back(std::make_tuple(false, rhs, 0));
                     std::get<BitsetType>(entities[rhs]).reset();
                     --rhs;
                 }
@@ -365,8 +364,8 @@ namespace EC
                     // lhs is marked for deletion
 
                     // store deleted and changed id to queue
-                    changedQueue.push(std::make_tuple(false, lhs, 0));
-                    changedQueue.push(std::make_tuple(true, rhs, lhs));
+                    changedVector.push_back(std::make_tuple(false, lhs, 0));
+                    changedVector.push_back(std::make_tuple(true, rhs, lhs));
 
                     // swap lhs entity with rhs entity
                     std::swap(entities[lhs], entities.at(rhs));
@@ -384,7 +383,7 @@ namespace EC
             }
             currentSize = rhs + 1;
 
-            return changedQueue;
+            return changedVector;
         }
 
         /*!
index c5d8c9acdc0bab992572a8ce6bc3d5ddb9a6bad4..c2d042e2a54f86744883bebc7658b541fe0a95ca 100644 (file)
@@ -443,11 +443,10 @@ TEST(EC, DeletedEntityID)
     manager.deleteEntity(e0);
     manager.deleteEntity(e1);
 
-    auto changedQueue = manager.cleanup();
+    auto changedVector = manager.cleanup();
 
-    while(!changedQueue.empty())
+    for(const auto& t : changedVector)
     {
-        auto t = changedQueue.front();
         if(std::get<1>(t) == 0)
         {
             EXPECT_FALSE(std::get<0>(t));
@@ -460,7 +459,6 @@ TEST(EC, DeletedEntityID)
         {
             EXPECT_TRUE(std::get<0>(t));
         }
-        changedQueue.pop();
     }
 
     EXPECT_FALSE(manager.hasEntity(2));