<!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>XalanNodeListDummy.hpp</h1>  </div>
</div>
<div class="contents">
<a href="XalanNodeListDummy_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 <span class="preprocessor">#if !defined(XALANNODELISTDUMMY_HEADER_GUARD_1357924680)</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define XALANNODELISTDUMMY_HEADER_GUARD_1357924680</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span>
<a name="l00021"></a>00021 
<a name="l00022"></a>00022 
<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="XalanDOMDefinitions_8hpp.html">xalanc/XalanDOM/XalanDOMDefinitions.hpp</a>&gt;</span>
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 
<a name="l00026"></a>00026 
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="XalanNodeList_8hpp.html">xalanc/XalanDOM/XalanNodeList.hpp</a>&gt;</span>
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 XALAN_CPP_NAMESPACE_BEGIN
<a name="l00032"></a>00032 
<a name="l00033"></a>00033 
<a name="l00034"></a>00034 
<a name="l00035"></a><a class="code" href="classXalanNodeListDummy.html">00035</a> <span class="keyword">class </span><a class="code" href="XalanDOMDefinitions_8hpp.html#a2b07f32ff8f4dc8d68a7dc89c47ef5a2">XALAN_DOM_EXPORT</a> <a class="code" href="classXalanNodeListDummy.html">XalanNodeListDummy</a> : <span class="keyword">public</span> <a class="code" href="classXalanNodeList.html">XalanNodeList</a>
<a name="l00036"></a>00036 {
<a name="l00037"></a>00037 <span class="keyword">public</span>:
<a name="l00038"></a>00038 
<a name="l00039"></a>00039     <a class="code" href="classXalanNodeListDummy.html">XalanNodeListDummy</a>();
<a name="l00040"></a>00040 
<a name="l00041"></a>00041     <span class="keyword">virtual</span>
<a name="l00042"></a>00042     ~<a class="code" href="classXalanNodeListDummy.html">XalanNodeListDummy</a>();
<a name="l00043"></a>00043 
<a name="l00044"></a>00044     <a class="code" href="classXalanNodeListDummy.html">XalanNodeListDummy</a>&amp;
<a name="l00045"></a><a class="code" href="classXalanNodeListDummy.html#a75cba5016b3daf51274c14156d29af2c">00045</a>     <a class="code" href="classXalanNodeList.html#a8648d4ab9f1aa4f5112ef3008b1178b6">operator=</a>(<span class="keyword">const</span> <a class="code" href="classXalanNodeListDummy.html">XalanNodeListDummy</a>&amp;     <span class="comment">/* theSource */</span>)
<a name="l00046"></a>00046     {
<a name="l00047"></a>00047         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00048"></a>00048     }
<a name="l00049"></a>00049 
<a name="l00050"></a>00050     <span class="keyword">virtual</span> <a class="code" href="classXalanNode.html">XalanNode</a>*
<a name="l00051"></a>00051     <a class="code" href="classXalanNodeList.html#aebc74cb2288fe4716c5040477227a007" title="Returns the indexth item in the collection.">item</a>(XalanSize_t    index) <span class="keyword">const</span>;
<a name="l00052"></a>00052 
<a name="l00053"></a>00053     <span class="keyword">virtual</span> XalanSize_t
<a name="l00054"></a>00054     <a class="code" href="classXalanNodeList.html#a9bbd7743b00afe174815e6b44809d348" title="Returns the number of nodes in the list.">getLength</a>() <span class="keyword">const</span>;
<a name="l00055"></a>00055 
<a name="l00056"></a>00056 <span class="keyword">private</span>:
<a name="l00057"></a>00057 };
<a name="l00058"></a>00058 
<a name="l00059"></a>00059 
<a name="l00060"></a>00060 
<a name="l00061"></a>00061 XALAN_CPP_NAMESPACE_END
<a name="l00062"></a>00062 
<a name="l00063"></a>00063 
<a name="l00064"></a>00064 
<a name="l00065"></a>00065 <span class="preprocessor">#endif  // !defined(XALANNODELISTSURROGATE_HEADER_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>
