XQuilla/docs/simple-api/XMLFormatter_8hpp-source.html
2020-02-17 22:19:08 +01:00

387 lines
25 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>XQilla Simple API Documentation</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<a style="float:right;" href="http://sourceforge.net/projects/xqilla"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=152021&amp;type=2" border="0" alt="SourceForge.net Logo" /></a>
<!-- Generated by Doxygen 1.3.9.1 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="examples.html">Examples</a></div>
<div class="nav">
<a class="el" href="dir_000007.html">xerces-c-3.0.1</a>&nbsp;/&nbsp;<a class="el" href="dir_000008.html">src</a>&nbsp;/&nbsp;<a class="el" href="dir_000009.html">xercesc</a>&nbsp;/&nbsp;<a class="el" href="dir_000014.html">framework</a></div>
<h1>XMLFormatter.hpp</h1><a href="XMLFormatter_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
00002 <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</span>
00003 <span class="comment"> * contributor license agreements. See the NOTICE file distributed with</span>
00004 <span class="comment"> * this work for additional information regarding copyright ownership.</span>
00005 <span class="comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</span>
00006 <span class="comment"> * (the "License"); you may not use this file except in compliance with</span>
00007 <span class="comment"> * the License. You may obtain a copy of the License at</span>
00008 <span class="comment"> *</span>
00009 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span>
00010 <span class="comment"> *</span>
00011 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
00012 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
00013 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
00014 <span class="comment"> * See the License for the specific language governing permissions and</span>
00015 <span class="comment"> * limitations under the License.</span>
00016 <span class="comment"> */</span>
00017
00018 <span class="comment">/*</span>
00019 <span class="comment"> * $Id: XMLFormatter.hpp 698579 2008-09-24 14:13:08Z borisk $</span>
00020 <span class="comment"> */</span>
00021
00022 <span class="preprocessor">#if !defined(XERCESC_INCLUDE_GUARD_XMLFORMATTER_HPP)</span>
<a name="l00023"></a><a class="code" href="XMLFormatter_8hpp.html#a0">00023</a> <span class="preprocessor"></span><span class="preprocessor">#define XERCESC_INCLUDE_GUARD_XMLFORMATTER_HPP</span>
00024 <span class="preprocessor"></span>
00025 <span class="preprocessor">#include &lt;<a class="code" href="PlatformUtils_8hpp.html">xercesc/util/PlatformUtils.hpp</a>&gt;</span>
00026
00027 XERCES_CPP_NAMESPACE_BEGIN
00028
00029 <span class="keyword">class </span>XMLFormatTarget;
00030 <span class="keyword">class </span>XMLTranscoder;
00031
<a name="l00041"></a><a class="code" href="classxercesc_1_1XMLFormatter.html">00041</a> <span class="keyword">class </span>XMLPARSER_EXPORT XMLFormatter : <span class="keyword">public</span> <a class="code" href="classxercesc_1_1XMemory.html">XMemory</a>
00042 {
00043 <span class="keyword">public</span>:
00044 <span class="comment">// -----------------------------------------------------------------------</span>
00045 <span class="comment">// Class types</span>
00046 <span class="comment">// -----------------------------------------------------------------------</span>
<a name="l00124"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z145_0">00124</a> <span class="comment"></span> <span class="keyword">enum</span> EscapeFlags
00125 {
00126 NoEscapes
00127 , StdEscapes
00128 , AttrEscapes
00129 , CharEscapes
00130
00131 <span class="comment">// Special values, don't use directly</span>
00132 , EscapeFlags_Count
00133 , DefaultEscape = 999
00134 };
00135
<a name="l00152"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z145_1">00152</a> <span class="keyword">enum</span> UnRepFlags
00153 {
00154 UnRep_Fail
00155 , UnRep_CharRef
00156 , UnRep_Replace
00157
00158 , DefaultUnRep = 999
00159 };
00161
00162
00163 <span class="comment">// -----------------------------------------------------------------------</span>
00164 <span class="comment">// Constructors and Destructor</span>
00165 <span class="comment">// -----------------------------------------------------------------------</span>
00177 <span class="comment"></span> XMLFormatter
00178 (
00179 <span class="keyword">const</span> XMLCh* <span class="keyword">const</span> outEncoding
00180 , <span class="keyword">const</span> XMLCh* <span class="keyword">const</span> docVersion
00181 , <a class="code" href="classxercesc_1_1XMLFormatTarget.html">XMLFormatTarget</a>* <span class="keyword">const</span> target
00182 , <span class="keyword">const</span> EscapeFlags escapeFlags = NoEscapes
00183 , <span class="keyword">const</span> UnRepFlags unrepFlags = UnRep_Fail
00184 , <a class="code" href="classxercesc_1_1MemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager = XMLPlatformUtils::fgMemoryManager
00185 );
00186
00187 XMLFormatter
00188 (
00189 <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> outEncoding
00190 , <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> docVersion
00191 , <a class="code" href="classxercesc_1_1XMLFormatTarget.html">XMLFormatTarget</a>* <span class="keyword">const</span> target
00192 , <span class="keyword">const</span> EscapeFlags escapeFlags = NoEscapes
00193 , <span class="keyword">const</span> UnRepFlags unrepFlags = UnRep_Fail
00194 , <a class="code" href="classxercesc_1_1MemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager = XMLPlatformUtils::fgMemoryManager
00195 );
00196
00197 XMLFormatter
00198 (
00199 <span class="keyword">const</span> XMLCh* <span class="keyword">const</span> outEncoding
00200 , <a class="code" href="classxercesc_1_1XMLFormatTarget.html">XMLFormatTarget</a>* <span class="keyword">const</span> target
00201 , <span class="keyword">const</span> EscapeFlags escapeFlags = NoEscapes
00202 , <span class="keyword">const</span> UnRepFlags unrepFlags = UnRep_Fail
00203 , <a class="code" href="classxercesc_1_1MemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager = XMLPlatformUtils::fgMemoryManager
00204 );
00205
00206 XMLFormatter
00207 (
00208 <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> outEncoding
00209 , <a class="code" href="classxercesc_1_1XMLFormatTarget.html">XMLFormatTarget</a>* <span class="keyword">const</span> target
00210 , <span class="keyword">const</span> EscapeFlags escapeFlags = NoEscapes
00211 , <span class="keyword">const</span> UnRepFlags unrepFlags = UnRep_Fail
00212 , <a class="code" href="classxercesc_1_1MemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager = XMLPlatformUtils::fgMemoryManager
00213 );
00214
00215 ~XMLFormatter();
00217
00218
00219 <span class="comment">// -----------------------------------------------------------------------</span>
00220 <span class="comment">// Formatting methods</span>
00221 <span class="comment">// -----------------------------------------------------------------------</span>
00231 <span class="comment"></span> <span class="keywordtype">void</span> formatBuf
00232 (
00233 <span class="keyword">const</span> XMLCh* <span class="keyword">const</span> toFormat
00234 , <span class="keyword">const</span> XMLSize_t count
00235 , <span class="keyword">const</span> EscapeFlags escapeFlags = DefaultEscape
00236 , <span class="keyword">const</span> UnRepFlags unrepFlags = DefaultUnRep
00237 );
00238
00242 XMLFormatter&amp; <span class="keyword">operator</span>&lt;&lt;
00243 (
00244 <span class="keyword">const</span> XMLCh* <span class="keyword">const</span> toFormat
00245 );
00246
00247 XMLFormatter&amp; <span class="keyword">operator</span>&lt;&lt;
00248 (
00249 <span class="keyword">const</span> XMLCh toFormat
00250 );
00251
00252 <span class="keywordtype">void</span> writeBOM(<span class="keyword">const</span> XMLByte* <span class="keyword">const</span> toFormat
00253 , <span class="keyword">const</span> XMLSize_t count);
00254
00256
00257 <span class="comment">// -----------------------------------------------------------------------</span>
00258 <span class="comment">// Getter methods</span>
00259 <span class="comment">// -----------------------------------------------------------------------</span>
00266 <span class="comment"></span> <span class="keyword">const</span> XMLCh* getEncodingName() <span class="keyword">const</span>;
00267
00271 <span class="keyword">inline</span> <span class="keyword">const</span> XMLTranscoder* getTranscoder() <span class="keyword">const</span>;
00272
00276 <span class="keyword">inline</span> XMLTranscoder* getTranscoder();
00277
00279
00280 <span class="comment">// -----------------------------------------------------------------------</span>
00281 <span class="comment">// Setter methods</span>
00282 <span class="comment">// -----------------------------------------------------------------------</span>
00288 <span class="comment"></span> <span class="keywordtype">void</span> setEscapeFlags
00289 (
00290 <span class="keyword">const</span> EscapeFlags newFlags
00291 );
00292
00296 <span class="keywordtype">void</span> setUnRepFlags
00297 (
00298 <span class="keyword">const</span> UnRepFlags newFlags
00299 );
00300
00305 XMLFormatter&amp; <span class="keyword">operator</span>&lt;&lt;
00306 (
00307 <span class="keyword">const</span> EscapeFlags newFlags
00308 );
00309
00314 XMLFormatter&amp; <span class="keyword">operator</span>&lt;&lt;
00315 (
00316 <span class="keyword">const</span> UnRepFlags newFlags
00317 );
00319
00320 <span class="comment">// -----------------------------------------------------------------------</span>
00321 <span class="comment">// Getter methods</span>
00322 <span class="comment">// -----------------------------------------------------------------------</span>
00328 <span class="comment"></span> EscapeFlags getEscapeFlags() <span class="keyword">const</span>;
00329
00333 UnRepFlags getUnRepFlags() <span class="keyword">const</span>;
00335
00336 <span class="keyword">private</span> :
00337 <span class="comment">// -----------------------------------------------------------------------</span>
00338 <span class="comment">// Unimplemented constructors and operators</span>
00339 <span class="comment">// -----------------------------------------------------------------------</span>
00340 XMLFormatter();
00341 XMLFormatter(<span class="keyword">const</span> XMLFormatter&amp;);
00342 XMLFormatter&amp; operator=(<span class="keyword">const</span> XMLFormatter&amp;);
00343
00344
00345 <span class="comment">// -----------------------------------------------------------------------</span>
00346 <span class="comment">// Private class constants</span>
00347 <span class="comment">// -----------------------------------------------------------------------</span>
00348 <span class="keyword">enum</span> Constants
00349 {
00350 kTmpBufSize = 16 * 1024
00351 };
00352
00353
00354 <span class="comment">// -----------------------------------------------------------------------</span>
00355 <span class="comment">// Private helper methods</span>
00356 <span class="comment">// -----------------------------------------------------------------------</span>
00357 <span class="keyword">const</span> XMLByte* getCharRef(XMLSize_t &amp;count,
00358 XMLByte* &amp;ref,
00359 <span class="keyword">const</span> XMLCh * stdRef);
00360
00361 <span class="keywordtype">void</span> writeCharRef(<span class="keyword">const</span> XMLCh &amp;toWrite);
00362 <span class="keywordtype">void</span> writeCharRef(XMLSize_t toWrite);
00363
00364 <span class="keywordtype">bool</span> inEscapeList(<span class="keyword">const</span> XMLFormatter::EscapeFlags escStyle
00365 , <span class="keyword">const</span> XMLCh toCheck);
00366
00367
00368 XMLSize_t handleUnEscapedChars(<span class="keyword">const</span> XMLCh * srcPtr,
00369 <span class="keyword">const</span> XMLSize_t count,
00370 <span class="keyword">const</span> UnRepFlags unrepFlags);
00371
00372 <span class="keywordtype">void</span> specialFormat
00373 (
00374 <span class="keyword">const</span> XMLCh* <span class="keyword">const</span> toFormat
00375 , <span class="keyword">const</span> XMLSize_t count
00376 , <span class="keyword">const</span> EscapeFlags escapeFlags
00377 );
00378
00379
00380 <span class="comment">// -----------------------------------------------------------------------</span>
00381 <span class="comment">// Private, non-virtual methods</span>
00382 <span class="comment">//</span>
00383 <span class="comment">// fEscapeFlags</span>
00384 <span class="comment">// The escape flags we were told to use in formatting. These are</span>
00385 <span class="comment">// defaults set in the ctor, which can be overridden on a particular</span>
00386 <span class="comment">// call.</span>
00387 <span class="comment">//</span>
00388 <span class="comment">// fOutEncoding</span>
00389 <span class="comment">// This the name of the output encoding. Saved mainly for meaningful</span>
00390 <span class="comment">// error messages.</span>
00391 <span class="comment">//</span>
00392 <span class="comment">// fTarget</span>
00393 <span class="comment">// This is the target object for the formatting operation.</span>
00394 <span class="comment">//</span>
00395 <span class="comment">// fUnRepFlags</span>
00396 <span class="comment">// The unrepresentable flags that indicate how to react when a</span>
00397 <span class="comment">// character cannot be represented in the target encoding.</span>
00398 <span class="comment">//</span>
00399 <span class="comment">// fXCoder</span>
00400 <span class="comment">// This the transcoder that we will use. It is created using the</span>
00401 <span class="comment">// encoding name we were told to use.</span>
00402 <span class="comment">//</span>
00403 <span class="comment">// fTmpBuf</span>
00404 <span class="comment">// An output buffer that we use to transcode chars into before we</span>
00405 <span class="comment">// send them off to be output.</span>
00406 <span class="comment">//</span>
00407 <span class="comment">// fAposRef</span>
00408 <span class="comment">// fAmpRef</span>
00409 <span class="comment">// fGTRef</span>
00410 <span class="comment">// fLTRef</span>
00411 <span class="comment">// fQuoteRef</span>
00412 <span class="comment">// These are character refs for the standard char refs, in the</span>
00413 <span class="comment">// output encoding. They are faulted in as required, by transcoding</span>
00414 <span class="comment">// them from fixed Unicode versions.</span>
00415 <span class="comment">//</span>
00416 <span class="comment">// fIsXML11</span>
00417 <span class="comment">// for performance reason, we do not store the actual version string</span>
00418 <span class="comment">// and do the string comparison again and again.</span>
00419 <span class="comment">//</span>
00420 <span class="comment">// -----------------------------------------------------------------------</span>
00421 EscapeFlags fEscapeFlags;
00422 XMLCh* fOutEncoding;
00423 XMLFormatTarget* fTarget;
00424 UnRepFlags fUnRepFlags;
00425 XMLTranscoder* fXCoder;
00426 XMLByte fTmpBuf[kTmpBufSize + 4];
00427 XMLByte* fAposRef;
00428 XMLSize_t fAposLen;
00429 XMLByte* fAmpRef;
00430 XMLSize_t fAmpLen;
00431 XMLByte* fGTRef;
00432 XMLSize_t fGTLen;
00433 XMLByte* fLTRef;
00434 XMLSize_t fLTLen;
00435 XMLByte* fQuoteRef;
00436 XMLSize_t fQuoteLen;
00437 <span class="keywordtype">bool</span> fIsXML11;
00438 MemoryManager* fMemoryManager;
00439 };
00440
00441
<a name="l00442"></a><a class="code" href="classxercesc_1_1XMLFormatTarget.html">00442</a> <span class="keyword">class </span>XMLPARSER_EXPORT XMLFormatTarget : <span class="keyword">public</span> <a class="code" href="classxercesc_1_1XMemory.html">XMemory</a>
00443 {
00444 <span class="keyword">public</span>:
00445 <span class="comment">// -----------------------------------------------------------------------</span>
00446 <span class="comment">// Constructors and Destructor</span>
00447 <span class="comment">// -----------------------------------------------------------------------</span>
<a name="l00448"></a><a class="code" href="classxercesc_1_1XMLFormatTarget.html#a0">00448</a> <span class="keyword">virtual</span> ~XMLFormatTarget() {}
00449
00450
00451 <span class="comment">// -----------------------------------------------------------------------</span>
00452 <span class="comment">// Virtual interface</span>
00453 <span class="comment">// -----------------------------------------------------------------------</span>
00454 <span class="keyword">virtual</span> <span class="keywordtype">void</span> writeChars
00455 (
00456 <span class="keyword">const</span> XMLByte* <span class="keyword">const</span> toWrite
00457 , <span class="keyword">const</span> XMLSize_t count
00458 , XMLFormatter* <span class="keyword">const</span> formatter
00459 ) = 0;
00460
<a name="l00461"></a><a class="code" href="classxercesc_1_1XMLFormatTarget.html#a2">00461</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> flush() {};
00462
00463
00464 <span class="keyword">protected</span> :
00465 <span class="comment">// -----------------------------------------------------------------------</span>
00466 <span class="comment">// Hidden constructors and operators</span>
00467 <span class="comment">// -----------------------------------------------------------------------</span>
<a name="l00468"></a><a class="code" href="classxercesc_1_1XMLFormatTarget.html#b0">00468</a> XMLFormatTarget() {};
00469
00470 <span class="keyword">private</span>:
00471 <span class="comment">// -----------------------------------------------------------------------</span>
00472 <span class="comment">// Unimplemented constructors and operators</span>
00473 <span class="comment">// -----------------------------------------------------------------------</span>
00474 XMLFormatTarget(<span class="keyword">const</span> XMLFormatTarget&amp;);
00475 XMLFormatTarget&amp; operator=(<span class="keyword">const</span> XMLFormatTarget&amp;);
00476 };
00477
00478
00479 <span class="comment">// ---------------------------------------------------------------------------</span>
00480 <span class="comment">// XMLFormatter: Getter methods</span>
00481 <span class="comment">// ---------------------------------------------------------------------------</span>
<a name="l00482"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z151_0">00482</a> <span class="keyword">inline</span> <span class="keyword">const</span> XMLCh* XMLFormatter::getEncodingName()<span class="keyword"> const</span>
00483 <span class="keyword"></span>{
00484 <span class="keywordflow">return</span> fOutEncoding;
00485 }
00486
<a name="l00487"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z151_1">00487</a> <span class="keyword">inline</span> <span class="keyword">const</span> XMLTranscoder* XMLFormatter::getTranscoder()<span class="keyword"> const</span>
00488 <span class="keyword"></span>{
00489 <span class="keywordflow">return</span> fXCoder;
00490 }
00491
<a name="l00492"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z151_2">00492</a> <span class="keyword">inline</span> XMLTranscoder* XMLFormatter::getTranscoder()
00493 {
00494 <span class="keywordflow">return</span> fXCoder;
00495 }
00496
00497 <span class="comment">// ---------------------------------------------------------------------------</span>
00498 <span class="comment">// XMLFormatter: Setter methods</span>
00499 <span class="comment">// ---------------------------------------------------------------------------</span>
<a name="l00500"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z153_0">00500</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> XMLFormatter::setEscapeFlags(<span class="keyword">const</span> EscapeFlags newFlags)
00501 {
00502 fEscapeFlags = newFlags;
00503 }
00504
<a name="l00505"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z153_1">00505</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> XMLFormatter::setUnRepFlags(<span class="keyword">const</span> UnRepFlags newFlags)
00506 {
00507 fUnRepFlags = newFlags;
00508 }
00509
00510
<a name="l00511"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z153_2">00511</a> <span class="keyword">inline</span> XMLFormatter&amp; XMLFormatter::operator&lt;&lt;(<span class="keyword">const</span> EscapeFlags newFlags)
00512 {
00513 fEscapeFlags = newFlags;
00514 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00515 }
00516
<a name="l00517"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z153_3">00517</a> <span class="keyword">inline</span> XMLFormatter&amp; XMLFormatter::operator&lt;&lt;(<span class="keyword">const</span> UnRepFlags newFlags)
00518 {
00519 fUnRepFlags = newFlags;
00520 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00521 }
00522
00523 <span class="comment">// ---------------------------------------------------------------------------</span>
00524 <span class="comment">// XMLFormatter: Getter methods</span>
00525 <span class="comment">// ---------------------------------------------------------------------------</span>
<a name="l00526"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z155_0">00526</a> <span class="keyword">inline</span> XMLFormatter::EscapeFlags XMLFormatter::getEscapeFlags()<span class="keyword"> const</span>
00527 <span class="keyword"></span>{
00528 <span class="keywordflow">return</span> fEscapeFlags;
00529 }
00530
<a name="l00531"></a><a class="code" href="classxercesc_1_1XMLFormatter.html#z155_1">00531</a> <span class="keyword">inline</span> XMLFormatter::UnRepFlags XMLFormatter::getUnRepFlags()<span class="keyword"> const</span>
00532 <span class="keyword"></span>{
00533 <span class="keywordflow">return</span> fUnRepFlags;
00534 }
00535
00536 XERCES_CPP_NAMESPACE_END
00537
00538 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Sep 25 06:55:26 2009 for XQilla Simple API by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address>
</body>
</html>