Go to the documentation of this file.
27 #ifndef _UCOMMON_REUSE_H_
28 #define _UCOMMON_REUSE_H_
30 #ifndef _UCOMMON_THREAD_H_
36 typedef unsigned short vectorsize_t;
49 unsigned count,
limit, used;
56 ArrayReuse(
size_t objsize,
unsigned c,
void *memory);
65 bool avail(
void)
const;
82 unsigned limit, count;
91 bool avail(
void)
const;
129 inline operator bool()
const {
146 return static_cast<T*
>(ArrayReuse::request());
155 return static_cast<T*
>(ArrayReuse::get());
164 return init<T>(
static_cast<T*
>(ArrayReuse::get()));
173 inline T*
get(timeout_t timeout) {
174 return static_cast<T*
>(ArrayReuse::get(timeout));
184 return init<T>(
static_cast<T*
>(ArrayReuse::get(timeout)));
200 inline operator T*() {
241 inline operator bool()
const {
242 return PagerReuse::avail();
250 return !PagerReuse::avail();
259 return static_cast<T*
>(PagerReuse::get());
269 return init<T>(
static_cast<T*
>(PagerReuse::get()));
278 inline T *
get(timeout_t timeout) {
279 return static_cast<T*
>(PagerReuse::get(timeout));
290 return init<T>(
static_cast<T*
>(PagerReuse::get(timeout)));
298 return static_cast<T*
>(PagerReuse::request());
323 inline operator T*() {
array_reuse(unsigned count)
Create private heap of reusable objects of specified type.
T &() limit(T &value, T &low, T &high)
Convenience macro to range restrict values.
T * create(void)
Get a typed object from the pager heap.
~ArrayReuse()
Destroy reusable private heap array.
T * request(void)
Request immediately next available typed object from the pager heap.
void release(T *object)
Release (return) a typed object back to the pager heap for re-use.
void release(T *object)
Release (return) a typed object back to the heap for re-use.
A redirection base class for the memory protocol.
paged_reuse(mempager *pager, unsigned count)
Create a managed reusable typed object pool.
array_reuse(unsigned count, void *memory)
Create reusable objects of specific type in preallocated memory.
bool operator!() const
Test if the entire heap has been allocated.
T * operator*()
Get a typed object from the pager heap by type casting reference.
T * get(timeout_t timeout)
Get a typed object from the heap.
A mempager source of reusable objects.
T * get(timeout_t timeout)
Get a typed object from the heap.
Common namespace for all ucommon objects.
T * create(timeout_t timeout)
Create a typed object from the heap.
T * get(void)
Get a typed object from the heap.
T * operator*()
Get a typed object from the heap by pointer reference.
A reusable private pool of reusable types.
T * request(void)
Request immediately next available typed object from the heap.
A managed private heap for small allocations.
Reusable objects for forming private heaps.
An array of reusable objects.
Class for resource bound memory pools between threads.
T * create(timeout_t timeout)
Create a typed object from the heap.
bool operator!() const
Test if no objects are available for reuse or the pager.
An array of reusable types.
Thread classes and sychronization objects.
void release(ReusableObject *object)
Release resuable object.
Mempager managed type factory for pager pool objects.
T * get(void)
Get a typed object from the pager heap.
T * create(void)
Create a typed object from the heap.