<!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>XalanElemAttributeAllocator.hpp</h1>  </div>
</div>
<div class="contents">
<a href="XalanElemAttributeAllocator_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(XALANELEMATTRIBUTEALLOCATOR_INCLUDE_GUARD_12455133)</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define XALANELEMATTRIBUTEALLOCATOR_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="XSLTDefinitions_8hpp.html">xalanc/XSLT/XSLTDefinitions.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="ElemAttribute_8hpp.html">xalanc/XSLT/ElemAttribute.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="ArenaAllocator_8hpp.html">xalanc/PlatformSupport/ArenaAllocator.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="classXalanElemAttributeAllocator.html">00041</a> <span class="keyword">class </span><a class="code" href="XSLTDefinitions_8hpp.html#afe13e115e49db23eff1daccf7343935f">XALAN_XSLT_EXPORT</a> <a class="code" href="classXalanElemAttributeAllocator.html">XalanElemAttributeAllocator</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="classXalanElemAttributeAllocator.html#a76ba9e694aab163940505da59c72adaf">00045</a>     <span class="keyword">typedef</span> <a class="code" href="classElemAttribute.html">ElemAttribute</a>                   <a class="code" href="classElemAttribute.html">data_type</a>;
<a name="l00046"></a>00046 
<a name="l00047"></a>00047 <span class="preprocessor">#if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS)</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span>    <span class="keyword">typedef</span> <a class="code" href="classArenaBlock.html">ArenaBlock&lt;data_type&gt;</a>               ArenaBlockType;
<a name="l00049"></a>00049     <span class="keyword">typedef</span> <a class="code" href="classArenaAllocator.html">ArenaAllocator</a>&lt;<a class="code" href="classElemAttribute.html">data_type</a>,
<a name="l00050"></a>00050                            ArenaBlockType&gt;      <a class="code" href="classArenaAllocator.html">ArenaAllocatorType</a>;
<a name="l00051"></a>00051 <span class="preprocessor">#else</span>
<a name="l00052"></a><a class="code" href="classXalanElemAttributeAllocator.html#a0381753142262d27c67838b69ff9ae35">00052</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="l00053"></a>00053 <span class="preprocessor">#endif</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span>
<a name="l00055"></a><a class="code" href="classXalanElemAttributeAllocator.html#aa140a65d9132dfe26a94d5f11a19825b">00055</a>     <span class="keyword">typedef</span> <a class="code" href="classArenaAllocator.html#a68eaf7d03e3a4a9f35c035481f0acd67">ArenaAllocatorType::size_type</a>       size_type;
<a name="l00056"></a>00056 <span class="comment"></span>
<a name="l00057"></a>00057 <span class="comment">    /**</span>
<a name="l00058"></a>00058 <span class="comment">     * Construct an instance that will allocate blocks of the specified size.</span>
<a name="l00059"></a>00059 <span class="comment">     *</span>
<a name="l00060"></a>00060 <span class="comment">     * @param theBlockSize The block size.</span>
<a name="l00061"></a>00061 <span class="comment">     */</span>
<a name="l00062"></a>00062     <a class="code" href="classXalanElemAttributeAllocator.html">XalanElemAttributeAllocator</a>(
<a name="l00063"></a>00063                 MemoryManager&amp;  theManager,
<a name="l00064"></a>00064                 <a class="code" href="classXalanElemAttributeAllocator.html#aa140a65d9132dfe26a94d5f11a19825b">size_type</a>           theBlockCount);
<a name="l00065"></a>00065 
<a name="l00066"></a>00066     ~<a class="code" href="classXalanElemAttributeAllocator.html">XalanElemAttributeAllocator</a>();
<a name="l00067"></a>00067     <span class="comment"></span>
<a name="l00068"></a>00068 <span class="comment">    /**</span>
<a name="l00069"></a>00069 <span class="comment">     * Construct an instance</span>
<a name="l00070"></a>00070 <span class="comment">     * </span>
<a name="l00071"></a>00071 <span class="comment">     * @param constructionContext context for construction of object</span>
<a name="l00072"></a>00072 <span class="comment">     * @param stylesheetTree      stylesheet containing element</span>
<a name="l00073"></a>00073 <span class="comment">     * @param atts                list of attributes for element</span>
<a name="l00074"></a>00074 <span class="comment">     * @param lineNumber                line number in document</span>
<a name="l00075"></a>00075 <span class="comment">     * @param columnNumber          column number in document</span>
<a name="l00076"></a>00076 <span class="comment">     *</span>
<a name="l00077"></a>00077 <span class="comment">     * @return A pointer to the new instance.</span>
<a name="l00078"></a>00078 <span class="comment">     */</span>
<a name="l00079"></a>00079     <a class="code" href="classElemAttribute.html">data_type</a>*
<a name="l00080"></a>00080     create(
<a name="l00081"></a>00081             <a class="code" href="classStylesheetConstructionContext.html">StylesheetConstructionContext</a>&amp;  constructionContext,
<a name="l00082"></a>00082             <a class="code" href="classStylesheet.html" title="This class represents the base stylesheet or an &amp;quot;import&amp;quot; stylesheet.">Stylesheet</a>&amp;                     stylesheetTree,
<a name="l00083"></a>00083             <span class="keyword">const</span> <a class="code" href="XalanSourceTreeContentHandler_8hpp.html#ab5db67e0ad48b82d8a0476b99c377fdb">AttributeListType</a>&amp;        atts,
<a name="l00084"></a>00084             XalanFileLoc                    lineNumber,
<a name="l00085"></a>00085             XalanFileLoc                    columnNumber);
<a name="l00086"></a>00086 <span class="comment"></span>
<a name="l00087"></a>00087 <span class="comment">    /**</span>
<a name="l00088"></a>00088 <span class="comment">     * Determine if an object is owned by the allocator...</span>
<a name="l00089"></a>00089 <span class="comment">     */</span>
<a name="l00090"></a>00090     <span class="keywordtype">bool</span>
<a name="l00091"></a><a class="code" href="classXalanElemAttributeAllocator.html#a3e6cebc499d5ae59abf93d6c971ad72a">00091</a>     ownsObject(<span class="keyword">const</span> <a class="code" href="classElemAttribute.html">data_type</a>*     theObject)
<a name="l00092"></a>00092     {
<a name="l00093"></a>00093         <span class="keywordflow">return</span> m_allocator.ownsObject(theObject);
<a name="l00094"></a>00094     }
<a name="l00095"></a>00095 <span class="comment"></span>
<a name="l00096"></a>00096 <span class="comment">    /**</span>
<a name="l00097"></a>00097 <span class="comment">     * Delete all objects from the allocator.    </span>
<a name="l00098"></a>00098 <span class="comment">     */</span> 
<a name="l00099"></a>00099     <span class="keywordtype">void</span>
<a name="l00100"></a><a class="code" href="classXalanElemAttributeAllocator.html#af4b4f78cf7e7958375f1bf23fd60fbef">00100</a>     reset()
<a name="l00101"></a>00101     {
<a name="l00102"></a>00102         m_allocator.reset();
<a name="l00103"></a>00103     }
<a name="l00104"></a>00104 <span class="comment"></span>
<a name="l00105"></a>00105 <span class="comment">    /**</span>
<a name="l00106"></a>00106 <span class="comment">     * Get the number of ArenaBlocks currently allocated.</span>
<a name="l00107"></a>00107 <span class="comment">     *</span>
<a name="l00108"></a>00108 <span class="comment">     * @return The number of blocks.</span>
<a name="l00109"></a>00109 <span class="comment">     */</span>
<a name="l00110"></a>00110     <a class="code" href="XalanMap_8hpp.html#a39efc23c4f36ef6389e4a1fbe96c5f2e">size_type</a>
<a name="l00111"></a><a class="code" href="classXalanElemAttributeAllocator.html#a177fee224caa5b0e0b85f2196598ed1e">00111</a>     getBlockCount()<span class="keyword"> const</span>
<a name="l00112"></a>00112 <span class="keyword">    </span>{
<a name="l00113"></a>00113         <span class="keywordflow">return</span> m_allocator.getBlockCount();
<a name="l00114"></a>00114     }
<a name="l00115"></a>00115 <span class="comment"></span>
<a name="l00116"></a>00116 <span class="comment">    /**</span>
<a name="l00117"></a>00117 <span class="comment">     * Get size of an ArenaBlock, that is, the number</span>
<a name="l00118"></a>00118 <span class="comment">     * of objects in each block.</span>
<a name="l00119"></a>00119 <span class="comment">     *</span>
<a name="l00120"></a>00120 <span class="comment">     * @return The size of the block</span>
<a name="l00121"></a>00121 <span class="comment">     */</span>
<a name="l00122"></a>00122     <a class="code" href="XalanMap_8hpp.html#a39efc23c4f36ef6389e4a1fbe96c5f2e">size_type</a>
<a name="l00123"></a><a class="code" href="classXalanElemAttributeAllocator.html#ab0f0effb30332c39fe09ddbe338ca904">00123</a>     getBlockSize()<span class="keyword"> const</span>
<a name="l00124"></a>00124 <span class="keyword">    </span>{
<a name="l00125"></a>00125         <span class="keywordflow">return</span> m_allocator.getBlockSize();
<a name="l00126"></a>00126     }
<a name="l00127"></a>00127 
<a name="l00128"></a>00128 <span class="keyword">private</span>:
<a name="l00129"></a>00129 
<a name="l00130"></a>00130     <span class="comment">// Not implemented...</span>
<a name="l00131"></a>00131     <a class="code" href="classXalanElemAttributeAllocator.html">XalanElemAttributeAllocator</a>(<span class="keyword">const</span> <a class="code" href="classXalanElemAttributeAllocator.html">XalanElemAttributeAllocator</a>&amp;);
<a name="l00132"></a>00132 
<a name="l00133"></a>00133     <a class="code" href="classXalanElemAttributeAllocator.html">XalanElemAttributeAllocator</a>&amp;
<a name="l00134"></a>00134     operator=(<span class="keyword">const</span> <a class="code" href="classXalanElemAttributeAllocator.html">XalanElemAttributeAllocator</a>&amp;);
<a name="l00135"></a>00135 
<a name="l00136"></a>00136     <span class="comment">// Data members...</span>
<a name="l00137"></a>00137     ArenaAllocatorType  m_allocator;
<a name="l00138"></a>00138 };
<a name="l00139"></a>00139 
<a name="l00140"></a>00140 
<a name="l00141"></a>00141 
<a name="l00142"></a>00142 XALAN_CPP_NAMESPACE_END
<a name="l00143"></a>00143 
<a name="l00144"></a>00144 
<a name="l00145"></a>00145 
<a name="l00146"></a>00146 <span class="preprocessor">#endif  // XALANELEMATTRIBUTEALLOCATOR_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>
