2020-02-17 21:05:20 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html > < head > < meta http-equiv = "Content-Type" content = "text/html;charset=iso-8859-1" >
2020-02-17 21:11:31 +00:00
< title > XQilla Simple API Documentation< / title >
2020-02-17 21:05:20 +00:00
< link href = "doxygen.css" rel = "stylesheet" type = "text/css" >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" >
< / head > < body >
2020-02-17 21:11:31 +00:00
< a style = "float:right;" href = "http://sourceforge.net/projects/xqilla" > < img src = "http://sflogo.sourceforge.net/sflogo.php?group_id=152021&type=2" border = "0" alt = "SourceForge.net Logo" / > < / a >
2020-02-17 21:17:06 +00:00
<!-- Generated by Doxygen 1.5.5 -->
< div class = "navigation" id = "top" >
< div class = "tabs" >
< ul >
< li > < a href = "index.html" > < span > Main Page< / span > < / a > < / li >
< li > < a href = "namespaces.html" > < span > Namespaces< / span > < / a > < / li >
< li > < a href = "classes.html" > < span > Classes< / span > < / a > < / li >
< li class = "current" > < a href = "files.html" > < span > Files< / span > < / a > < / li >
< li > < a href = "examples.html" > < span > Examples< / span > < / a > < / li >
< / ul >
< / div >
2020-02-17 21:05:20 +00:00
< h1 > StringPool.hpp< / h1 > < a href = "StringPool_8hpp.html" > Go to the documentation of this file.< / a > < div class = "fragment" > < pre class = "fragment" > < a name = "l00001" > < / a > 00001 < span class = "comment" > /*< / span >
2020-02-17 21:13:50 +00:00
< a name = "l00002" > < / a > 00002 < span class = "comment" > * Copyright (c) 2001-2008< / span >
2020-02-17 21:05:20 +00:00
< a name = "l00003" > < / a > 00003 < span class = "comment" > * DecisionSoft Limited. All rights reserved.< / span >
2020-02-17 21:13:50 +00:00
< a name = "l00004" > < / a > 00004 < span class = "comment" > * Copyright (c) 2004-2008< / span >
2020-02-17 21:12:51 +00:00
< a name = "l00005" > < / a > 00005 < span class = "comment" > * Oracle. All rights reserved.< / span >
< a name = "l00006" > < / a > 00006 < span class = "comment" > *< / span >
< a name = "l00007" > < / a > 00007 < span class = "comment" > * Licensed under the Apache License, Version 2.0 (the "License");< / span >
< a name = "l00008" > < / a > 00008 < span class = "comment" > * you may not use this file except in compliance with the License.< / span >
< a name = "l00009" > < / a > 00009 < span class = "comment" > * You may obtain a copy of the License at< / span >
2020-02-17 21:05:20 +00:00
< a name = "l00010" > < / a > 00010 < span class = "comment" > *< / span >
2020-02-17 21:12:51 +00:00
< a name = "l00011" > < / a > 00011 < span class = "comment" > * http://www.apache.org/licenses/LICENSE-2.0< / span >
< a name = "l00012" > < / a > 00012 < span class = "comment" > *< / span >
< a name = "l00013" > < / a > 00013 < span class = "comment" > * Unless required by applicable law or agreed to in writing, software< / span >
< a name = "l00014" > < / a > 00014 < span class = "comment" > * distributed under the License is distributed on an "AS IS" BASIS,< / span >
< a name = "l00015" > < / a > 00015 < span class = "comment" > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.< / span >
< a name = "l00016" > < / a > 00016 < span class = "comment" > * See the License for the specific language governing permissions and< / span >
< a name = "l00017" > < / a > 00017 < span class = "comment" > * limitations under the License.< / span >
< a name = "l00018" > < / a > 00018 < span class = "comment" > *< / span >
2020-02-17 21:17:06 +00:00
< a name = "l00019" > < / a > 00019 < span class = "comment" > * $Id: StringPool.hpp 663 2008-10-08 17:51:30Z jpcs $< / span >
2020-02-17 21:12:51 +00:00
< a name = "l00020" > < / a > 00020 < span class = "comment" > */< / span >
2020-02-17 21:05:20 +00:00
< a name = "l00021" > < / a > 00021
2020-02-17 21:12:51 +00:00
< a name = "l00022" > < / a > 00022 < span class = "preprocessor" > #ifndef __STRINGPOOL_HPP< / span >
< a name = "l00023" > < / a > 00023 < span class = "preprocessor" > < / span > < span class = "preprocessor" > #define __STRINGPOOL_HPP< / span >
< a name = "l00024" > < / a > 00024 < span class = "preprocessor" > < / span >
< a name = "l00025" > < / a > 00025 < span class = "preprocessor" > #include < xqilla/framework/XQillaExport.hpp> < / span >
< a name = "l00026" > < / a > 00026 < span class = "preprocessor" > #include < < a class = "code" href = "MemoryManager_8hpp.html" > xercesc/framework/MemoryManager.hpp< / a > > < / span >
< a name = "l00027" > < / a > 00027 < span class = "preprocessor" > #include < memory> < / span >
2020-02-17 21:13:50 +00:00
< a name = "l00028" > < / a > 00028 < span class = "preprocessor" > #include < cstring> < / span >
< a name = "l00029" > < / a > 00029 < span class = "comment" > //Added so xqilla will compile under CC on Solaris< / span >
< a name = "l00030" > < / a > 00030 < span class = "preprocessor" > #include < string> < / span >
2020-02-17 21:17:06 +00:00
< a name = "l00031" > < / a > 00031 < span class = "comment" > // Added so xqilla will compile on SunOS 10 using STLPort< / span >
< a name = "l00032" > < / a > 00032 < span class = "preprocessor" > #include < memory.h> < / span >
< a name = "l00033" > < / a > 00033
< a name = "l00034" > < / a > < a class = "code" href = "classStringPool.html" > 00034< / a > < span class = "keyword" > class < / span > XQILLA_API < a class = "code" href = "classStringPool.html" > StringPool< / a >
< a name = "l00035" > < / a > 00035 {
< a name = "l00036" > < / a > 00036 < span class = "keyword" > public< / span > :
< a name = "l00037" > < / a > 00037 < a class = "code" href = "classStringPool.html" > StringPool< / a > (XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm);
< a name = "l00038" > < / a > 00038 ~< a class = "code" href = "classStringPool.html" > StringPool< / a > ();
< a name = "l00039" > < / a > 00039
< a name = "l00041" > < / a > 00041 < span class = "keyword" > const< / span > XMLCh* getPooledString(< span class = "keyword" > const< / span > XMLCh *src);
< a name = "l00043" > < / a > 00043 < span class = "keyword" > const< / span > XMLCh* getPooledString(< span class = "keyword" > const< / span > XMLCh *src, < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > length);
< a name = "l00045" > < / a > 00045 < span class = "keyword" > const< / span > XMLCh* getPooledString(< span class = "keyword" > const< / span > < span class = "keywordtype" > char< / span > *src);
< a name = "l00046" > < / a > 00046
< a name = "l00047" > < / a > < a class = "code" href = "classStringPool.html#f6d24d45f310175362ebd842c2123dac" > 00047< / a > < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > getCount()< span class = "keyword" > const < / span > { < span class = "keywordflow" > return< / span > _count; }
< a name = "l00048" > < / a > < a class = "code" href = "classStringPool.html#c3692bf7844a594db61f40c5dd9d63a3" > 00048< / a > < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > getHits()< span class = "keyword" > const < / span > { < span class = "keywordflow" > return< / span > _hits; }
< a name = "l00049" > < / a > < a class = "code" href = "classStringPool.html#241899aef5a9ad993d7270a3ed849efa" > 00049< / a > < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > getMisses()< span class = "keyword" > const < / span > { < span class = "keywordflow" > return< / span > _misses; }
< a name = "l00050" > < / a > < a class = "code" href = "classStringPool.html#47d21c75962c61516daf6b7276fba8dd" > 00050< / a > < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > getTooBig()< span class = "keyword" > const < / span > { < span class = "keywordflow" > return< / span > _toobig; }
< a name = "l00051" > < / a > 00051 < span class = "keywordtype" > void< / span > dumpStatistics() < span class = "keyword" > const< / span > ;
< a name = "l00052" > < / a > 00052
< a name = "l00053" > < / a > 00053 < span class = "keyword" > private< / span > :
< a name = "l00054" > < / a > 00054 < a class = "code" href = "classStringPool.html" > StringPool< / a > (< span class = "keyword" > const< / span > < a class = "code" href = "classStringPool.html" > StringPool< / a > & );
< a name = "l00055" > < / a > 00055 < a class = "code" href = "classStringPool.html" > StringPool< / a > & operator=(< span class = "keyword" > const< / span > < a class = "code" href = "classStringPool.html" > StringPool< / a > & );
< a name = "l00056" > < / a > 00056
< a name = "l00057" > < / a > 00057 < span class = "keyword" > static< / span > < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > hash(< span class = "keyword" > const< / span > XMLCh *v, < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > length);
< a name = "l00058" > < / a > 00058 < span class = "keyword" > const< / span > XMLCh *replicate(< span class = "keyword" > const< / span > XMLCh *v, < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > length) < span class = "keyword" > const< / span > ;
< a name = "l00059" > < / a > 00059 < span class = "keywordtype" > void< / span > resize();
< a name = "l00060" > < / a > 00060
< a name = "l00061" > < / a > 00061 < span class = "keyword" > class < / span > Bucket
< a name = "l00062" > < / a > 00062 {
< a name = "l00063" > < / a > 00063 < span class = "keyword" > public< / span > :
< a name = "l00064" > < / a > 00064 Bucket(< span class = "keyword" > const< / span > XMLCh *v, < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > l, < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > h, Bucket *n)
< a name = "l00065" > < / a > 00065 : value(v), length(l), hashValue(h), next(n) {}
< a name = "l00066" > < / a > 00066
< a name = "l00067" > < / a > 00067 < span class = "keyword" > const< / span > XMLCh *value;
< a name = "l00068" > < / a > 00068 < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > length;
< a name = "l00069" > < / a > 00069 < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > hashValue;
< a name = "l00070" > < / a > 00070 Bucket *next;
< a name = "l00071" > < / a > 00071 };
< a name = "l00072" > < / a > 00072
< a name = "l00073" > < / a > 00073 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *_mm;
< a name = "l00074" > < / a > 00074 Bucket **_bucketList;
< a name = "l00075" > < / a > 00075 < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > _modulus;
< a name = "l00076" > < / a > 00076 < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > _count;
< a name = "l00077" > < / a > 00077 < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > _hits;
< a name = "l00078" > < / a > 00078 < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > _misses;
< a name = "l00079" > < / a > 00079 < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > _toobig;
< a name = "l00080" > < / a > 00080 };
< a name = "l00081" > < / a > 00081
< a name = "l00082" > < / a > 00082 < span class = "keyword" > inline< / span > < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > StringPool::hash(< span class = "keyword" > const< / span > XMLCh *v, < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > length)
< a name = "l00083" > < / a > 00083 {
< a name = "l00084" > < / a > 00084 < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > hashVal = 0;
< a name = "l00085" > < / a > 00085 < span class = "keywordflow" > while< / span > (length) {
< a name = "l00086" > < / a > 00086 hashVal += (hashVal * 37) + (hashVal > > 24) + (< span class = "keywordtype" > unsigned< / span > int)(*v);
< a name = "l00087" > < / a > 00087 ++v;
< a name = "l00088" > < / a > 00088 --length;
< a name = "l00089" > < / a > 00089 }
< a name = "l00090" > < / a > 00090 < span class = "keywordflow" > return< / span > hashVal;
< a name = "l00091" > < / a > 00091 }
< a name = "l00092" > < / a > 00092
< a name = "l00093" > < / a > 00093 < span class = "keyword" > inline< / span > < span class = "keyword" > const< / span > XMLCh *StringPool::replicate(< span class = "keyword" > const< / span > XMLCh *v, < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > length)< span class = "keyword" > const< / span >
< a name = "l00094" > < / a > 00094 < span class = "keyword" > < / span > {
< a name = "l00095" > < / a > 00095 < span class = "keywordtype" > unsigned< / span > < span class = "keywordtype" > int< / span > size = length * < span class = "keyword" > sizeof< / span > (XMLCh);
< a name = "l00096" > < / a > 00096 XMLCh *ret = (XMLCh*)_mm-> < a class = "code" href = "classxercesc_1_1MemoryManager.html#b6bbb5b604d2159e7ccc4532e4f422af" title = "This method allocates requested memory." > allocate< / a > (size + < span class = "keyword" > sizeof< / span > (XMLCh));
< a name = "l00097" > < / a > 00097 memcpy(ret, v, size);
< a name = "l00098" > < / a > 00098 ret[length] = 0;
< a name = "l00099" > < / a > 00099 < span class = "keywordflow" > return< / span > ret;
< a name = "l00100" > < / a > 00100 }
< a name = "l00101" > < / a > 00101
< a name = "l00102" > < / a > 00102 < span class = "preprocessor" > #endif< / span >
< / pre > < / div > < / div >
< hr size = "1" > < address style = "text-align: right;" > < small > Generated on Mon Jan 5 19:53:55 2009 for XQilla Simple API by
2020-02-17 21:05:20 +00:00
< a href = "http://www.doxygen.org/index.html" >
2020-02-17 21:17:06 +00:00
< img src = "doxygen.png" alt = "doxygen" align = "middle" border = "0" > < / a > 1.5.5 < / small > < / address >
2020-02-17 21:05:20 +00:00
< / body >
< / html >