#include <unordered_set>
#include <algorithm>
#include <thread>
-#include <queue>
#include <mutex>
#ifndef NDEBUG
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;
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;
}
// 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));
}
currentSize = rhs + 1;
- return changedQueue;
+ return changedVector;
}
/*!
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));
{
EXPECT_TRUE(std::get<0>(t));
}
- changedQueue.pop();
}
EXPECT_FALSE(manager.hasEntity(2));