417 lines
28 KiB
HTML
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&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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="examples.html">Examples</a></div>
|
|
<div class="nav">
|
|
<a class="el" href="dir_000000.html">include</a> / <a class="el" href="dir_000001.html">xqilla</a> / <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 <algorithm></span>
|
|
00026 <span class="preprocessor">#include <assert.h></span>
|
|
00027
|
|
00028 <span class="preprocessor">#include <xqilla/framework/XQillaExport.hpp></span>
|
|
00029
|
|
00030 <span class="preprocessor">#include <<a class="code" href="MemoryManager_8hpp.html">xercesc/framework/MemoryManager.hpp</a>></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 >= 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> <<span class="keyword">class</span> _Tp>
|
|
<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& 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& 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> <<span class="keyword">class</span> _Tp1> <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<_Tp1></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<_Tp></a>& o)
|
|
00114 {
|
|
00115 _memMgr=o.<a class="code" href="classXQillaAllocator.html#o1">_memMgr</a>;
|
|
00116 }
|
|
00117 <span class="preprocessor">#if _MSC_VER >= 1500</span>
|
|
00118 <span class="preprocessor"></span> <span class="comment">// Needed for Visual Studio 2008 </span>
|
|
00119 <span class="keyword">template</span><<span class="keyword">class</span> _Tp1> <a class="code" href="classXQillaAllocator.html">XQillaAllocator</a>(<span class="keyword">const</span> <a class="code" href="classXQillaAllocator.html">XQillaAllocator<_Tp1></a>& 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 << "XQillaAllocator::allocate(" << _n << ")" << std::endl;</span>
|
|
00129 <span class="keywordflow">if</span>(_memMgr)
|
|
00130 <span class="keywordflow">return</span> _n != 0 ? static_cast<pointer>(_memMgr->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<pointer>(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 << "XQillaAllocator::deallocate(" << _n << ")" << 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-><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->~_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-><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-><a class="code" href="classxercesc_1_1MemoryManager.html#z15_1">deallocate</a>(ptr);
|
|
00187 }
|
|
00188
|
|
00189 <span class="keyword">template</span><<span class="keyword">class</span> TYPE>
|
|
<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_->release();
|
|
00199 }
|
|
00200
|
|
<a name="l00201"></a><a class="code" href="classAutoRelease.html#a2">00201</a> TYPE &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->()<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_->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<TYPE></a> &);
|
|
00238 <a class="code" href="classAutoRelease.html">AutoRelease<TYPE></a> &operator=(<span class="keyword">const</span> <a class="code" href="classAutoRelease.html">AutoRelease<TYPE></a> &);
|
|
00239
|
|
00240 TYPE *p_;
|
|
00241 };
|
|
00242
|
|
00243 <span class="keyword">template</span><<span class="keyword">class</span> TYPE>
|
|
<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 &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->()<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<TYPE></a> &);
|
|
00290 <a class="code" href="classAutoDelete.html">AutoDelete<TYPE></a> &operator=(<span class="keyword">const</span> <a class="code" href="classAutoDelete.html">AutoDelete<TYPE></a> &);
|
|
00291
|
|
00292 TYPE *p_;
|
|
00293 };
|
|
00294
|
|
00295 <span class="keyword">template</span><<span class="keyword">class</span> TYPE>
|
|
<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 &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->()<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<TYPE></a> &);
|
|
00342 <a class="code" href="classAutoDeleteArray.html">AutoDeleteArray<TYPE></a> &operator=(<span class="keyword">const</span> <a class="code" href="classAutoDeleteArray.html">AutoDeleteArray<TYPE></a> &);
|
|
00343
|
|
00344 TYPE *p_;
|
|
00345 };
|
|
00346
|
|
00347 <span class="keyword">template</span><<span class="keyword">class</span> TYPE>
|
|
<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_-><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_-><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 &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->()<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_-><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<TYPE></a> &);
|
|
00400 <a class="code" href="classAutoDeallocate.html">AutoDeallocate<TYPE></a> &operator=(<span class="keyword">const</span> <a class="code" href="classAutoDeallocate.html">AutoDeallocate<TYPE></a> &);
|
|
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
|
|
<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>
|