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());
154 inline T*
get(void) {
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();
258 inline T *
get(void) {
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*() {
T * get(void)
Get a typed object from the pager heap.
void release(T *object)
Release (return) a typed object back to the pager heap for re-use.
bool operator!() const
Test if the entire heap has been allocated.
T * get(void)
Get a typed object from the heap.
T * create(void)
Create a typed object from the heap.
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 heap for re-use.
A reusable private pool of reusable types.
A managed private heap for small allocations.
Reusable objects for forming private heaps.
An array of reusable objects.
Common namespace for all ucommon objects.
T * request(void)
Request immediately next available typed object from the heap.
Thread classes and sychronization objects.
paged_reuse(mempager *pager, unsigned count)
Create a managed reusable typed object pool.
T * create(timeout_t timeout)
Create a typed object from the heap.
T * operator*()
Get a typed object from the heap by pointer reference.
A redirection base class for the memory protocol.
array_reuse(unsigned count)
Create private heap of reusable objects of specified type.
T * create(timeout_t timeout)
Create a typed object from the heap.
An array of reusable types.
A mempager source of reusable objects.
Class for resource bound memory pools between threads.
Mempager managed type factory for pager pool objects.
bool operator!() const
Test if no objects are available for reuse or the pager.
T * create(void)
Get a typed object from the pager heap.
T &() limit(T &value, T &low, T &high)
Convenience macro to range restrict values.
void release(ReusableObject *object)
Release resuable object.
array_reuse(unsigned count, void *memory)
Create reusable objects of specific type in preallocated memory.
T * operator*()
Get a typed object from the pager heap by type casting reference.