/* $Id$ * */ #ifndef __PJPP_POOL_H__ #define __PJPP_POOL_H__ #include class PJ_Pool { public: const char *getobjname() const { return pj_pool_getobjname(this->pool_()); } pj_pool_t *pool_() { return (pj_pool_t*)this; } const pj_pool_t *pool_() const { return (const pj_pool_t*)this; } void release() { pj_pool_release(this->pool_()); } void reset() { pj_pool_reset(this->pool_()); } pj_size_t get_capacity() { pj_pool_get_capacity(this->pool_()); } pj_size_t get_used_size() { pj_pool_get_used_size(this->pool_()); } void *alloc(pj_size_t size) { return pj_pool_alloc(this->pool_(), size); } void *calloc(pj_size_t count, pj_size_t elem) { return pj_pool_calloc(this->pool_(), count, elem); } }; class PJ_Caching_Pool { public: void init(pj_size_t max_capacity, const pj_pool_factory_policy *pol=&pj_pool_factory_default_policy) { pj_caching_pool_init(&cp_, pol, max_capacity); } void destroy() { pj_caching_pool_destroy(&cp_); } PJ_Pool *create_pool(const char *name, pj_size_t initial_size, pj_size_t increment_size, pj_pool_callback *callback) { return (PJ_Pool*) (*cp_.factory.create_pool)(&cp_.factory, name, initial_size, increment_size, callback); } void release_pool( PJ_Pool *pool ) { pj_pool_release(pool->pool_()); } private: pj_caching_pool cp_; }; #endif /* __PJPP_POOL_H__ */