20 #ifndef __XPATH2MEMORYMANAGER_HPP
21 #define __XPATH2MEMORYMANAGER_HPP
27 #include <xqilla/framework/XQillaExport.hpp>
31 XERCES_CPP_NAMESPACE_BEGIN
34 XERCES_CPP_NAMESPACE_END
40 class CollationHelper;
41 class XQillaNSResolver;
51 virtual void reset() = 0;
54 virtual const XMLCh* getPooledString(
const XMLCh *src) = 0;
55 virtual const XMLCh* getPooledString(
const XMLCh *src,
unsigned int length) = 0;
56 virtual const XMLCh* getPooledString(
const char *src) = 0;
59 #if _XERCES_VERSION >= 30000
60 virtual void* allocate(XMLSize_t numElements) = 0;
62 virtual void* allocate(
size_t numElements) = 0;
64 virtual void deallocate(
void* p) = 0;
67 virtual Collation* createCollation(CollationHelper* helper) = 0;
70 virtual XQillaNSResolver* createNSResolver(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *resolverNode) = 0;
78 virtual void dumpStatistics()
const = 0;
79 virtual size_t getAllocatedObjectCount()
const = 0;
80 virtual size_t getTotalAllocatedMemory()
const = 0;
81 virtual const StringPool *getStringPool()
const = 0;
96 template <
class _Tp1>
struct rebind {
131 return _n != 0 ?
static_cast<pointer>(malloc(_n*
sizeof(_Tp))) : 0;
149 new ((
void *)_p) _Tp(_v);
183 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager*
_memMgr;
192 inline void *
operator new(
size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr)
198 inline void operator delete(
void* ptr, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr)
200 memMgr->deallocate(ptr);
223 operator TYPE*()
const
276 operator TYPE*()
const
328 operator TYPE*()
const
365 AutoDeallocate(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr,
size_t size =
sizeof(TYPE))
366 : p_(0), mmgr_(mmgr) {
370 : p_(p), mmgr_(mmgr) {}
385 operator TYPE*()
const
417 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr_;
420 #endif //__XPATH2MEMORYMANAGER_HPP