20 #ifndef __STRINGPOOL_HPP
21 #define __STRINGPOOL_HPP
23 #include <xqilla/framework/XQillaExport.hpp>
35 StringPool(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm);
39 const XMLCh* getPooledString(
const XMLCh *src);
41 const XMLCh* getPooledString(
const XMLCh *src,
unsigned int length);
43 const XMLCh* getPooledString(
const char *src);
45 unsigned int getCount()
const {
return _count; }
46 unsigned int getHits()
const {
return _hits; }
49 void dumpStatistics()
const;
55 static unsigned int hash(
const XMLCh *v,
unsigned int length);
56 const XMLCh *replicate(
const XMLCh *v,
unsigned int length)
const;
62 Bucket(
const XMLCh *v,
unsigned int l,
unsigned int h, Bucket *n)
63 : value(v), length(l), hashValue(h), next(n) {}
67 unsigned int hashValue;
71 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *_mm;
73 unsigned int _modulus;
80 inline unsigned int StringPool::hash(
const XMLCh *v,
unsigned int length)
82 unsigned int hashVal = 0;
84 hashVal += (hashVal * 37) + (hashVal >> 24) + (
unsigned int)(*v);
91 inline const XMLCh *StringPool::replicate(
const XMLCh *v,
unsigned int length)
const
93 unsigned int size = length *
sizeof(XMLCh);
94 XMLCh *ret = (XMLCh*)_mm->
allocate(size +
sizeof(XMLCh));
unsigned int getTooBig() const
Definition: StringPool.hpp:48
unsigned int getMisses() const
Definition: StringPool.hpp:47
virtual void * allocate(XMLSize_t size)=0
This method allocates requested memory.
Definition: StringPool.hpp:32
unsigned int getHits() const
Definition: StringPool.hpp:46
unsigned int getCount() const
Definition: StringPool.hpp:45