blob: 0c4619fd79b1a12892ad6c35ff817a44734ab398 [file] [log] [blame]
<HTML><HEAD><TITLE>Xalan-C++ API Documentation</TITLE></HEAD>
<BODY>
<h2 align="center">Xalan-C++ API Documentation</h2>
<h3 align="center">The Xalan C++ XSLT Processor Version 1.10</h3>
</BODY>
<!-- Generated by Doxygen 1.2.8.1 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>XalanXMLSerializerBase.hpp</h1><a href="XalanXMLSerializerBase_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">/*</font>
00002 <font class="comment"> * Copyright 1999-2004 The Apache Software Foundation.</font>
00003 <font class="comment"> *</font>
00004 <font class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</font>
00005 <font class="comment"> * you may not use this file except in compliance with the License.</font>
00006 <font class="comment"> * You may obtain a copy of the License at</font>
00007 <font class="comment"> *</font>
00008 <font class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</font>
00009 <font class="comment"> *</font>
00010 <font class="comment"> * Unless required by applicable law or agreed to in writing, software</font>
00011 <font class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</font>
00012 <font class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</font>
00013 <font class="comment"> * See the License for the specific language governing permissions and</font>
00014 <font class="comment"> * limitations under the License.</font>
00015 <font class="comment"> */</font>
00016 <font class="preprocessor">#if !defined(XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680)</font>
<a name="l00017"></a><a class="code" href="XalanXMLSerializerBase_8hpp.html#a0">00017</a> <font class="preprocessor"></font><font class="preprocessor">#define XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680</font>
00018 <font class="preprocessor"></font>
00019
00020
00021
00022 <font class="comment">// Base include file. Must be first.</font>
00023 <font class="preprocessor">#include "<a class="code" href="XMLSupportDefinitions_8hpp.html">xalanc/XMLSupport/XMLSupportDefinitions.hpp</a>"</font>
00024
00025
00026
00027 <font class="preprocessor">#include "<a class="code" href="XalanVector_8hpp.html">xalanc/Include/XalanVector.hpp</a>"</font>
00028
00029
00030
00031 <font class="preprocessor">#include "<a class="code" href="XalanDOMString_8hpp.html">xalanc/XalanDOM/XalanDOMString.hpp</a>"</font>
00032
00033
00034
00035 <font class="comment">// Base class header file.</font>
00036 <font class="preprocessor">#include "<a class="code" href="FormatterListener_8hpp.html">xalanc/PlatformSupport/FormatterListener.hpp</a>"</font>
00037
00038
00039
00040 XALAN_CPP_NAMESPACE_BEGIN
00041
00042
00043
<a name="l00044"></a><a class="code" href="XalanXMLSerializerBase_8hpp.html#a1">00044</a> <font class="keyword">class </font><a class="code" href="classXalanOutputStream.html">XalanOutputStream</a>;
00045
00046
00047
<a name="l00048"></a><a class="code" href="XalanXMLSerializerBase_8hpp.html#a2">00048</a> <a class="code" href="XSLTInputSource_8hpp.html#a3">XALAN_USING_XERCES</a>(MemoryManager)
00049
00050
00051
00056 <font class="keyword">class </font>XALAN_XMLSUPPORT_EXPORT <a class="code" href="classXalanXMLSerializerBase.html">XalanXMLSerializerBase</a> : <font class="keyword">public</font> <a class="code" href="classFormatterListener.html">FormatterListener</a>
00057 {
00058 <font class="keyword">public</font>:
00059
00063 <font class="keyword">static</font> <font class="keywordtype">void</font>
00064 initialize(MemoryManager&amp; theManager);
00065
00069 <font class="keyword">static</font> <font class="keywordtype">void</font>
00070 terminate();
00071
00072
00087 XalanXMLSerializerBase(
00088 MemoryManager&amp; theManager,
00089 eXMLVersion theXMLVersion,
00090 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; theEncoding,
00091 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; theDoctypeSystem,
00092 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; theDoctypePublic,
00093 <font class="keywordtype">bool</font> xmlDecl,
00094 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; theStandalone);
00095
00096 <font class="keyword">virtual</font>
00097 ~XalanXMLSerializerBase();
00098
00099 MemoryManagerType&amp;
00100 getMemoryManager()<font class="keyword"></font>
00101 <font class="keyword"> </font>{
00102 <font class="keywordflow">return</font> m_elemStack.getMemoryManager();
00103 }
00104
00105
00106 <font class="comment">// These methods are inherited from FormatterListener ...</font>
00107
00108 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00109 setDocumentLocator(<font class="keyword">const</font> Locator* <font class="keyword">const</font> locator);
00110
00111 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00112 startDocument();
00113
00114 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00115 startElement(
00116 <font class="keyword">const</font> XMLCh* <font class="keyword">const</font> name,
00117 AttributeList&amp; attrs) = 0;
00118
00119 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00120 endElement(<font class="keyword">const</font> XMLCh* <font class="keyword">const</font> name) = 0;
00121
00122 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00123 characters(
00124 <font class="keyword">const</font> XMLCh* <font class="keyword">const</font> chars,
00125 <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> length);
00126
00127 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00128 charactersRaw(
00129 <font class="keyword">const</font> XMLCh* <font class="keyword">const</font> chars,
00130 <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> length) = 0;
00131
00132 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00133 entityReference(<font class="keyword">const</font> XMLCh* <font class="keyword">const</font> name) = 0;
00134
00135 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00136 ignorableWhitespace(
00137 <font class="keyword">const</font> XMLCh* <font class="keyword">const</font> chars,
00138 <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> length);
00139
00140 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00141 processingInstruction(
00142 <font class="keyword">const</font> XMLCh* <font class="keyword">const</font> target,
00143 <font class="keyword">const</font> XMLCh* <font class="keyword">const</font> data);
00144
00145 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00146 resetDocument();
00147
00148 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00149 comment(<font class="keyword">const</font> XMLCh* <font class="keyword">const</font> data) = 0;
00150
00151 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00152 cdata(
00153 <font class="keyword">const</font> XMLCh* <font class="keyword">const</font> ch,
00154 <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> length);
00155
00156 <font class="keyword">virtual</font> <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;
00157 getDoctypeSystem() <font class="keyword">const</font>;
00158
00159 <font class="keyword">virtual</font> <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;
00160 getDoctypePublic() <font class="keyword">const</font>;
00161
00162 <font class="keyword">virtual</font> <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;
00163 getEncoding() <font class="keyword">const</font> = 0;
00164
00165 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;
00166 getVersion()<font class="keyword"> const</font>
00167 <font class="keyword"> </font>{
00168 <font class="keywordflow">return</font> m_version;
00169 }
00170
00171 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp;
00172 getStandalone()<font class="keyword"> const</font>
00173 <font class="keyword"> </font>{
00174 <font class="keywordflow">return</font> m_standalone;
00175 }
00176
00177 <font class="keywordtype">bool</font>
00178 getShouldWriteXMLHeader()<font class="keyword"> const</font>
00179 <font class="keyword"> </font>{
00180 <font class="keywordflow">return</font> m_shouldWriteXMLHeader;
00181 }
00182
00183 <font class="keywordtype">void</font>
00184 setShouldWriteXMLHeader(<font class="keywordtype">bool</font> b)<font class="keyword"></font>
00185 <font class="keyword"> </font>{
00186 m_shouldWriteXMLHeader = b;
00187 }
00188
00189 <font class="keyword">typedef</font> XalanVector&lt;bool&gt; BoolStackType;
00190
00191
00192 <font class="keyword">static</font> <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; s_1_0String;
00193
00194 <font class="keyword">static</font> <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; s_1_1String;
00195
00196
00197 <font class="keyword">class </font>XALAN_XMLSUPPORT_EXPORT UTF8
00198 {
00199 <font class="keyword">public</font>:
00200
00201 <font class="comment">// Static data members...</font>
00205 <font class="keyword">static</font> <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; s_encodingString;
00206
00210 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_doctypeHeaderStartString[];
00211
00212 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_doctypeHeaderStartStringLength;
00213
00217 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_doctypeHeaderPublicString[];
00218
00219 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_doctypeHeaderPublicStringLength;
00220
00224 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_doctypeHeaderSystemString[];
00225
00226 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_doctypeHeaderSystemStringLength;
00227
00231 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_xmlHeaderStartString[];
00232
00233 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xmlHeaderStartStringLength;
00234
00238 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_xmlHeaderEncodingString[];
00239
00240 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xmlHeaderEncodingStringLength;
00241
00245 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_xmlHeaderStandaloneString[];
00246
00247 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xmlHeaderStandaloneStringLength;
00248
00252 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_xmlHeaderEndString[];
00253
00254 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xmlHeaderEndStringLength;
00255
00259 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_defaultVersionString[];
00260
00261 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_defaultVersionStringLength;
00262
00266 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_xhtmlDocTypeString[];
00267
00268 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xhtmlDocTypeStringLength;
00269
00273 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_cdataOpenString[];
00274
00275 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_cdataOpenStringLength;
00276
00280 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_cdataCloseString[];
00281
00282 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_cdataCloseStringLength;
00283
00287 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_lessThanEntityString[];
00288
00289 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_lessThanEntityStringLength;
00290
00294 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_greaterThanEntityString[];
00295
00296 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_greaterThanEntityStringLength;
00297
00301 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_ampersandEntityString[];
00302
00303 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_ampersandEntityStringLength;
00304
00308 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_quoteEntityString[];
00309
00310 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_quoteEntityStringLength;
00311 };
00312
00313 <font class="keyword">class </font>XALAN_XMLSUPPORT_EXPORT UTF16
00314 {
00315 <font class="keyword">public</font>:
00316
00320 <font class="keyword">static</font> <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; s_encodingString;
00321
00325 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_doctypeHeaderStartString[];
00326
00327 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_doctypeHeaderStartStringLength;
00328
00332 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_doctypeHeaderPublicString[];
00333
00334 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_doctypeHeaderPublicStringLength;
00335
00339 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_doctypeHeaderSystemString[];
00340
00341 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_doctypeHeaderSystemStringLength;
00342
00346 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_xmlHeaderStartString[];
00347
00348 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xmlHeaderStartStringLength;
00349
00353 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_xmlHeaderEncodingString[];
00354
00355 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xmlHeaderEncodingStringLength;
00356
00360 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_xmlHeaderStandaloneString[];
00361
00362 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xmlHeaderStandaloneStringLength;
00363
00367 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_xmlHeaderEndString[];
00368
00369 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xmlHeaderEndStringLength;
00370
00374 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_defaultVersionString[];
00375
00376 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_defaultVersionStringLength;
00377
00381 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_xhtmlDocTypeString[];
00382
00383 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xhtmlDocTypeStringLength;
00384
00388 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_cdataOpenString[];
00389
00390 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_cdataOpenStringLength;
00391
00395 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_cdataCloseString[];
00396
00397 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_cdataCloseStringLength;
00398
00402 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_lessThanEntityString[];
00403
00404 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_lessThanEntityStringLength;
00405
00409 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_greaterThanEntityString[];
00410
00411 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_greaterThanEntityStringLength;
00412
00416 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_ampersandEntityString[];
00417
00418 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_ampersandEntityStringLength;
00419
00423 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_quoteEntityString[];
00424
00425 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_quoteEntityStringLength;
00426 };
00427
00428 <font class="keyword">enum</font>
00429 {
00430 eBufferSize = 512 <font class="comment">// The size of the buffer</font>
00431 };
00432
00433 <font class="keyword">class </font>XALAN_XMLSUPPORT_EXPORT CharFunctor1_0
00434 {
00435 <font class="keyword">public</font>:
00436
00437 <font class="keywordtype">bool</font>
00438 attribute(XalanDOMChar theChar)<font class="keyword"> const</font>
00439 <font class="keyword"> </font>{
00440 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial ?
00441 <font class="keyword">false</font> :
00442 s_specialChars[theChar] &gt; eNone;
00443 }
00444
00445 <font class="keywordtype">bool</font>
00446 content(XalanDOMChar theChar)<font class="keyword"> const</font>
00447 <font class="keyword"> </font>{
00448 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial ?
00449 <font class="keyword">false</font> :
00450 s_specialChars[theChar] &gt; eAttr;
00451 }
00452
00453 <font class="keywordtype">bool</font>
00454 range(XalanDOMChar theChar)<font class="keyword"> const</font>
00455 <font class="keyword"> </font>{
00456 assert(theChar &gt; 0);
00457
00458 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial;
00459 }
00460
00461 <font class="keywordtype">bool</font>
00462 isForbidden(XalanDOMChar theChar)<font class="keyword"> const</font>
00463 <font class="keyword"> </font>{
00464 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial ?
00465 <font class="keyword">false</font> :
00466 s_specialChars[theChar] == eForb;
00467 }
00468
00469 <font class="keywordtype">bool</font>
00470 isCharRefForbidden(XalanDOMChar theChar)<font class="keyword"> const</font>
00471 <font class="keyword"> </font>{
00472 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial ?
00473 <font class="keyword">false</font> :
00474 s_specialChars[theChar] == eForb;
00475 }
00476
00477
00478 <font class="keyword">private</font>:
00479 <font class="keyword">static</font> <font class="keyword">const</font> size_t s_lastSpecial;
00480
00481 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_specialChars[];
00482 };
00483
00484
00485
00486 <font class="keyword">class </font>XALAN_XMLSUPPORT_EXPORT CharFunctor1_1
00487 {
00488 <font class="keyword">public</font>:
00489
00490 <font class="keywordtype">bool</font>
00491 attribute(XalanDOMChar theChar)<font class="keyword"> const</font>
00492 <font class="keyword"> </font>{
00493 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial ?
00494 <font class="keyword">false</font> :
00495 s_specialChars[theChar] &gt; eNone;
00496 }
00497
00498 <font class="keywordtype">bool</font>
00499 content(XalanDOMChar theChar)<font class="keyword"> const</font>
00500 <font class="keyword"> </font>{
00501 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial ?
00502 <font class="keyword">false</font> :
00503 s_specialChars[theChar] &gt; eAttr;
00504 }
00505
00506 <font class="keywordtype">bool</font>
00507 range(XalanDOMChar theChar)<font class="keyword"> const</font>
00508 <font class="keyword"> </font>{
00509 assert(theChar &gt; 0);
00510
00511 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial;
00512 }
00513
00514 <font class="keywordtype">bool</font>
00515 isForbidden(XalanDOMChar theChar)<font class="keyword"> const</font>
00516 <font class="keyword"> </font>{
00517 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial ?
00518 <font class="keyword">false</font> :
00519 s_specialChars[theChar] == eForb;
00520 }
00521
00522 <font class="keywordtype">bool</font>
00523 isCharRefForbidden(XalanDOMChar theChar)<font class="keyword"> const</font>
00524 <font class="keyword"> </font>{
00525 <font class="keywordflow">return</font> theChar &gt; s_lastSpecial ?
00526 <font class="keyword">false</font> :
00527 s_specialChars[theChar] == eCRFb;
00528 }
00529
00530 <font class="keyword">private</font>:
00531 <font class="keyword">static</font> <font class="keyword">const</font> size_t s_lastSpecial;
00532
00533 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> s_specialChars[];
00534
00535 };
00536
00537
00538
00539
00540 <font class="keyword">enum</font>
00541 {
00542 eNone = 0u,
00543 eAttr = 1u, <font class="comment">// A flag to indicate a value in s_specialChars applies to attributes</font>
00544 eBoth = 2u, <font class="comment">// A flag to indicate a value in s_specialChars applies to both content and attributes</font>
00545 eForb = 4u, <font class="comment">// A flag to indicate a forbidden value in s_specialChars </font>
00546 <font class="comment">// XML1.1 put a requirement to output chars #x1...#x1F and #x7F...#x9F as charRefs only</font>
00547 <font class="comment">// In the comments , PI and CDATA usage of charRefs is forbidden, so we will report an error in </font>
00548 eCRFb = 5u <font class="comment">// that case. For the elemets and attributes is should work the same as eBoth</font>
00549 };
00550
00551
00552
00553 <font class="keyword">protected</font>:
00554
00555 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00556 writeXMLHeader() = 0;
00557
00558 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00559 flushBuffer() = 0;
00560
00561 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00562 writeDoctypeDecl(<font class="keyword">const</font> XalanDOMChar* name) = 0;
00563
00564 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00565 writeProcessingInstruction(
00566 <font class="keyword">const</font> XMLCh* target,
00567 <font class="keyword">const</font> XMLCh* data) = 0;
00568
00569 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00570 writeCharacters(
00571 <font class="keyword">const</font> XMLCh* chars,
00572 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> length) = 0;
00573
00574 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00575 writeCDATA(
00576 <font class="keyword">const</font> XMLCh* chars,
00577 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> length) = 0;
00578
00579 <font class="keyword">virtual</font> <font class="keywordtype">void</font>
00580 outputNewline() = 0;
00581
00590 <font class="keywordtype">bool</font>
00591 markParentForChildren()<font class="keyword"></font>
00592 <font class="keyword"> </font>{
00593 <font class="keywordflow">if</font>(!m_elemStack.empty())
00594 {
00595 <font class="comment">// See if the parent element has already been flagged as having children.</font>
00596 <font class="keywordflow">if</font>(<font class="keyword">false</font> == m_elemStack.back())
00597 {
00598 m_elemStack.back() = <font class="keyword">true</font>;
00599
00600 <font class="keywordflow">return</font> <font class="keyword">true</font>;
00601 }
00602 }
00603
00604 <font class="keywordflow">return</font> <font class="keyword">false</font>;
00605 }
00606
00611 <font class="keywordtype">bool</font>
00612 getNeedToOutputDoctypeDecl()<font class="keyword"> const</font>
00613 <font class="keyword"> </font>{
00614 <font class="keywordflow">return</font> m_needToOutputDoctypeDecl;
00615 }
00616
00620 <font class="keywordtype">void</font>
00621 openElementForChildren()<font class="keyword"></font>
00622 <font class="keyword"> </font>{
00623 m_elemStack.push_back(<font class="keyword">false</font>);
00624 }
00625
00626 <font class="keywordtype">bool</font>
00627 outsideDocumentElement()<font class="keyword"> const</font>
00628 <font class="keyword"> </font>{
00629 <font class="keywordflow">return</font> m_elemStack.empty();
00630 }
00631
00637 <font class="keywordtype">bool</font>
00638 childNodesWereAdded()<font class="keyword"></font>
00639 <font class="keyword"> </font>{
00640 <font class="keywordtype">bool</font> fResult = <font class="keyword">false</font>;
00641
00642 <font class="keywordflow">if</font> (m_elemStack.empty() == <font class="keyword">false</font>)
00643 {
00644 fResult = m_elemStack.back();
00645
00646 m_elemStack.pop_back();
00647 }
00648
00649 <font class="keywordflow">return</font> fResult;
00650 }
00651
00652 <font class="keywordtype">void</font>
00653 generateDoctypeDecl(<font class="keyword">const</font> XalanDOMChar* name)<font class="keyword"></font>
00654 <font class="keyword"> </font>{
00655 <font class="keywordflow">if</font>(<font class="keyword">true</font> == m_needToOutputDoctypeDecl)
00656 {
00657 assert(m_doctypeSystem.empty() == <font class="keyword">false</font>);
00658
00659 writeDoctypeDecl(name);
00660
00661 m_needToOutputDoctypeDecl = <font class="keyword">false</font>;
00662 }
00663 }
00664
00668 <font class="keywordtype">bool</font> m_nextIsRaw;
00669
00673 <font class="keywordtype">bool</font> m_spaceBeforeClose;
00674
00678 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a> m_doctypeSystem;
00679
00683 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a> m_doctypePublic;
00684
00688 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; m_version;
00689
00693 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a> m_standalone;
00694
00695 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a> m_encoding;
00696
00697 <font class="keyword">static</font> <font class="keywordtype">bool</font>
00698 isUTF16HighSurrogate(XalanDOMChar theChar)<font class="keyword"></font>
00699 <font class="keyword"> </font>{
00700 <font class="keywordflow">return</font> 0xD800u &lt;= theChar &amp;&amp; theChar &lt;= 0xDBFFu ? <font class="keyword">true</font> : <font class="keyword">false</font>;
00701 }
00702
00703 <font class="keyword">static</font> <font class="keywordtype">bool</font>
00704 isUTF16LowSurrogate(XalanDOMChar theChar)<font class="keyword"></font>
00705 <font class="keyword"> </font>{
00706 <font class="keywordflow">return</font> 0xDC00u &lt;= theChar &amp;&amp; theChar &lt;= 0xDFFFu ? <font class="keyword">true</font> : <font class="keyword">false</font>;
00707 }
00708
00709 <font class="keyword">static</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font>
00710 decodeUTF16SurrogatePair(
00711 XalanDOMChar theHighSurrogate,
00712 XalanDOMChar theLowSurrogate,
00713 MemoryManager&amp; theManager);
00714
00720 <font class="keyword">static</font> <font class="keywordtype">void</font>
00721 throwInvalidUTF16SurrogateException(
00722 XalanDOMChar ch,
00723 MemoryManager&amp; theManager);
00724
00731 <font class="keyword">static</font> <font class="keywordtype">void</font>
00732 throwInvalidUTF16SurrogateException(
00733 XalanDOMChar ch,
00734 XalanDOMChar next,
00735 MemoryManager&amp; theManager);
00736
00743 <font class="keyword">static</font> <font class="keywordtype">void</font>
00744 throwInvalidCharacterException(
00745 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> ch,
00746 MemoryManager&amp; theManager);
00747
00748
00755 <font class="keyword">static</font> <font class="keywordtype">void</font>
00756 throwInvalidXMLCharacterException(
00757 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> ch,
00758 <font class="keyword">const</font> <a class="code" href="classXalanDOMString.html">XalanDOMString</a>&amp; theXMLversion,
00759 MemoryManager&amp; theManager);
00760 <font class="keyword">private</font>:
00761
00762 <font class="comment">// These are not implemented.</font>
00763 XalanXMLSerializerBase(<font class="keyword">const</font> <a class="code" href="classXalanXMLSerializerBase.html">XalanXMLSerializerBase</a>&amp;);
00764
00765 <a class="code" href="classXalanXMLSerializerBase.html">XalanXMLSerializerBase</a>&amp;
00766 operator=(<font class="keyword">const</font> <a class="code" href="classXalanXMLSerializerBase.html">XalanXMLSerializerBase</a>&amp;);
00767
00768 <font class="keywordtype">bool</font>
00769 <a class="code" href="ElemAttributeSet_8hpp.html#a1">operator==</a>(<font class="keyword">const</font> <a class="code" href="classXalanXMLSerializerBase.html">XalanXMLSerializerBase</a>&amp;) <font class="keyword">const</font>;
00770
00771 <font class="comment">// Data members...</font>
00777 <font class="keywordtype">bool</font> m_needToOutputDoctypeDecl;
00778
00782 <font class="keywordtype">bool</font> m_shouldWriteXMLHeader;
00783
00788 BoolStackType m_elemStack;
00789
00793 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMChar s_xhtmlDocTypeString[];
00794
00795 <font class="keyword">static</font> <font class="keyword">const</font> XalanDOMString::size_type s_xhtmlDocTypeStringLength;
00796 };
00797
00798
00799
00800 XALAN_CPP_NAMESPACE_END
00801
00802
00803
00804 <font class="preprocessor">#endif // XALANXMLSERIALIZERBASE_HEADER_GUARD_1357924680</font>
</font></pre></div><p align="center"><a href="diagramnotes.html">Interpreting class diagrams</a></p>
<p><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">
<i><A href="http://www.stack.nl/~dimitri/doxygen/">Doxygen</A> and
<A href="http://www.research.att.com/sw/tools/graphviz/">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="820"><TR><TD bgcolor="#0086b2"><IMG height="1" src="../resources/dot.gif" width="1" alt="dot"></TD></TR></TABLE>
<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.10</B><BR>
Copyright &copy; 1999-2004 The Apache Software Foundation. All Rights Reserved.</i></p>
</TD>
</TR>
<TR>
<TD WIDTH="100%">
<P ALIGN="CENTER"><IMG SRC="ApacheLogo.jpg" WIDTH="387" HEIGHT="100" ALIGN="BOTTOM" BORDER="0" ALT="Apache Logo">
</TD>
</TR>
</TABLE>