<!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>XStringCachedAllocator.hpp</h1>  </div>
</div>
<div class="contents">
<a href="XStringCachedAllocator_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(XSTRINGCACHEDALLOCATOR_INCLUDE_GUARD_1357924680)</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define XSTRINGCACHEDALLOCATOR_INCLUDE_GUARD_1357924680</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="XPathDefinitions_8hpp.html">xalanc/XPath/XPathDefinitions.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="XStringCached_8hpp.html">xalanc/XPath/XStringCached.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="ReusableArenaAllocator_8hpp.html">xalanc/PlatformSupport/ReusableArenaAllocator.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="classXStringCachedAllocator.html">00041</a> <span class="keyword">class </span><a class="code" href="XPathDefinitions_8hpp.html#aa9c15f77ef5ab2dc518733b0fd07c141">XALAN_XPATH_EXPORT</a> <a class="code" href="classXStringCachedAllocator.html">XStringCachedAllocator</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="classXStringCachedAllocator.html#a2af333c8760e8925e26534941afb1d76">00045</a>     <span class="keyword">typedef</span> <a class="code" href="classXStringCached.html">XStringCached</a>   <a class="code" href="classXStringCached.html">string_type</a>;
<a name="l00046"></a>00046 
<a name="l00047"></a><a class="code" href="classXStringCachedAllocator.html#ab3a097ed69b69fa47d90365414790c6c">00047</a>     <span class="keyword">typedef</span> <a class="code" href="classXPathExecutionContext_1_1GetCachedString.html">string_type::GetCachedString</a>    <a class="code" href="classXPathExecutionContext_1_1GetCachedString.html">GetCachedString</a>;
<a name="l00048"></a>00048 
<a name="l00049"></a><a class="code" href="classXStringCachedAllocator.html#ab22e2b5d469053902dc97c43b4f0643a">00049</a>     <span class="keyword">typedef</span> <a class="code" href="classReusableArenaAllocator.html">ReusableArenaAllocator&lt;string_type&gt;</a>     <a class="code" href="classReusableArenaAllocator.html">ArenaAllocatorType</a>;
<a name="l00050"></a><a class="code" href="classXStringCachedAllocator.html#a3b49bfd323b48b0e45774a5b26c77f98">00050</a>     <span class="keyword">typedef</span> <a class="code" href="classReusableArenaAllocator.html#acf80af42a3e56e0f51dfc8b490944b8b">ArenaAllocatorType::size_type</a>           size_type;
<a name="l00051"></a>00051 <span class="comment"></span>
<a name="l00052"></a>00052 <span class="comment">    /**</span>
<a name="l00053"></a>00053 <span class="comment">     * Construct an instance that will allocate blocks of the specified size.</span>
<a name="l00054"></a>00054 <span class="comment">     *</span>
<a name="l00055"></a>00055 <span class="comment">     * @param theBlockSize The block size.</span>
<a name="l00056"></a>00056 <span class="comment">     */</span>
<a name="l00057"></a>00057     <a class="code" href="classXStringCachedAllocator.html">XStringCachedAllocator</a>(
<a name="l00058"></a>00058                 MemoryManager&amp;  theManager,
<a name="l00059"></a>00059                 <a class="code" href="classXStringCachedAllocator.html#a3b49bfd323b48b0e45774a5b26c77f98">size_type</a>       theBlockCount);
<a name="l00060"></a>00060 
<a name="l00061"></a>00061     ~<a class="code" href="classXStringCachedAllocator.html">XStringCachedAllocator</a>();
<a name="l00062"></a>00062 <span class="comment"></span>
<a name="l00063"></a>00063 <span class="comment">    /**</span>
<a name="l00064"></a>00064 <span class="comment">     * Create an XString object from a cached string.</span>
<a name="l00065"></a>00065 <span class="comment">     * </span>
<a name="l00066"></a>00066 <span class="comment">     * @param theXObject The source cached string</span>
<a name="l00067"></a>00067 <span class="comment">     *</span>
<a name="l00068"></a>00068 <span class="comment">     * @return a pointer to the new XStringCached instance.</span>
<a name="l00069"></a>00069 <span class="comment">     */</span>
<a name="l00070"></a>00070     <a class="code" href="classXStringCached.html">string_type</a>*
<a name="l00071"></a>00071     createString(<a class="code" href="classXPathExecutionContext_1_1GetCachedString.html">GetCachedString</a>&amp;   theValue);
<a name="l00072"></a>00072 
<a name="l00073"></a>00073 <span class="comment"></span>
<a name="l00074"></a>00074 <span class="comment">    /**</span>
<a name="l00075"></a>00075 <span class="comment">     * Delete an XStringCached object from allocator.    </span>
<a name="l00076"></a>00076 <span class="comment">     */</span>
<a name="l00077"></a>00077     <span class="keywordtype">bool</span>
<a name="l00078"></a>00078     destroy(<a class="code" href="classXStringCached.html">string_type</a>*    theString);
<a name="l00079"></a>00079 <span class="comment"></span>
<a name="l00080"></a>00080 <span class="comment">    /**</span>
<a name="l00081"></a>00081 <span class="comment">     * Determine if an object is owned by the allocator...</span>
<a name="l00082"></a>00082 <span class="comment">     */</span>
<a name="l00083"></a>00083     <span class="keywordtype">bool</span>
<a name="l00084"></a><a class="code" href="classXStringCachedAllocator.html#a508b15e483e6b0728d668548d326ed7b">00084</a>     ownsObject(<span class="keyword">const</span> <a class="code" href="classXStringCached.html">string_type</a>*   theObject)
<a name="l00085"></a>00085     {
<a name="l00086"></a>00086         <span class="keywordflow">return</span> m_allocator.ownsObject(theObject);
<a name="l00087"></a>00087     }
<a name="l00088"></a>00088 <span class="comment"></span>
<a name="l00089"></a>00089 <span class="comment">    /**</span>
<a name="l00090"></a>00090 <span class="comment">     * Delete all XStringCached objects from allocator.  </span>
<a name="l00091"></a>00091 <span class="comment">     */</span>
<a name="l00092"></a>00092     <span class="keywordtype">void</span> 
<a name="l00093"></a>00093     reset();
<a name="l00094"></a>00094 <span class="comment"></span>
<a name="l00095"></a>00095 <span class="comment">    /**</span>
<a name="l00096"></a>00096 <span class="comment">     * Get size of an ArenaBlock, that is, the number</span>
<a name="l00097"></a>00097 <span class="comment">     * of objects in each block.</span>
<a name="l00098"></a>00098 <span class="comment">     *</span>
<a name="l00099"></a>00099 <span class="comment">     * @return The size of the block</span>
<a name="l00100"></a>00100 <span class="comment">     */</span>
<a name="l00101"></a>00101     <a class="code" href="XalanMap_8hpp.html#a39efc23c4f36ef6389e4a1fbe96c5f2e">size_type</a>
<a name="l00102"></a><a class="code" href="classXStringCachedAllocator.html#a49f8eed9f9c62f5d9de30956112ce045">00102</a>     getBlockCount()<span class="keyword"> const</span>
<a name="l00103"></a>00103 <span class="keyword">    </span>{
<a name="l00104"></a>00104         <span class="keywordflow">return</span> m_allocator.getBlockCount();
<a name="l00105"></a>00105     }
<a name="l00106"></a>00106 <span class="comment"></span>
<a name="l00107"></a>00107 <span class="comment">    /**</span>
<a name="l00108"></a>00108 <span class="comment">     * Get the number of ArenaBlocks currently allocated.</span>
<a name="l00109"></a>00109 <span class="comment">     *</span>
<a name="l00110"></a>00110 <span class="comment">     * @return The number of blocks.</span>
<a name="l00111"></a>00111 <span class="comment">     */</span>
<a name="l00112"></a>00112     <a class="code" href="XalanMap_8hpp.html#a39efc23c4f36ef6389e4a1fbe96c5f2e">size_type</a>
<a name="l00113"></a><a class="code" href="classXStringCachedAllocator.html#a41eaf7c510e30798d5406b6161624adb">00113</a>     getBlockSize()<span class="keyword"> const</span>
<a name="l00114"></a>00114 <span class="keyword">    </span>{
<a name="l00115"></a>00115         <span class="keywordflow">return</span> m_allocator.getBlockSize();
<a name="l00116"></a>00116     }
<a name="l00117"></a>00117 
<a name="l00118"></a>00118 <span class="keyword">private</span>:
<a name="l00119"></a>00119 
<a name="l00120"></a>00120     <span class="comment">// Not implemented...</span>
<a name="l00121"></a>00121     <a class="code" href="classXStringCachedAllocator.html">XStringCachedAllocator</a>(<span class="keyword">const</span> <a class="code" href="classXStringCachedAllocator.html">XStringCachedAllocator</a>&amp;);
<a name="l00122"></a>00122 
<a name="l00123"></a>00123     <a class="code" href="classXStringCachedAllocator.html">XStringCachedAllocator</a>&amp;
<a name="l00124"></a>00124     operator=(<span class="keyword">const</span> <a class="code" href="classXStringCachedAllocator.html">XStringCachedAllocator</a>&amp;);
<a name="l00125"></a>00125 
<a name="l00126"></a>00126     <span class="comment">// Data members...</span>
<a name="l00127"></a>00127     ArenaAllocatorType  m_allocator;
<a name="l00128"></a>00128 };
<a name="l00129"></a>00129 
<a name="l00130"></a>00130 
<a name="l00131"></a>00131 
<a name="l00132"></a>00132 XALAN_CPP_NAMESPACE_END
<a name="l00133"></a>00133 
<a name="l00134"></a>00134 
<a name="l00135"></a>00135 
<a name="l00136"></a>00136 <span class="preprocessor">#endif  // XSTRINGCACHEDALLOCATOR_INCLUDE_GUARD_1357924680</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>
