<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Xalan-C++ API : Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<!-- The head section is copied from Doxygen 1.7.1 generated default output -->
<body>
<h2 align="center">Xalan-C++ API Documentation</h2>
<h3 align="center"><a href="../index.html">The Xalan C++ XSLT Processor Version 1.11</a></h3>
<hr/>
<!-- Generated by Doxygen 1.7.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<h1>XalanDOMStringAllocator.hpp</h1>  </div>
</div>
<div class="contents">
<a href="XalanDOMStringAllocator_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>
<a name="l00002"></a>00002 <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span>
<a name="l00003"></a>00003 <span class="comment"> * or more contributor license agreements. See the NOTICE file</span>
<a name="l00004"></a>00004 <span class="comment"> * distributed with this work for additional information</span>
<a name="l00005"></a>00005 <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span>
<a name="l00006"></a>00006 <span class="comment"> * to you under the Apache License, Version 2.0 (the  &quot;License&quot;);</span>
<a name="l00007"></a>00007 <span class="comment"> * you may not use this file except in compliance with the License.</span>
<a name="l00008"></a>00008 <span class="comment"> * You may obtain a copy of the License at</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> *     http://www.apache.org/licenses/LICENSE-2.0</span>
<a name="l00011"></a>00011 <span class="comment"> *</span>
<a name="l00012"></a>00012 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
<a name="l00013"></a>00013 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
<a name="l00014"></a>00014 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<a name="l00015"></a>00015 <span class="comment"> * See the License for the specific language governing permissions and</span>
<a name="l00016"></a>00016 <span class="comment"> * limitations under the License.</span>
<a name="l00017"></a>00017 <span class="comment"> */</span>
<a name="l00018"></a>00018 
<a name="l00019"></a>00019 <span class="preprocessor">#if !defined(XALANDOMSTRINGALLOCATOR_INCLUDE_GUARD_12455133)</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define XALANDOMSTRINGALLOCATOR_INCLUDE_GUARD_12455133</span>
<a name="l00021"></a>00021 <span class="preprocessor"></span>
<a name="l00022"></a>00022 
<a name="l00023"></a>00023 
<a name="l00024"></a>00024 <span class="comment">// Base include file.  Must be first.</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="PlatformSupportDefinitions_8hpp.html">xalanc/PlatformSupport/PlatformSupportDefinitions.hpp</a>&gt;</span>
<a name="l00026"></a>00026 
<a name="l00027"></a>00027 
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="ArenaAllocator_8hpp.html">xalanc/PlatformSupport/ArenaAllocator.hpp</a>&gt;</span>
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="XalanDOMString_8hpp.html">xalanc/XalanDOM/XalanDOMString.hpp</a>&gt;</span>
<a name="l00034"></a>00034 
<a name="l00035"></a>00035 
<a name="l00036"></a>00036 
<a name="l00037"></a>00037 XALAN_CPP_NAMESPACE_BEGIN
<a name="l00038"></a>00038 
<a name="l00039"></a>00039 
<a name="l00040"></a>00040 
<a name="l00041"></a><a class="code" href="classXalanDOMStringAllocator.html">00041</a> <span class="keyword">class </span><a class="code" href="PlatformSupportDefinitions_8hpp.html#a72e8d5d428f0210697564ce111006fde">XALAN_PLATFORMSUPPORT_EXPORT</a> <a class="code" href="classXalanDOMStringAllocator.html">XalanDOMStringAllocator</a>
<a name="l00042"></a>00042 {
<a name="l00043"></a>00043 <span class="keyword">public</span>:
<a name="l00044"></a>00044 
<a name="l00045"></a><a class="code" href="classXalanDOMStringAllocator.html#ac50cb4d93f7678b910b16c600e33bef5">00045</a>     <span class="keyword">typedef</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>                  <a class="code" href="classXalanDOMString.html">data_type</a>;
<a name="l00046"></a><a class="code" href="classXalanDOMStringAllocator.html#a26b3d674d27f76036cc30ad2d5e25747">00046</a>     <span class="keyword">typedef</span> <a class="code" href="classXalanDOMString.html#ab8b91a47f3335d6c54c49029dd1074f2">data_type::size_type</a>            data_type_size_type;
<a name="l00047"></a>00047 
<a name="l00048"></a>00048 <span class="preprocessor">#if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS)</span>
<a name="l00049"></a>00049 <span class="preprocessor"></span>    <span class="keyword">typedef</span> <a class="code" href="classArenaBlock.html">ArenaBlock&lt;data_type&gt;</a>           ArenaBlockType;
<a name="l00050"></a>00050 
<a name="l00051"></a>00051     <span class="keyword">typedef</span> <a class="code" href="classArenaAllocator.html">ArenaAllocator</a>&lt;<a class="code" href="classXalanDOMString.html">data_type</a>,
<a name="l00052"></a>00052                            ArenaBlockType&gt;  <a class="code" href="classArenaAllocator.html">ArenaAllocatorType</a>;
<a name="l00053"></a>00053 <span class="preprocessor">#else</span>
<a name="l00054"></a><a class="code" href="classXalanDOMStringAllocator.html#a302eb31b0aa4ce322116c0274b4c7fb0">00054</a> <span class="preprocessor"></span>    <span class="keyword">typedef</span> <a class="code" href="classArenaAllocator.html">ArenaAllocator&lt;data_type&gt;</a>       <a class="code" href="classArenaAllocator.html">ArenaAllocatorType</a>;
<a name="l00055"></a>00055 <span class="preprocessor">#endif</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span>
<a name="l00057"></a><a class="code" href="classXalanDOMStringAllocator.html#a9e22d92647c1b90f1ee86626617f77f8">00057</a>     <span class="keyword">typedef</span> <a class="code" href="classArenaAllocator.html#a68eaf7d03e3a4a9f35c035481f0acd67">ArenaAllocatorType::size_type</a>   size_type;
<a name="l00058"></a>00058 
<a name="l00059"></a><a class="code" href="classXalanDOMStringAllocator.html#a57975f8567428ad2a24186704295d2c1a9717e4958d884c8ca8b2ebef828eab24">00059</a>     <span class="keyword">enum</span> { eDefaultBlockSize = 32 };
<a name="l00060"></a>00060 
<a name="l00061"></a>00061 <span class="comment"></span>
<a name="l00062"></a>00062 <span class="comment">    /**</span>
<a name="l00063"></a>00063 <span class="comment">     * Construct an instance that will allocate in blocks of the specified size.</span>
<a name="l00064"></a>00064 <span class="comment">     *</span>
<a name="l00065"></a>00065 <span class="comment">     * @param theBlockSize The block size.</span>
<a name="l00066"></a>00066 <span class="comment">     */</span>
<a name="l00067"></a>00067     <a class="code" href="classXalanDOMStringAllocator.html">XalanDOMStringAllocator</a>(MemoryManager&amp;      theManager, <a class="code" href="XalanMap_8hpp.html#a39efc23c4f36ef6389e4a1fbe96c5f2e">size_type</a>   theBlockCount);
<a name="l00068"></a>00068 
<a name="l00069"></a>00069     ~<a class="code" href="classXalanDOMStringAllocator.html">XalanDOMStringAllocator</a>();
<a name="l00070"></a>00070 <span class="comment"></span>
<a name="l00071"></a>00071 <span class="comment">    /**</span>
<a name="l00072"></a>00072 <span class="comment">     * Create a XalanDOMString object.</span>
<a name="l00073"></a>00073 <span class="comment">     * </span>
<a name="l00074"></a>00074 <span class="comment">     * @return pointer to the new instance</span>
<a name="l00075"></a>00075 <span class="comment">     */</span>
<a name="l00076"></a>00076     data_type*
<a name="l00077"></a>00077     create();
<a name="l00078"></a>00078 <span class="comment"></span>
<a name="l00079"></a>00079 <span class="comment">    /**</span>
<a name="l00080"></a>00080 <span class="comment">     * Create a XalanDOMString object.</span>
<a name="l00081"></a>00081 <span class="comment">     * </span>
<a name="l00082"></a>00082 <span class="comment">     * @param theString A pointer to a character string</span>
<a name="l00083"></a>00083 <span class="comment">     * @param theCount The number of characters in the string, or npos if the string is null-terminated.</span>
<a name="l00084"></a>00084 <span class="comment">     *</span>
<a name="l00085"></a>00085 <span class="comment">     * @return pointer to the new instance</span>
<a name="l00086"></a>00086 <span class="comment">     */</span>
<a name="l00087"></a>00087     data_type*
<a name="l00088"></a>00088     create(
<a name="l00089"></a>00089             <span class="keyword">const</span> <span class="keywordtype">char</span>*             theString,
<a name="l00090"></a>00090 #<span class="keywordflow">if</span> defined(_MSC_VER) &amp;&amp; (_MSC_VER &lt;= 1300)
<a name="l00091"></a>00091             <span class="comment">// $$$ ToDo: Some strange bug in MSVC++ complains when using data_type::npos here.</span>
<a name="l00092"></a>00092             data_type_size_type     theCount = data_type_size_type(-1));
<a name="l00093"></a>00093 <span class="preprocessor">#else</span>
<a name="l00094"></a>00094 <span class="preprocessor"></span>            data_type_size_type     theCount = data_type_size_type(data_type::npos));
<a name="l00095"></a>00095 <span class="preprocessor">#endif</span>
<a name="l00096"></a>00096 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00097"></a>00097 <span class="comment">    /**</span>
<a name="l00098"></a>00098 <span class="comment">     * Copy constructor</span>
<a name="l00099"></a>00099 <span class="comment">     * </span>
<a name="l00100"></a>00100 <span class="comment">     * @param theSource The source string for the copy</span>
<a name="l00101"></a>00101 <span class="comment">     * @param theStartPosition The position to start in the source string.</span>
<a name="l00102"></a>00102 <span class="comment">     * @param theCount The number of characters to copy from the source string.</span>
<a name="l00103"></a>00103 <span class="comment">     *</span>
<a name="l00104"></a>00104 <span class="comment">     * @return pointer to the new instance</span>
<a name="l00105"></a>00105 <span class="comment">     */</span>
<a name="l00106"></a>00106     data_type*
<a name="l00107"></a>00107     create(
<a name="l00108"></a>00108             <span class="keyword">const</span> data_type&amp;        theSource,
<a name="l00109"></a>00109             data_type_size_type     theStartPosition = 0,
<a name="l00110"></a>00110             data_type_size_type     theCount = data_type_size_type(data_type::npos));
<a name="l00111"></a>00111 <span class="comment"></span>
<a name="l00112"></a>00112 <span class="comment">    /**</span>
<a name="l00113"></a>00113 <span class="comment">     * Create a XalanDOMString object.</span>
<a name="l00114"></a>00114 <span class="comment">     * </span>
<a name="l00115"></a>00115 <span class="comment">     * @param theString A pointer to a wide character string</span>
<a name="l00116"></a>00116 <span class="comment">     * @param theCount The number of characters in the string, or npos if the string is null-terminated.</span>
<a name="l00117"></a>00117 <span class="comment">     *</span>
<a name="l00118"></a>00118 <span class="comment">     * @return pointer to the new instance</span>
<a name="l00119"></a>00119 <span class="comment">     */</span>
<a name="l00120"></a>00120     data_type*
<a name="l00121"></a>00121     create(
<a name="l00122"></a>00122             <span class="keyword">const</span> XalanDOMChar*     theString,
<a name="l00123"></a>00123             data_type_size_type     theCount = data_type_size_type(data_type::npos));
<a name="l00124"></a>00124 <span class="comment"></span>
<a name="l00125"></a>00125 <span class="comment">    /**</span>
<a name="l00126"></a>00126 <span class="comment">     * Create a XalanDOMString object.</span>
<a name="l00127"></a>00127 <span class="comment">     *</span>
<a name="l00128"></a>00128 <span class="comment">     * @param theCount the size of the string</span>
<a name="l00129"></a>00129 <span class="comment">     * @param theChar the character used to initialize the string</span>
<a name="l00130"></a>00130 <span class="comment">     *</span>
<a name="l00131"></a>00131 <span class="comment">     * @return pointer to the new instance</span>
<a name="l00132"></a>00132 <span class="comment">     */</span>
<a name="l00133"></a>00133     data_type*
<a name="l00134"></a>00134     create(
<a name="l00135"></a>00135             data_type_size_type     theCount,
<a name="l00136"></a>00136             XalanDOMChar            theChar);
<a name="l00137"></a>00137 <span class="comment"></span>
<a name="l00138"></a>00138 <span class="comment">    /**</span>
<a name="l00139"></a>00139 <span class="comment">     * Determine if an object is owned by the allocator...</span>
<a name="l00140"></a>00140 <span class="comment">     */</span>
<a name="l00141"></a>00141     <span class="keywordtype">bool</span>
<a name="l00142"></a><a class="code" href="classXalanDOMStringAllocator.html#ae94f1c5c3de7ee6e0d1dc8049c3c1e75">00142</a>     ownsObject(<span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">data_type</a>*     theObject)
<a name="l00143"></a>00143     {
<a name="l00144"></a>00144         <span class="keywordflow">return</span> m_allocator.ownsObject(theObject);
<a name="l00145"></a>00145     }
<a name="l00146"></a>00146 <span class="comment"></span>
<a name="l00147"></a>00147 <span class="comment">    /**</span>
<a name="l00148"></a>00148 <span class="comment">     * Delete all instance objects from allocator.   </span>
<a name="l00149"></a>00149 <span class="comment">     */</span> 
<a name="l00150"></a>00150     <span class="keywordtype">void</span>
<a name="l00151"></a><a class="code" href="classXalanDOMStringAllocator.html#a2e3d871060705716bc600f068ec529b4">00151</a>     reset()
<a name="l00152"></a>00152     {
<a name="l00153"></a>00153         m_allocator.reset();
<a name="l00154"></a>00154     }
<a name="l00155"></a>00155 <span class="comment"></span>
<a name="l00156"></a>00156 <span class="comment">    /**</span>
<a name="l00157"></a>00157 <span class="comment">     * Get the number of ArenaBlocks currently allocated.</span>
<a name="l00158"></a>00158 <span class="comment">     *</span>
<a name="l00159"></a>00159 <span class="comment">     * @return The number of blocks.</span>
<a name="l00160"></a>00160 <span class="comment">     */</span>
<a name="l00161"></a>00161     <a class="code" href="XalanMap_8hpp.html#a39efc23c4f36ef6389e4a1fbe96c5f2e">size_type</a>
<a name="l00162"></a><a class="code" href="classXalanDOMStringAllocator.html#a7c7054c34035312b195e7feaf02d74f1">00162</a>     getBlockCount()<span class="keyword"> const</span>
<a name="l00163"></a>00163 <span class="keyword">    </span>{
<a name="l00164"></a>00164         <span class="keywordflow">return</span> m_allocator.getBlockCount();
<a name="l00165"></a>00165     }
<a name="l00166"></a>00166 <span class="comment"></span>
<a name="l00167"></a>00167 <span class="comment">    /**</span>
<a name="l00168"></a>00168 <span class="comment">     * Get size of an ArenaBlock, that is, the number</span>
<a name="l00169"></a>00169 <span class="comment">     * of objects in each block.</span>
<a name="l00170"></a>00170 <span class="comment">     *</span>
<a name="l00171"></a>00171 <span class="comment">     * @return The size of the block</span>
<a name="l00172"></a>00172 <span class="comment">     */</span>
<a name="l00173"></a>00173     <a class="code" href="XalanMap_8hpp.html#a39efc23c4f36ef6389e4a1fbe96c5f2e">size_type</a>
<a name="l00174"></a><a class="code" href="classXalanDOMStringAllocator.html#a8a0ac0b43711e3a1754f28f8fbbfcb7e">00174</a>     getBlockSize()<span class="keyword"> const</span>
<a name="l00175"></a>00175 <span class="keyword">    </span>{
<a name="l00176"></a>00176         <span class="keywordflow">return</span> m_allocator.getBlockSize();
<a name="l00177"></a>00177     }
<a name="l00178"></a>00178 <span class="comment"></span>
<a name="l00179"></a>00179 <span class="comment">    /**</span>
<a name="l00180"></a>00180 <span class="comment">     * Get a reference to the MemoryManager instance</span>
<a name="l00181"></a>00181 <span class="comment">     * for this instance.</span>
<a name="l00182"></a>00182 <span class="comment">     *</span>
<a name="l00183"></a>00183 <span class="comment">     * @return A reference to the MemoryManager instance.</span>
<a name="l00184"></a>00184 <span class="comment">     */</span>
<a name="l00185"></a>00185     MemoryManager&amp;
<a name="l00186"></a><a class="code" href="classXalanDOMStringAllocator.html#ab01911c2c4655678503f63f75bd367aa">00186</a>     getMemoryManager()
<a name="l00187"></a>00187     {
<a name="l00188"></a>00188         <span class="keywordflow">return</span> m_allocator.getMemoryManager();
<a name="l00189"></a>00189     }
<a name="l00190"></a>00190 <span class="comment"></span>
<a name="l00191"></a>00191 <span class="comment">    /**</span>
<a name="l00192"></a>00192 <span class="comment">     * Get a reference to the MemoryManager instance</span>
<a name="l00193"></a>00193 <span class="comment">     * for this instance.</span>
<a name="l00194"></a>00194 <span class="comment">     *</span>
<a name="l00195"></a>00195 <span class="comment">     * @return A reference to the MemoryManager instance.</span>
<a name="l00196"></a>00196 <span class="comment">     */</span>
<a name="l00197"></a>00197     <span class="keyword">const</span> MemoryManager&amp;
<a name="l00198"></a><a class="code" href="classXalanDOMStringAllocator.html#aa4d23b2bb91ccbf7219d013af52a2d87">00198</a>     getMemoryManager()<span class="keyword"> const</span>
<a name="l00199"></a>00199 <span class="keyword">    </span>{
<a name="l00200"></a>00200         <span class="keywordflow">return</span> m_allocator.getMemoryManager();
<a name="l00201"></a>00201     }
<a name="l00202"></a>00202 
<a name="l00203"></a>00203 <span class="keyword">private</span>:
<a name="l00204"></a>00204 
<a name="l00205"></a>00205     <span class="comment">// Not implemented...</span>
<a name="l00206"></a>00206     <a class="code" href="classXalanDOMStringAllocator.html">XalanDOMStringAllocator</a>(<span class="keyword">const</span> <a class="code" href="classXalanDOMStringAllocator.html">XalanDOMStringAllocator</a>&amp;);
<a name="l00207"></a>00207 
<a name="l00208"></a>00208     <a class="code" href="classXalanDOMStringAllocator.html">XalanDOMStringAllocator</a>&amp;
<a name="l00209"></a>00209     operator=(<span class="keyword">const</span> <a class="code" href="classXalanDOMStringAllocator.html">XalanDOMStringAllocator</a>&amp;);
<a name="l00210"></a>00210 
<a name="l00211"></a>00211     <span class="comment">// Data members...</span>
<a name="l00212"></a>00212     ArenaAllocatorType  m_allocator;
<a name="l00213"></a>00213 };
<a name="l00214"></a>00214 
<a name="l00215"></a>00215 
<a name="l00216"></a>00216 
<a name="l00217"></a>00217 XALAN_CPP_NAMESPACE_END
<a name="l00218"></a>00218 
<a name="l00219"></a>00219 
<a name="l00220"></a>00220 
<a name="l00221"></a>00221 <span class="preprocessor">#endif  // XALANDOMSTRINGALLOCATOR_INCLUDE_GUARD_12455133</span>
</pre></div></div>
</div>
<p align="center"><a href="graph_legend.html">Interpreting class diagrams</a></p>
<p><font color="#000000" face="arial,helvetica,sanserif" size="-1">
<i><a href="http://www.doxygen.org/">Doxygen</a> and 
<a href="http://www.graphviz.org/">GraphViz</a> are 
used to generate this API documentation from the Xalan-C header files.</i></font></p>

<table border="0" cellpadding="0" cellspacing="0" width="80%">
 <tr>
  <td width="80%" valign="top">
	<p align="center"><b>Xalan-C++ XSLT Processor Version 1.11</b><br/>
	Copyright &copy; 1999-2012 The Apache Software Foundation.<br/>
	All Rights Reserved.</p>
  </td>
 </tr>
 <tr>
  <td width="100%">
	<p align="center"><img src="asf_logo_wide.gif" width="268" height="25" align="bottom" border="0" alt="Apache Logo">
  </td>
 </tr>
</table>
</body>
</html>
