20#ifndef __STRINGPOOL_HPP
21#define __STRINGPOOL_HPP
23#include <xqilla/framework/XQillaExport.hpp>
35 StringPool(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm);
45 unsigned int getCount()
const {
return _count; }
46 unsigned int getHits()
const {
return _hits; }
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;
80inline unsigned int StringPool::hash(
const XMLCh *v,
unsigned int length)
82 unsigned int hashVal = 0;
84 hashVal += (hashVal * 37) + (hashVal >> 24) + (
unsigned int)(*v);
91inline 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));
Definition StringPool.hpp:33
const XMLCh * getPooledString(const XMLCh *src)
Returns a copy of the given string.
unsigned int getHits() const
Definition StringPool.hpp:46
unsigned int getMisses() const
Definition StringPool.hpp:47
const XMLCh * getPooledString(const XMLCh *src, unsigned int length)
Returns a copy of the given string, with given length.
void dumpStatistics() const
StringPool(xercesc::MemoryManager *mm)
unsigned int getCount() const
Definition StringPool.hpp:45
const XMLCh * getPooledString(const char *src)
Returns a copy of the transcoding of the given string.
unsigned int getTooBig() const
Definition StringPool.hpp:48
virtual void * allocate(XMLSize_t size)=0
This method allocates requested memory.