23 other.m_objects =
nullptr;
34 template<
typename... Args>
39 std::forward<Args>(args)...);
46 T*
get(
size_t index)
const
54 for (
size_t i = 0; i <
m_size; ++i)
65 template<
typename T,
typename... Args>
104 ret = std::apply([
this](
auto&&... args)
108 std::forward<
decltype(args)>(args)...);
113 ret = std::apply([
this](
auto&&... args)
117 std::forward<
decltype(args)>(args)...);
125 ret->setDeleter([
this,index](T* ptr)
140 boost::lockfree::queue<size_t,boost::lockfree::capacity<1024>>
m_freeIndices;
T * addSingle(size_t index, Args... args)
ObjectPoolChunk(const ObjectPoolChunk &other)=delete
T * addSingle(size_t index)
T * get(size_t index) const
ObjectPoolChunk(ObjectPoolChunk &&other) noexcept
std::vector< ObjectPoolChunk< T > > m_chunks
void setDestroyCallback(DestroyCallback callback)
boost::lockfree::queue< size_t, boost::lockfree::capacity< 1024 > > m_freeIndices
std::tuple< Args... > m_constructorArgs
std::function< void(T *)> DestroyCallback
DestroyCallback m_destroyCallback
constexpr size_t SingleChunkObjectNums
T * AllocatorNew(size_t size)
void AllocatorDelete(T *ptr)