21 #include "hx3d/utils/log.hpp" 26 template <
class... Args>
28 for (
unsigned int i = 0; i < size; ++i) {
29 const Ptr<T>& p = Make<T>(args...);
33 _content.push_back(p);
42 if (_available.size() > 0) {
43 const Ptr<T>& ptr = _content[_available.front()];
45 _locked.insert(ptr->getId());
51 throw std::runtime_error(
"STOP");
56 unsigned int id = ptr->getId();
57 if (_locked.find(
id) != _locked.end()) {
65 Log.
Error(
"Pool: Ptr is not working.");
72 for (
auto& i: _locked) {
73 _working.insert(_content[i]);
void release(const Ptr< T > &ptr)
Release a poolable element.
Pool(unsigned int size, Args...args)
Construct a pool with a size and arguments.
const Ptr< T > & take()
Fetch a free poolable element.
Manage poolable elements.
void Error(const std::string fmt,...)
Write an error message.
static hx3d::LogImpl Log
Current log implementation.
const std::set< Ptr< T > > & getWorking()
Get the locked elements.
std::shared_ptr< T > Ptr
Quick-typing shared ptr.