XQuilla/docs/simple-api/XPath2MemoryManager_8hpp-source.html
2020-02-17 22:19:08 +01:00

417 lines
28 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>XQilla Simple API Documentation</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<a style="float:right;" href="http://sourceforge.net/projects/xqilla"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=152021&amp;type=2" border="0" alt="SourceForge.net Logo" /></a>
<!-- Generated by Doxygen 1.3.9.1 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="examples.html">Examples</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">include</a>&nbsp;/&nbsp;<a class="el" href="dir_000001.html">xqilla</a>&nbsp;/&nbsp;<a class="el" href="dir_000017.html">framework</a></div>
<h1>XPath2MemoryManager.hpp</h1><a href="XPath2MemoryManager_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
00002 <span class="comment"> * Copyright (c) 2001-2008</span>
00003 <span class="comment"> * DecisionSoft Limited. All rights reserved.</span>
00004 <span class="comment"> * Copyright (c) 2004-2008</span>
00005 <span class="comment"> * Oracle. All rights reserved.</span>
00006 <span class="comment"> *</span>
00007 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span>
00008 <span class="comment"> * you may not use this file except in compliance with the License.</span>
00009 <span class="comment"> * You may obtain a copy of the License at</span>
00010 <span class="comment"> *</span>
00011 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span>
00012 <span class="comment"> *</span>
00013 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
00014 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
00015 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
00016 <span class="comment"> * See the License for the specific language governing permissions and</span>
00017 <span class="comment"> * limitations under the License.</span>
00018 <span class="comment"> *</span>
00019 <span class="comment"> * $Id: XPath2MemoryManager.hpp 688 2008-11-27 02:45:23Z caiying $</span>
00020 <span class="comment"> */</span>
00021
00022 <span class="preprocessor">#ifndef __XPATH2MEMORYMANAGER_HPP</span>
00023 <span class="preprocessor"></span><span class="preprocessor">#define __XPATH2MEMORYMANAGER_HPP</span>
00024 <span class="preprocessor"></span>
00025 <span class="preprocessor">#include &lt;algorithm&gt;</span>
00026 <span class="preprocessor">#include &lt;assert.h&gt;</span>
00027
00028 <span class="preprocessor">#include &lt;xqilla/framework/XQillaExport.hpp&gt;</span>
00029
00030 <span class="preprocessor">#include &lt;<a class="code" href="MemoryManager_8hpp.html">xercesc/framework/MemoryManager.hpp</a>&gt;</span>
00031
00032 XERCES_CPP_NAMESPACE_BEGIN
00033 <span class="keyword">class </span>DOMNode;
00034 <span class="keyword">class </span>XMLGrammarPool;
00035 XERCES_CPP_NAMESPACE_END
00036
00037 <span class="keyword">class </span><a class="code" href="classVariableStore.html">VariableStore</a>;
00038 <span class="keyword">class </span><a class="code" href="classVariableTypeStore.html">VariableTypeStore</a>;
00039 <span class="keyword">class </span><a class="code" href="classDynamicContext.html">DynamicContext</a>;
00040 <span class="keyword">class </span><a class="code" href="classCollation.html">Collation</a>;
00041 <span class="keyword">class </span>CollationHelper;
00042 <span class="keyword">class </span>XQillaNSResolver;
00043 <span class="keyword">class </span><a class="code" href="classATDecimalOrDerived.html">ATDecimalOrDerived</a>;
00044 <span class="keyword">class </span><a class="code" href="classStringPool.html">StringPool</a>;
00045
<a name="l00046"></a><a class="code" href="classXPath2MemoryManager.html">00046</a> <span class="keyword">class </span>XQILLA_API XPath2MemoryManager : <span class="keyword">public</span> XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager
00047 {
00048 <span class="keyword">public</span>:
<a name="l00049"></a><a class="code" href="classXPath2MemoryManager.html#a0">00049</a> <span class="keyword">virtual</span> ~XPath2MemoryManager() {}
00050
00052 <span class="keyword">virtual</span> <span class="keywordtype">void</span> reset() = 0;
00053
00055 <span class="keyword">virtual</span> <span class="keyword">const</span> XMLCh* getPooledString(<span class="keyword">const</span> XMLCh *src) = 0;
00056 <span class="keyword">virtual</span> <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) = 0;
00057 <span class="keyword">virtual</span> <span class="keyword">const</span> XMLCh* getPooledString(<span class="keyword">const</span> <span class="keywordtype">char</span> *src) = 0;
00058
00059 <span class="comment">// from MemoryManager</span>
00060 <span class="preprocessor">#if _XERCES_VERSION &gt;= 30000</span>
00061 <span class="preprocessor"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span>* allocate(XMLSize_t numElements) = 0;
00062 <span class="preprocessor">#else</span>
00063 <span class="preprocessor"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span>* allocate(size_t numElements) = 0;
00064 <span class="preprocessor">#endif </span>
00065 <span class="preprocessor"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate(<span class="keywordtype">void</span>* p) = 0;
00066
00068 <span class="keyword">virtual</span> <a class="code" href="classCollation.html">Collation</a>* createCollation(CollationHelper* helper) = 0;
00069
00071 <span class="keyword">virtual</span> XQillaNSResolver* createNSResolver(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *resolverNode) = 0;
00072
00074 <span class="keyword">virtual</span> <a class="code" href="classVariableTypeStore.html">VariableTypeStore</a>* createVariableTypeStore() = 0;
00075
00077 <span class="keyword">virtual</span> <a class="code" href="classATDecimalOrDerived.html">ATDecimalOrDerived</a>* createInteger(<span class="keywordtype">int</span> value) = 0;
00078
00079 <span class="keyword">virtual</span> <span class="keywordtype">void</span> dumpStatistics() <span class="keyword">const </span>= 0;
00080 <span class="keyword">virtual</span> size_t getAllocatedObjectCount() <span class="keyword">const </span>= 0;
00081 <span class="keyword">virtual</span> size_t getTotalAllocatedMemory() <span class="keyword">const </span>= 0;
00082 <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classStringPool.html">StringPool</a> *getStringPool() <span class="keyword">const </span>= 0;
00083 };<span class="comment">//XPath2MemoryManager</span>
00084
00085 <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp&gt;
<a name="l00086"></a><a class="code" href="classXQillaAllocator.html">00086</a> <span class="keyword">class </span><a class="code" href="classXQillaAllocator.html">XQillaAllocator</a>
00087 {
00088 <span class="keyword">public</span>:
<a name="l00089"></a><a class="code" href="classXQillaAllocator.html#w0">00089</a> <span class="keyword">typedef</span> size_t size_type;
<a name="l00090"></a><a class="code" href="classXQillaAllocator.html#w1">00090</a> <span class="keyword">typedef</span> ptrdiff_t difference_type;
<a name="l00091"></a><a class="code" href="classXQillaAllocator.html#w2">00091</a> <span class="keyword">typedef</span> _Tp* pointer;
<a name="l00092"></a><a class="code" href="classXQillaAllocator.html#w3">00092</a> <span class="keyword">typedef</span> <span class="keyword">const</span> _Tp* const_pointer;
<a name="l00093"></a><a class="code" href="classXQillaAllocator.html#w4">00093</a> <span class="keyword">typedef</span> _Tp&amp; reference;
<a name="l00094"></a><a class="code" href="classXQillaAllocator.html#w5">00094</a> <span class="keyword">typedef</span> <span class="keyword">const</span> _Tp&amp; const_reference;
<a name="l00095"></a><a class="code" href="classXQillaAllocator.html#w6">00095</a> <span class="keyword">typedef</span> _Tp value_type;
00096
<a name="l00097"></a><a class="code" href="structXQillaAllocator_1_1rebind.html">00097</a> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp1&gt; <span class="keyword">struct </span><a class="code" href="structXQillaAllocator_1_1rebind.html">rebind</a> {
<a name="l00098"></a><a class="code" href="structXQillaAllocator_1_1rebind.html#w0">00098</a> <span class="keyword">typedef</span> <a class="code" href="classXQillaAllocator.html">XQillaAllocator&lt;_Tp1&gt;</a> <a class="code" href="classXQillaAllocator.html">other</a>;
00099 };
00100
00101 <span class="comment">// Should never be used - for compiling on AIX only</span>
<a name="l00102"></a><a class="code" href="classXQillaAllocator.html#a0">00102</a> <a class="code" href="classXQillaAllocator.html">XQillaAllocator</a>()
00103 {
00104 assert(<span class="keyword">false</span>);
00105 }
00106
<a name="l00107"></a><a class="code" href="classXQillaAllocator.html#a1">00107</a> <a class="code" href="classXQillaAllocator.html">XQillaAllocator</a>(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr)
00108 {
00109 _memMgr=memMgr;
00110 }
00111
00112 <span class="comment">// define a copy constructor, because we don't want to copy the singleton object</span>
<a name="l00113"></a><a class="code" href="classXQillaAllocator.html#a2">00113</a> <a class="code" href="classXQillaAllocator.html">XQillaAllocator</a>(<span class="keyword">const</span> <a class="code" href="classXQillaAllocator.html">XQillaAllocator&lt;_Tp&gt;</a>&amp; o)
00114 {
00115 _memMgr=o.<a class="code" href="classXQillaAllocator.html#o1">_memMgr</a>;
00116 }
00117 <span class="preprocessor">#if _MSC_VER &gt;= 1500</span>
00118 <span class="preprocessor"></span> <span class="comment">// Needed for Visual Studio 2008 </span>
00119 <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Tp1&gt; <a class="code" href="classXQillaAllocator.html">XQillaAllocator</a>(<span class="keyword">const</span> <a class="code" href="classXQillaAllocator.html">XQillaAllocator&lt;_Tp1&gt;</a>&amp; o)
00120 {
00121 _memMgr = o.<a class="code" href="classXQillaAllocator.html#o1">_memMgr</a>;
00122 }
00123 <span class="preprocessor">#endif</span>
<a name="l00124"></a><a class="code" href="classXQillaAllocator.html#a3">00124</a> <span class="preprocessor"></span> pointer allocate(size_t _n, <span class="keyword">const</span> <span class="keywordtype">void</span>* = 0)
00125 {
00126 <span class="keywordflow">if</span>(_n==1)
00127 <span class="keywordflow">return</span> (pointer)_singleton;
00128 <span class="comment">//std::cout &lt;&lt; "XQillaAllocator::allocate(" &lt;&lt; _n &lt;&lt; ")" &lt;&lt; std::endl;</span>
00129 <span class="keywordflow">if</span>(_memMgr)
00130 <span class="keywordflow">return</span> _n != 0 ? static_cast&lt;pointer&gt;(_memMgr-&gt;allocate(_n*<span class="keyword">sizeof</span>(_Tp))) : 0;
00131 <span class="keywordflow">else</span>
00132 <span class="keywordflow">return</span> _n != 0 ? static_cast&lt;pointer&gt;(malloc(_n*<span class="keyword">sizeof</span>(_Tp))) : 0;
00133 }
00134
<a name="l00135"></a><a class="code" href="classXQillaAllocator.html#a4">00135</a> <span class="keywordtype">void</span> deallocate(<span class="keywordtype">void</span>* _p, size_t _n)
00136 {
00137 <span class="comment">//std::cout &lt;&lt; "XQillaAllocator::deallocate(" &lt;&lt; _n &lt;&lt; ")" &lt;&lt; std::endl;</span>
00138 <span class="keywordflow">if</span>(_p) {
00139 <span class="keywordflow">if</span>(_p!=_singleton) {
00140 <span class="keywordflow">if</span>(_memMgr)
00141 _memMgr-&gt;<a class="code" href="classxercesc_1_1MemoryManager.html#z15_1">deallocate</a>(_p);
00142 <span class="keywordflow">else</span>
00143 free(_p);
00144 }
00145 }
00146 }
00147
<a name="l00148"></a><a class="code" href="classXQillaAllocator.html#a5">00148</a> <span class="keywordtype">void</span> construct(pointer _p, const_reference _v)
00149 {
00150 <span class="keyword">new</span> ((<span class="keywordtype">void</span> *)_p) _Tp(_v);
00151 }
00152
<a name="l00153"></a><a class="code" href="classXQillaAllocator.html#a6">00153</a> <span class="keywordtype">void</span> destroy(pointer _p)
00154 {
00155 _p-&gt;~_Tp();
00156 }
00157
<a name="l00158"></a><a class="code" href="classXQillaAllocator.html#a7">00158</a> size_type max_size()<span class="keyword"> const</span>
00159 <span class="keyword"> </span>{
00160 <span class="keywordflow">return</span> 0xFFFFFFFF;
00161 }
00162
<a name="l00163"></a><a class="code" href="classXQillaAllocator.html#a8">00163</a> size_type max_size(size_type)<span class="keyword"> const</span>
00164 <span class="keyword"> </span>{
00165 <span class="keywordflow">return</span> 0xFFFFFFFF;
00166 }
00167
<a name="l00168"></a><a class="code" href="classXQillaAllocator.html#o0">00168</a> <span class="keywordtype">char</span> _singleton[<span class="keyword">sizeof</span>(_Tp)];
<a name="l00169"></a><a class="code" href="classXQillaAllocator.html#o1">00169</a> XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* _memMgr;
00170 };
00171
00172 <span class="comment">// ---------------------------------------------------------------------------</span>
00173 <span class="comment">//</span>
00174 <span class="comment">// Operator new. Global overloaded version, lets any object be allocated on</span>
00175 <span class="comment">// the heap owned by a MemoryManager.</span>
00176 <span class="comment">//</span>
00177 <span class="comment">// ---------------------------------------------------------------------------</span>
<a name="l00178"></a><a class="code" href="XPath2MemoryManager_8hpp.html#a0">00178</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> * <a class="code" href="XPath2MemoryManager_8hpp.html#a0">operator new</a>(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr)
00179 {
00180 <span class="keywordtype">void</span> *p = memMgr-&gt;<a class="code" href="classxercesc_1_1MemoryManager.html#z15_0">allocate</a>(amt);
00181 <span class="keywordflow">return</span> p;
00182 }
00183
<a name="l00184"></a><a class="code" href="XPath2MemoryManager_8hpp.html#a1">00184</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="XPath2MemoryManager_8hpp.html#a1">operator delete</a>(<span class="keywordtype">void</span>* ptr, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr)
00185 {
00186 memMgr-&gt;<a class="code" href="classxercesc_1_1MemoryManager.html#z15_1">deallocate</a>(ptr);
00187 }
00188
00189 <span class="keyword">template</span>&lt;<span class="keyword">class</span> TYPE&gt;
<a name="l00190"></a><a class="code" href="classAutoRelease.html">00190</a> <span class="keyword">class </span><a class="code" href="classAutoRelease.html">AutoRelease</a>
00191 {
00192 <span class="keyword">public</span>:
<a name="l00193"></a><a class="code" href="classAutoRelease.html#a0">00193</a> <a class="code" href="classAutoRelease.html">AutoRelease</a>(TYPE *p)
00194 : p_(p) {}
<a name="l00195"></a><a class="code" href="classAutoRelease.html#a1">00195</a> ~<a class="code" href="classAutoRelease.html">AutoRelease</a>()
00196 {
00197 <span class="keywordflow">if</span>(p_ != 0)
00198 p_-&gt;release();
00199 }
00200
<a name="l00201"></a><a class="code" href="classAutoRelease.html#a2">00201</a> TYPE &amp;operator*()<span class="keyword"> const</span>
00202 <span class="keyword"> </span>{
00203 <span class="keywordflow">return</span> *p_;
00204 }
<a name="l00205"></a><a class="code" href="classAutoRelease.html#a3">00205</a> TYPE *operator-&gt;()<span class="keyword"> const</span>
00206 <span class="keyword"> </span>{
00207 <span class="keywordflow">return</span> p_;
00208 }
<a name="l00209"></a><a class="code" href="classAutoRelease.html#a4">00209</a> operator TYPE*()<span class="keyword"> const</span>
00210 <span class="keyword"> </span>{
00211 <span class="keywordflow">return</span> p_;
00212 }
<a name="l00213"></a><a class="code" href="classAutoRelease.html#a5">00213</a> TYPE *get()<span class="keyword"> const</span>
00214 <span class="keyword"> </span>{
00215 <span class="keywordflow">return</span> p_;
00216 }
<a name="l00217"></a><a class="code" href="classAutoRelease.html#a6">00217</a> TYPE *adopt()
00218 {
00219 TYPE *tmp = p_;
00220 p_ = 0;
00221 <span class="keywordflow">return</span> tmp;
00222 }
<a name="l00223"></a><a class="code" href="classAutoRelease.html#a7">00223</a> TYPE *swap(TYPE *p)
00224 {
00225 TYPE *tmp = p_;
00226 p_ = p;
00227 <span class="keywordflow">return</span> tmp;
00228 }
<a name="l00229"></a><a class="code" href="classAutoRelease.html#a8">00229</a> <span class="keywordtype">void</span> set(TYPE *p)
00230 {
00231 <span class="keywordflow">if</span>(p_ != 0)
00232 p_-&gt;release();
00233 p_ = p;
00234 }
00235
00236 <span class="keyword">private</span>:
00237 <a class="code" href="classAutoRelease.html">AutoRelease</a>(<span class="keyword">const</span> <a class="code" href="classAutoRelease.html">AutoRelease&lt;TYPE&gt;</a> &amp;);
00238 <a class="code" href="classAutoRelease.html">AutoRelease&lt;TYPE&gt;</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classAutoRelease.html">AutoRelease&lt;TYPE&gt;</a> &amp;);
00239
00240 TYPE *p_;
00241 };
00242
00243 <span class="keyword">template</span>&lt;<span class="keyword">class</span> TYPE&gt;
<a name="l00244"></a><a class="code" href="classAutoDelete.html">00244</a> <span class="keyword">class </span><a class="code" href="classAutoDelete.html">AutoDelete</a>
00245 {
00246 <span class="keyword">public</span>:
<a name="l00247"></a><a class="code" href="classAutoDelete.html#a0">00247</a> <a class="code" href="classAutoDelete.html">AutoDelete</a>(TYPE *p)
00248 : p_(p) {}
<a name="l00249"></a><a class="code" href="classAutoDelete.html#a1">00249</a> ~<a class="code" href="classAutoDelete.html">AutoDelete</a>()
00250 {
00251 <span class="keyword">delete</span> p_;
00252 }
00253
<a name="l00254"></a><a class="code" href="classAutoDelete.html#a2">00254</a> TYPE &amp;operator*()<span class="keyword"> const</span>
00255 <span class="keyword"> </span>{
00256 <span class="keywordflow">return</span> *p_;
00257 }
<a name="l00258"></a><a class="code" href="classAutoDelete.html#a3">00258</a> TYPE *operator-&gt;()<span class="keyword"> const</span>
00259 <span class="keyword"> </span>{
00260 <span class="keywordflow">return</span> p_;
00261 }
<a name="l00262"></a><a class="code" href="classAutoDelete.html#a4">00262</a> operator TYPE*()<span class="keyword"> const</span>
00263 <span class="keyword"> </span>{
00264 <span class="keywordflow">return</span> p_;
00265 }
<a name="l00266"></a><a class="code" href="classAutoDelete.html#a5">00266</a> TYPE *get()<span class="keyword"> const</span>
00267 <span class="keyword"> </span>{
00268 <span class="keywordflow">return</span> p_;
00269 }
<a name="l00270"></a><a class="code" href="classAutoDelete.html#a6">00270</a> TYPE *adopt()
00271 {
00272 TYPE *tmp = p_;
00273 p_ = 0;
00274 <span class="keywordflow">return</span> tmp;
00275 }
<a name="l00276"></a><a class="code" href="classAutoDelete.html#a7">00276</a> TYPE *swap(TYPE *p)
00277 {
00278 TYPE *tmp = p_;
00279 p_ = p;
00280 <span class="keywordflow">return</span> tmp;
00281 }
<a name="l00282"></a><a class="code" href="classAutoDelete.html#a8">00282</a> <span class="keywordtype">void</span> set(TYPE *p)
00283 {
00284 <span class="keyword">delete</span> p_;
00285 p_ = p;
00286 }
00287
00288 <span class="keyword">private</span>:
00289 <a class="code" href="classAutoDelete.html">AutoDelete</a>(<span class="keyword">const</span> <a class="code" href="classAutoDelete.html">AutoDelete&lt;TYPE&gt;</a> &amp;);
00290 <a class="code" href="classAutoDelete.html">AutoDelete&lt;TYPE&gt;</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classAutoDelete.html">AutoDelete&lt;TYPE&gt;</a> &amp;);
00291
00292 TYPE *p_;
00293 };
00294
00295 <span class="keyword">template</span>&lt;<span class="keyword">class</span> TYPE&gt;
<a name="l00296"></a><a class="code" href="classAutoDeleteArray.html">00296</a> <span class="keyword">class </span><a class="code" href="classAutoDeleteArray.html">AutoDeleteArray</a>
00297 {
00298 <span class="keyword">public</span>:
<a name="l00299"></a><a class="code" href="classAutoDeleteArray.html#a0">00299</a> <a class="code" href="classAutoDeleteArray.html">AutoDeleteArray</a>(TYPE *p)
00300 : p_(p) {}
<a name="l00301"></a><a class="code" href="classAutoDeleteArray.html#a1">00301</a> ~<a class="code" href="classAutoDeleteArray.html">AutoDeleteArray</a>()
00302 {
00303 <span class="keyword">delete</span> [] p_;
00304 }
00305
<a name="l00306"></a><a class="code" href="classAutoDeleteArray.html#a2">00306</a> TYPE &amp;operator*()<span class="keyword"> const</span>
00307 <span class="keyword"> </span>{
00308 <span class="keywordflow">return</span> *p_;
00309 }
<a name="l00310"></a><a class="code" href="classAutoDeleteArray.html#a3">00310</a> TYPE *operator-&gt;()<span class="keyword"> const</span>
00311 <span class="keyword"> </span>{
00312 <span class="keywordflow">return</span> p_;
00313 }
<a name="l00314"></a><a class="code" href="classAutoDeleteArray.html#a4">00314</a> operator TYPE*()<span class="keyword"> const</span>
00315 <span class="keyword"> </span>{
00316 <span class="keywordflow">return</span> p_;
00317 }
<a name="l00318"></a><a class="code" href="classAutoDeleteArray.html#a5">00318</a> TYPE *get()<span class="keyword"> const</span>
00319 <span class="keyword"> </span>{
00320 <span class="keywordflow">return</span> p_;
00321 }
<a name="l00322"></a><a class="code" href="classAutoDeleteArray.html#a6">00322</a> TYPE *adopt()
00323 {
00324 TYPE *tmp = p_;
00325 p_ = 0;
00326 <span class="keywordflow">return</span> tmp;
00327 }
<a name="l00328"></a><a class="code" href="classAutoDeleteArray.html#a7">00328</a> TYPE *swap(TYPE *p)
00329 {
00330 TYPE *tmp = p_;
00331 p_ = p;
00332 <span class="keywordflow">return</span> tmp;
00333 }
<a name="l00334"></a><a class="code" href="classAutoDeleteArray.html#a8">00334</a> <span class="keywordtype">void</span> set(TYPE *p)
00335 {
00336 <span class="keyword">delete</span> [] p_;
00337 p_ = p;
00338 }
00339
00340 <span class="keyword">private</span>:
00341 <a class="code" href="classAutoDeleteArray.html">AutoDeleteArray</a>(<span class="keyword">const</span> <a class="code" href="classAutoDeleteArray.html">AutoDeleteArray&lt;TYPE&gt;</a> &amp;);
00342 <a class="code" href="classAutoDeleteArray.html">AutoDeleteArray&lt;TYPE&gt;</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classAutoDeleteArray.html">AutoDeleteArray&lt;TYPE&gt;</a> &amp;);
00343
00344 TYPE *p_;
00345 };
00346
00347 <span class="keyword">template</span>&lt;<span class="keyword">class</span> TYPE&gt;
<a name="l00348"></a><a class="code" href="classAutoDeallocate.html">00348</a> <span class="keyword">class </span><a class="code" href="classAutoDeallocate.html">AutoDeallocate</a>
00349 {
00350 <span class="keyword">public</span>:
<a name="l00351"></a><a class="code" href="classAutoDeallocate.html#a0">00351</a> <a class="code" href="classAutoDeallocate.html">AutoDeallocate</a>(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr, size_t size = <span class="keyword">sizeof</span>(TYPE))
00352 : p_(0), mmgr_(mmgr) {
00353 p_ = (TYPE*)mmgr_-&gt;<a class="code" href="classxercesc_1_1MemoryManager.html#z15_0">allocate</a>(size);
00354 }
<a name="l00355"></a><a class="code" href="classAutoDeallocate.html#a1">00355</a> <a class="code" href="classAutoDeallocate.html">AutoDeallocate</a>(TYPE *p, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr)
00356 : p_(p), mmgr_(mmgr) {}
<a name="l00357"></a><a class="code" href="classAutoDeallocate.html#a2">00357</a> ~<a class="code" href="classAutoDeallocate.html">AutoDeallocate</a>()
00358 {
00359 <span class="keywordflow">if</span>(p_ != 0)
00360 mmgr_-&gt;<a class="code" href="classxercesc_1_1MemoryManager.html#z15_1">deallocate</a>((<span class="keywordtype">void</span>*)p_);
00361 }
00362
<a name="l00363"></a><a class="code" href="classAutoDeallocate.html#a3">00363</a> TYPE &amp;operator*()<span class="keyword"> const</span>
00364 <span class="keyword"> </span>{
00365 <span class="keywordflow">return</span> *p_;
00366 }
<a name="l00367"></a><a class="code" href="classAutoDeallocate.html#a4">00367</a> TYPE *operator-&gt;()<span class="keyword"> const</span>
00368 <span class="keyword"> </span>{
00369 <span class="keywordflow">return</span> p_;
00370 }
<a name="l00371"></a><a class="code" href="classAutoDeallocate.html#a5">00371</a> operator TYPE*()<span class="keyword"> const</span>
00372 <span class="keyword"> </span>{
00373 <span class="keywordflow">return</span> p_;
00374 }
<a name="l00375"></a><a class="code" href="classAutoDeallocate.html#a6">00375</a> TYPE *get()<span class="keyword"> const</span>
00376 <span class="keyword"> </span>{
00377 <span class="keywordflow">return</span> p_;
00378 }
<a name="l00379"></a><a class="code" href="classAutoDeallocate.html#a7">00379</a> TYPE *adopt()
00380 {
00381 TYPE *tmp = p_;
00382 p_ = 0;
00383 <span class="keywordflow">return</span> tmp;
00384 }
<a name="l00385"></a><a class="code" href="classAutoDeallocate.html#a8">00385</a> TYPE *swap(TYPE *p)
00386 {
00387 TYPE *tmp = p_;
00388 p_ = p;
00389 <span class="keywordflow">return</span> tmp;
00390 }
<a name="l00391"></a><a class="code" href="classAutoDeallocate.html#a9">00391</a> <span class="keywordtype">void</span> set(TYPE *p)
00392 {
00393 <span class="keywordflow">if</span>(p_ != 0)
00394 mmgr_-&gt;<a class="code" href="classxercesc_1_1MemoryManager.html#z15_1">deallocate</a>((<span class="keywordtype">void</span>*)p_);
00395 p_ = p;
00396 }
00397
00398 <span class="keyword">private</span>:
00399 <a class="code" href="classAutoDeallocate.html">AutoDeallocate</a>(<span class="keyword">const</span> <a class="code" href="classAutoDeallocate.html">AutoDeallocate&lt;TYPE&gt;</a> &amp;);
00400 <a class="code" href="classAutoDeallocate.html">AutoDeallocate&lt;TYPE&gt;</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classAutoDeallocate.html">AutoDeallocate&lt;TYPE&gt;</a> &amp;);
00401
00402 TYPE *p_;
00403 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr_;
00404 };
00405
00406 <span class="preprocessor">#endif //__XPATH2MEMORYMANAGER_HPP</span>
00407 <span class="preprocessor"></span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Sep 25 06:55:26 2009 for XQilla Simple API by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address>
</body>
</html>