<!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>XalanQNameByReference.hpp</h1>  </div>
</div>
<div class="contents">
<a href="XalanQNameByReference_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(XALANQNAMEBYREFERENCE_HEADER_GUARD_1357924680)</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define XALANQNAMEBYREFERENCE_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="comment">// Base header file.  Must be first.</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="XPathDefinitions_8hpp.html">xalanc/XPath/XPathDefinitions.hpp</a>&gt;</span>
<a name="l00025"></a>00025 
<a name="l00026"></a>00026 
<a name="l00027"></a>00027 
<a name="l00028"></a>00028 <span class="comment">// Base class header file...</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="XalanQName_8hpp.html">xalanc/XPath/XalanQName.hpp</a>&gt;</span>
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 
<a name="l00033"></a>00033 XALAN_CPP_NAMESPACE_BEGIN
<a name="l00034"></a>00034 
<a name="l00035"></a>00035 
<a name="l00036"></a>00036 
<a name="l00037"></a><a class="code" href="classXalanQNameByReference.html">00037</a> <span class="keyword">class </span><a class="code" href="XPathDefinitions_8hpp.html#aa9c15f77ef5ab2dc518733b0fd07c141">XALAN_XPATH_EXPORT</a> <a class="code" href="classXalanQNameByReference.html">XalanQNameByReference</a> : <span class="keyword">public</span> <a class="code" href="classXalanQName.html" title="Class to represent a qualified name.">XalanQName</a>
<a name="l00038"></a>00038 {
<a name="l00039"></a>00039 <span class="keyword">public</span>:
<a name="l00040"></a>00040 <span class="comment"></span>
<a name="l00041"></a>00041 <span class="comment">    /**</span>
<a name="l00042"></a>00042 <span class="comment">     * Construct an empty XalanQNameByReference.</span>
<a name="l00043"></a>00043 <span class="comment">     */</span>
<a name="l00044"></a>00044     <span class="keyword">explicit</span>
<a name="l00045"></a>00045     <a class="code" href="classXalanQNameByReference.html">XalanQNameByReference</a>();
<a name="l00046"></a>00046 <span class="comment"></span>
<a name="l00047"></a>00047 <span class="comment">    /**</span>
<a name="l00048"></a>00048 <span class="comment">     * Construct a XalanQNameByReference, with the supplied namespace and local part.</span>
<a name="l00049"></a>00049 <span class="comment">     * The instance keeps only a _reference_ to the string, to avoid making a</span>
<a name="l00050"></a>00050 <span class="comment">     * copy.</span>
<a name="l00051"></a>00051 <span class="comment">     *</span>
<a name="l00052"></a>00052 <span class="comment">     * @param theNamespace namespace string</span>
<a name="l00053"></a>00053 <span class="comment">     * @param theLocalPart local part string</span>
<a name="l00054"></a>00054 <span class="comment">     */</span>
<a name="l00055"></a>00055     <a class="code" href="classXalanQNameByReference.html">XalanQNameByReference</a>(
<a name="l00056"></a>00056             <span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;   theNamespace,
<a name="l00057"></a>00057             <span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;   theLocalPart);
<a name="l00058"></a>00058 <span class="comment"></span>
<a name="l00059"></a>00059 <span class="comment">    /**</span>
<a name="l00060"></a>00060 <span class="comment">     * Construct a XalanQNameByReference, with the supplied local part.</span>
<a name="l00061"></a>00061 <span class="comment">     * The instance keeps only a _reference_ to the string, to avoid making a</span>
<a name="l00062"></a>00062 <span class="comment">     * copy.</span>
<a name="l00063"></a>00063 <span class="comment">     *</span>
<a name="l00064"></a>00064 <span class="comment">     * @param theLocalPart local part string</span>
<a name="l00065"></a>00065 <span class="comment">     */</span>
<a name="l00066"></a>00066     <a class="code" href="classXalanQNameByReference.html">XalanQNameByReference</a>(<span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;     theLocalPart);
<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 a XalanQNameByReference, from the supplied XalanQName.  The instance</span>
<a name="l00070"></a>00070 <span class="comment">     * keeps only a _reference_ to the string, to avoid making a copy.</span>
<a name="l00071"></a>00071 <span class="comment">     *</span>
<a name="l00072"></a>00072 <span class="comment">     * @param theQName The source QName</span>
<a name="l00073"></a>00073 <span class="comment">     */</span>
<a name="l00074"></a>00074     <a class="code" href="classXalanQNameByReference.html">XalanQNameByReference</a>(<span class="keyword">const</span> <a class="code" href="classXalanQName.html" title="Class to represent a qualified name.">XalanQName</a>&amp;     theQName);
<a name="l00075"></a>00075 
<a name="l00076"></a>00076     <span class="keyword">virtual</span>
<a name="l00077"></a>00077     ~<a class="code" href="classXalanQNameByReference.html">XalanQNameByReference</a>();
<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">     * Retrieve the local part of qualified name.</span>
<a name="l00081"></a>00081 <span class="comment">     * </span>
<a name="l00082"></a>00082 <span class="comment">     * @return local part string</span>
<a name="l00083"></a>00083 <span class="comment">     */</span>
<a name="l00084"></a>00084     <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;
<a name="l00085"></a>00085     <a class="code" href="classXalanQName.html#ae904f9d04224a9bc44471b49e132e7ac" title="Retrieve the local part of qualified name.">getLocalPart</a>() <span class="keyword">const</span>;
<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">     * Set the local part of qualified name.</span>
<a name="l00089"></a>00089 <span class="comment">     * </span>
<a name="l00090"></a>00090 <span class="comment">     * @param theLocalPart local part string</span>
<a name="l00091"></a>00091 <span class="comment">     */</span>
<a name="l00092"></a>00092     <span class="keywordtype">void</span>
<a name="l00093"></a><a class="code" href="classXalanQNameByReference.html#a2e38620281401946c9178c5fdcb0491b">00093</a>     setLocalPart(<span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;  theLocalPart)
<a name="l00094"></a>00094     {
<a name="l00095"></a>00095         m_localpart = &amp;theLocalPart;
<a name="l00096"></a>00096     }
<a name="l00097"></a>00097 <span class="comment"></span>
<a name="l00098"></a>00098 <span class="comment">    /**</span>
<a name="l00099"></a>00099 <span class="comment">     * Retrieve the namespace of qualified name.</span>
<a name="l00100"></a>00100 <span class="comment">     * </span>
<a name="l00101"></a>00101 <span class="comment">     * @return namespace string</span>
<a name="l00102"></a>00102 <span class="comment">     */</span>
<a name="l00103"></a>00103     <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;
<a name="l00104"></a>00104     <a class="code" href="classXalanQName.html#a9f1828267671043584f3138bff37f393" title="Retrieve the namespace of qualified name.">getNamespace</a>() <span class="keyword">const</span>;
<a name="l00105"></a>00105 <span class="comment"></span>
<a name="l00106"></a>00106 <span class="comment">    /**</span>
<a name="l00107"></a>00107 <span class="comment">     * Set the Namespace URI of qualified name.</span>
<a name="l00108"></a>00108 <span class="comment">     * </span>
<a name="l00109"></a>00109 <span class="comment">     * @param theLocalPart local part string</span>
<a name="l00110"></a>00110 <span class="comment">     */</span>
<a name="l00111"></a>00111     <span class="keywordtype">void</span>
<a name="l00112"></a><a class="code" href="classXalanQNameByReference.html#a01428903b88d6692ab002f5d97ebd23a">00112</a>     setNamespace(<span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;  theNamespace)
<a name="l00113"></a>00113     {
<a name="l00114"></a>00114         m_namespace = &amp;theNamespace;
<a name="l00115"></a>00115     }
<a name="l00116"></a>00116 <span class="comment"></span>
<a name="l00117"></a>00117 <span class="comment">    /**</span>
<a name="l00118"></a>00118 <span class="comment">     * Clear the instance.</span>
<a name="l00119"></a>00119 <span class="comment">     */</span>
<a name="l00120"></a>00120     <span class="keywordtype">void</span>
<a name="l00121"></a><a class="code" href="classXalanQNameByReference.html#aac46d0403583167099530dc6cafbd0c4">00121</a>     <a class="code" href="DOMStringHelper_8hpp.html#a3beaa7474ee8377a7de5fe4eceddcc94" title="Remove all elements from target string.">clear</a>()
<a name="l00122"></a>00122     {
<a name="l00123"></a>00123         m_namespace = &amp;s_emptyString;
<a name="l00124"></a>00124         m_localpart = &amp;s_emptyString;
<a name="l00125"></a>00125     }
<a name="l00126"></a>00126 
<a name="l00127"></a>00127 <span class="keyword">private</span>:
<a name="l00128"></a>00128 
<a name="l00129"></a>00129     <span class="comment">// OK, we said reference, but using pointers</span>
<a name="l00130"></a>00130     <span class="comment">// allows for copy and assignment semantics.</span>
<a name="l00131"></a>00131     <span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>*   m_namespace;
<a name="l00132"></a>00132 
<a name="l00133"></a>00133     <span class="keyword">const</span> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>*   m_localpart;
<a name="l00134"></a>00134 };
<a name="l00135"></a>00135 
<a name="l00136"></a>00136 
<a name="l00137"></a>00137 
<a name="l00138"></a>00138 <span class="keyword">template</span>&lt;&gt;
<a name="l00139"></a><a class="code" href="structXalanMapKeyTraits_3_01XalanQNameByReference_01_4.html">00139</a> <span class="keyword">struct </span><a class="code" href="structXalanMapKeyTraits.html">XalanMapKeyTraits</a>&lt;<a class="code" href="classXalanQNameByReference.html">XalanQNameByReference</a>&gt; : <span class="keyword">public</span> <a class="code" href="structXalanMapKeyTraits.html">XalanMapKeyTraits</a>&lt;XalanQName&gt;
<a name="l00140"></a>00140 {
<a name="l00141"></a>00141 };
<a name="l00142"></a>00142 
<a name="l00143"></a>00143 
<a name="l00144"></a>00144 
<a name="l00145"></a>00145 XALAN_CPP_NAMESPACE_END
<a name="l00146"></a>00146 
<a name="l00147"></a>00147 
<a name="l00148"></a>00148 
<a name="l00149"></a>00149 <span class="preprocessor">#endif  // XALANQNAMEBYREFERENCE_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>
