31#ifndef ETL_POOL_INCLUDED
32#define ETL_POOL_INCLUDED
38#define ETL_POOL_CPP03_CODE 0
52 template <
typename T, const
size_t VSize>
62 using base_t::ALIGNMENT;
63 using base_t::TYPE_SIZE;
81 return base_t::template allocate<T>();
84#if ETL_CPP11_NOT_SUPPORTED || ETL_POOL_CPP03_CODE || ETL_USING_STLPORT
92 return base_t::template create<T>();
100 template <
typename T1>
103 return base_t::template create<T>(value1);
111 template <
typename T1,
typename T2>
112 T*
create(
const T1& value1,
const T2& value2)
114 return base_t::template create<T>(value1, value2);
122 template <
typename T1,
typename T2,
typename T3>
123 T*
create(
const T1& value1,
const T2& value2,
const T3& value3)
125 return base_t::template create<T>(value1, value2, value3);
133 template <
typename T1,
typename T2,
typename T3,
typename T4>
134 T*
create(
const T1& value1,
const T2& value2,
const T3& value3,
const T4& value4)
136 return base_t::template create<T>(value1, value2, value3, value4);
144 template <
typename... Args>
147 return base_t::template create<T>(etl::forward<Args>(args)...);
156 template <
typename U>
168 template <
typename U>
179 pool& operator =(
const pool&) ETL_DELETE;
187 template <
typename T>
194 using base_t::ALIGNMENT;
195 using base_t::TYPE_SIZE;
214 return base_t::template allocate<T>();
217#if ETL_CPP11_NOT_SUPPORTED || ETL_POOL_CPP03_CODE || ETL_USING_STLPORT
225 return base_t::template create<T>();
233 template <
typename T1>
236 return base_t::template create<T>(value1);
244 template <
typename T1,
typename T2>
245 T*
create(
const T1& value1,
const T2& value2)
247 return base_t::template create<T>(value1, value2);
255 template <
typename T1,
typename T2,
typename T3>
256 T*
create(
const T1& value1,
const T2& value2,
const T3& value3)
258 return base_t::template create<T>(value1, value2, value3);
266 template <
typename T1,
typename T2,
typename T3,
typename T4>
267 T*
create(
const T1& value1,
const T2& value2,
const T3& value3,
const T4& value4)
269 return base_t::template create<T>(value1, value2, value3, value4);
277 template <
typename... Args>
280 return base_t::template create<T>(etl::forward<Args>(args)...);
289 template <
typename U>
301 template <
typename U>
size_t size() const
Returns the number of allocated items in the pool.
Definition: ipool.h:293
pool_ext(typename base_t::element *buffer, size_t size)
Constructor.
Definition: pool.h:200
T * allocate()
Definition: pool.h:79
T * allocate()
Definition: pool.h:212
T * create(const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
Definition: pool.h:134
void release(const U *const p_object)
Definition: pool.h:290
T * create(const T1 &value1, const T2 &value2)
Definition: pool.h:112
void release(const void *const p_object)
Definition: ipool.h:239
T * create(const T1 &value1)
Definition: pool.h:234
T * create(const T1 &value1)
Definition: pool.h:101
void destroy(const U *const p_object)
Definition: pool.h:302
T * create()
Definition: pool.h:90
void destroy(const U *const p_object)
Definition: pool.h:169
void destroy(const U *const p_object)
Definition: generic_pool.h:169
T * create(const T1 &value1, const T2 &value2)
Definition: pool.h:245
T * create(const T1 &value1, const T2 &value2, const T3 &value3)
Definition: pool.h:123
T * create()
Definition: pool.h:223
T * create(const T1 &value1, const T2 &value2, const T3 &value3)
Definition: pool.h:256
pool()
Constructor.
Definition: pool.h:68
void release(const U *const p_object)
Definition: pool.h:157
T * create(const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
Definition: pool.h:267
void destroy(const U *const p_object)
Definition: generic_pool.h:337
Definition: generic_pool.h:56
Definition: generic_pool.h:213
add_rvalue_reference
Definition: type_traits_generator.h:1327
is_base_of
Definition: type_traits_generator.h:1252
is_same
Definition: type_traits_generator.h:1041
bitset_ext
Definition: absolute.h:38
Definition: alignment.h:223