Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > ee493823148ed6fb895c827f4e36eb1c > files > 682

xerces-c-doc-2.7.0-7mdv2008.1.x86_64.rpm

<HTML><HEAD><SCRIPT language="JavaScript" src="../resources/script.js" type="text/javascript"></SCRIPT><TITLE>Xerces-C++: TransService.hpp Source File</TITLE><link href="XercesApi.css" rel="stylesheet" type="text/css"></HEAD><BODY alink="#ff0000" bgcolor="#ffffff" leftmargin="4" link="#0000ff" marginheight="4" marginwidth="4" text="#000000" topmargin="4" vlink="#0000aa"><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" height="60" rowspan="3" valign="top" width="135"><IMG border="0" height="60" hspace="0" src="../resources/logo.gif" vspace="0" width="135"></TD><TD align="left" colspan="4" height="5" valign="top" width="456"><IMG border="0" height="5" hspace="0" src="../resources/line.gif" vspace="0" width="456"></TD><TD align="left" height="60" rowspan="3" valign="top" width="29"><IMG border="0" height="60" hspace="0" src="../resources/right.gif" vspace="0" width="29"></TD></TR><TR><TD align="left" bgcolor="#0086b2" colspan="4" height="35" valign="top" width="456"><IMG alt="" border="0" height="35" hspace="0" src="../graphics/api-header.jpg" vspace="0" width="456"></TD></TR><TR><TD align="left" height="20" valign="top" width="168"><IMG border="0" height="20" hspace="0" src="../resources/bottom.gif" vspace="0" width="168"></TD><TD align="left" height="20" valign="top" width="96"><A href="http://xml.apache.org/" onMouseOut="rolloverOff('xml');" onMouseOver="rolloverOn('xml');" target="new"><IMG alt="http://xml.apache.org/" border="0" height="20" hspace="0" name="xml" onLoad="rolloverLoad('xml','../resources/button-xml-hi.gif','../resources/button-xml-lo.gif');" src="../resources/button-xml-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A href="http://www.apache.org/" onMouseOut="rolloverOff('asf');" onMouseOver="rolloverOn('asf');" target="new"><IMG alt="http://www.apache.org/" border="0" height="20" hspace="0" name="asf" onLoad="rolloverLoad('asf','../resources/button-asf-hi.gif','../resources/button-asf-lo.gif');" src="../resources/button-asf-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A href="http://www.w3.org/" onMouseOut="rolloverOff('w3c');" onMouseOver="rolloverOn('w3c');" target="new"><IMG alt="http://www.w3.org/" border="0" height="20" hspace="0" name="w3c" onLoad="rolloverLoad('w3c','../resources/button-w3c-hi.gif','../resources/button-w3c-lo.gif');" src="../resources/button-w3c-lo.gif" vspace="0" width="96"></A></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" valign="top" width="120"><IMG border="0" height="14" hspace="0" src="../resources/join.gif" vspace="0" width="120"><BR>
  <A href="../../index.html" onMouseOut="rolloverOff('side-ext-2');" onMouseOver="rolloverOn('side-ext-2');"><IMG alt="Home" border="0" height="12" hspace="0" name="side-ext-2" onLoad="rolloverLoad('side-ext-2','../graphics/ext-2-label-2.jpg','../graphics/ext-2-label-3.jpg');" src="../graphics/ext-2-label-3.jpg" vspace="0" width="120"></A><BR>

  <IMG border="0" height="6" hspace="0" src="../resources/separator.gif" vspace="0" width="120"><BR>

     <A href="../index.html" onMouseOut="rolloverOff('side-index');" onMouseOver="rolloverOn('side-index');"><IMG alt="Readme" border="0" height="12" hspace="0" name="side-index" onLoad="rolloverLoad('side-index','../graphics/index-label-2.jpg','../graphics/index-label-3.jpg');" src="../graphics/index-label-3.jpg" vspace="0" width="120"></A><BR>
     <A href="../charter.html" onMouseOut="rolloverOff('side-charter');" onMouseOver="rolloverOn('side-charter');"><IMG alt="Charter" border="0" height="12" hspace="0" name="side-charter" onLoad="rolloverLoad('side-charter','../graphics/charter-label-2.jpg','../graphics/charter-label-3.jpg');" src="../graphics/charter-label-3.jpg" vspace="0" width="120"></A><BR>
     <A href="../releases.html" onMouseOut="rolloverOff('side-releases');" onMouseOver="rolloverOn('side-releases');"><IMG alt="Release Info" border="0" height="12" hspace="0" name="side-releases" onLoad="rolloverLoad('side-releases','../graphics/releases-label-2.jpg','../graphics/releases-label-3.jpg');" src="../graphics/releases-label-3.jpg" vspace="0" width="120"></A><BR>
     
     




  <IMG border="0" height="6" hspace="0" src="../resources/separator.gif" vspace="0" width="120"><BR>

     <A href="../install.html" onMouseOut="rolloverOff('side-install');" onMouseOver="rolloverOn('side-install');"><IMG alt="Installation" border="0" height="12" hspace="0" name="side-install" onLoad="rolloverLoad('side-install','../graphics/install-label-2.jpg','../graphics/install-label-3.jpg');" src="../graphics/install-label-3.jpg" vspace="0" width="120"></A><BR>
     <A href="http://xml.apache.org/xerces-c/download.cgi" onMouseOut="rolloverOff('side-ext-20');" onMouseOver="rolloverOn('side-ext-20');"><IMG alt="Download" border="0" height="12" hspace="0" name="side-ext-20" onLoad="rolloverLoad('side-ext-20','../graphics/ext-20-label-2.jpg','../graphics/ext-20-label-3.jpg');" src="../graphics/ext-20-label-3.jpg" vspace="0" width="120"></A><BR>
     <A href="../build.html" onMouseOut="rolloverOff('side-build');" onMouseOver="rolloverOn('side-build');"><IMG alt="Build Instructions" border="0" height="12" hspace="0" name="side-build" onLoad="rolloverLoad('side-build','../graphics/build-label-2.jpg','../graphics/build-label-3.jpg');" src="../graphics/build-label-3.jpg" vspace="0" width="120"></A><BR>
     
     
     

  <IMG border="0" height="6" hspace="0" src="../resources/separator.gif" vspace="0" width="120"><BR>

     <A href="../faqs.html" onMouseOut="rolloverOff('side-faqs');" onMouseOver="rolloverOn('side-faqs');"><IMG alt="FAQs" border="0" height="12" hspace="0" name="side-faqs" onLoad="rolloverLoad('side-faqs','../graphics/faqs-label-2.jpg','../graphics/faqs-label-3.jpg');" src="../graphics/faqs-label-3.jpg" vspace="0" width="120"></A><BR>

     <A href="../samples.html" onMouseOut="rolloverOff('side-samples');" onMouseOver="rolloverOn('side-samples');"><IMG alt="Samples" border="0" height="12" hspace="0" name="side-samples" onLoad="rolloverLoad('side-samples','../graphics/samples-label-2.jpg','../graphics/samples-label-3.jpg');" src="../graphics/samples-label-3.jpg" vspace="0" width="120"></A><BR>
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

     <A href="../api.html" onMouseOut="rolloverOff('side-api');" onMouseOver="rolloverOn('side-api');"><IMG alt="API Docs" border="0" height="12" hspace="0" name="side-api" onLoad="rolloverLoad('side-api','../graphics/api-label-2.jpg','../graphics/api-label-3.jpg');" src="../graphics/api-label-3.jpg" vspace="0" width="120"></A><BR>

  <IMG border="0" height="6" hspace="0" src="../resources/separator.gif" vspace="0" width="120"><BR>

     <A href="../ApacheDOMC++Binding.html" onMouseOut="rolloverOff('side-ext-70');" onMouseOver="rolloverOn('side-ext-70');"><IMG alt="DOM C++ Binding" border="0" height="12" hspace="0" name="side-ext-70" onLoad="rolloverLoad('side-ext-70','../graphics/ext-70-label-2.jpg','../graphics/ext-70-label-3.jpg');" src="../graphics/ext-70-label-3.jpg" vspace="0" width="120"></A><BR>

     <IMG alt="Programming" border="0" height="12" hspace="0" src="../graphics/program-label-1.jpg" vspace="0" width="120"><BR>
     
     
     
     
     
     
     

     <A href="../migrate.html" onMouseOut="rolloverOff('side-migrate');" onMouseOver="rolloverOn('side-migrate');"><IMG alt="Migration Guide" border="0" height="12" hspace="0" name="side-migrate" onLoad="rolloverLoad('side-migrate','../graphics/migrate-label-2.jpg','../graphics/migrate-label-3.jpg');" src="../graphics/migrate-label-3.jpg" vspace="0" width="120"></A><BR>
     
     
  <IMG border="0" height="6" hspace="0" src="../resources/separator.gif" vspace="0" width="120"><BR>

  <A href="../feedback.html" onMouseOut="rolloverOff('side-feedback');" onMouseOver="rolloverOn('side-feedback');"><IMG alt="Feedback" border="0" height="12" hspace="0" name="side-feedback" onLoad="rolloverLoad('side-feedback','../graphics/feedback-label-2.jpg','../graphics/feedback-label-3.jpg');" src="../graphics/feedback-label-3.jpg" vspace="0" width="120"></A><BR>
  <A href="bug-report.html" onMouseOut="rolloverOff('side-bug-report');" onMouseOver="rolloverOn('side-bug-report');"><IMG alt="Bug-Reporting" border="0" height="12" hspace="0" name="side-bug-report" onLoad="rolloverLoad('side-bug-report','../graphics/bug-report-label-2.jpg','../graphics/bug-report-label-3.jpg');" src="../graphics/bug-report-label-3.jpg" vspace="0" width="120"></A><BR>
  <A href="../pdf.html" onMouseOut="rolloverOff('side-pdf');" onMouseOver="rolloverOn('side-pdf');"><IMG alt="PDF Document" border="0" height="12" hspace="0" name="side-pdf" onLoad="rolloverLoad('side-pdf','../graphics/pdf-label-2.jpg','../graphics/pdf-label-3.jpg');" src="../graphics/pdf-label-3.jpg" vspace="0" width="120"></A><BR>

  <IMG border="0" height="6" hspace="0" src="../resources/separator.gif" vspace="0" width="120"><BR>

   
<A href="http://svn.apache.org/viewcvs.cgi/xerces/?root=Apache-SVN" onMouseOut="rolloverOff('side-ext-102');" onMouseOver="rolloverOn('side-ext-102');"><IMG alt="Source Repository" border="0" height="12" hspace="0" name="side-ext-102" onLoad="rolloverLoad('side-ext-102','../graphics/ext-102-label-2.jpg','../graphics/ext-102-label-3.jpg');" src="../graphics/ext-102-label-3.jpg" vspace="0" width="120"></A><BR>

   
<A href="http://marc.theaimsgroup.com/?l=xerces-c-users" onMouseOut="rolloverOff('side-ext-104');" onMouseOver="rolloverOn('side-ext-104');"><IMG alt="User Mail Archive" border="0" height="12" hspace="0" name="side-ext-104" onLoad="rolloverLoad('side-ext-104','../graphics/ext-104-label-2.jpg','../graphics/ext-104-label-3.jpg');" src="../graphics/ext-104-label-3.jpg" vspace="0" width="120"></A><BR>

   
<A href="http://marc.theaimsgroup.com/?l=xerces-c-dev" onMouseOut="rolloverOff('side-ext-106');" onMouseOver="rolloverOn('side-ext-106');"><IMG alt="Devel Mail Archive" border="0" height="12" hspace="0" name="side-ext-106" onLoad="rolloverLoad('side-ext-106','../graphics/ext-106-label-2.jpg','../graphics/ext-106-label-3.jpg');" src="../graphics/ext-106-label-3.jpg" vspace="0" width="120"></A><BR>




<IMG border="0" height="14" hspace="0" src="../resources/close.gif" vspace="0" width="120"><BR></TD><TD align="left" valign="top" width="500"><TABLE border="0" cellpadding="3" cellspacing="0"><TR><TD>
    <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#FFFFFF" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="../resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="../resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="../resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="../resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="../resources/void.gif" vspace="0" width="2"><B>API Docs for SAX and DOM</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="../resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="../resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="../resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="../resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">

	    <P>
<!-- Generated by Doxygen 1.4.1 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</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="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">src</a>&nbsp;/&nbsp;<a class="el" href="dir_000001.html">xercesc</a>&nbsp;/&nbsp;<a class="el" href="dir_000003.html">util</a></div>
<h1>TransService.hpp</h1><a href="TransService_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"> * Copyright 1999-2001,2004 The Apache Software Foundation.</span>
00003 <span class="comment"> * </span>
00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span>
00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
00006 <span class="comment"> * You may obtain a copy of the License at</span>
00007 <span class="comment"> * </span>
00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
00009 <span class="comment"> * </span>
00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
00011 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
00014 <span class="comment"> * limitations under the License.</span>
00015 <span class="comment"> */</span>
00016 
00017 <span class="comment">/*</span>
00018 <span class="comment"> * $Id: TransService.hpp 191054 2005-06-17 02:56:35Z jberry $</span>
00019 <span class="comment"> */</span>
00020 
00021 <span class="preprocessor">#ifndef TRANSSERVICE_HPP</span>
00022 <span class="preprocessor"></span><span class="preprocessor">#define TRANSSERVICE_HPP</span>
00023 <span class="preprocessor"></span>
00024 <span class="preprocessor">#include &lt;<a class="code" href="XMemory_8hpp.html">xercesc/util/XMemory.hpp</a>&gt;</span>
00025 <span class="preprocessor">#include &lt;<a class="code" href="PlatformUtils_8hpp.html">xercesc/util/PlatformUtils.hpp</a>&gt;</span>
00026 <span class="preprocessor">#include &lt;xercesc/framework/XMLRecognizer.hpp&gt;</span>
00027 <span class="preprocessor">#include &lt;xercesc/util/RefHashTableOf.hpp&gt;</span>
00028 <span class="preprocessor">#include &lt;xercesc/util/RefVectorOf.hpp&gt;</span>
00029 
00030 <a class="code" href="XercesDefs_8hpp.html#a3">XERCES_CPP_NAMESPACE_BEGIN</a>
00031 
00032 <span class="comment">// Forward references</span>
00033 <span class="comment">//class XMLPlatformUtils;</span>
00034 <span class="keyword">class </span><a class="code" href="classXMLLCPTranscoder.html">XMLLCPTranscoder</a>;
00035 <span class="keyword">class </span><a class="code" href="classXMLTranscoder.html">XMLTranscoder</a>;
00036 <span class="keyword">class </span>ENameMap;
00037 
00038 
00039 <span class="comment">//</span>
00040 <span class="comment">//  This class is an abstract base class which are used to abstract the</span>
00041 <span class="comment">//  transcoding services that Xerces uses. The parser's actual transcoding</span>
00042 <span class="comment">//  needs are small so it is desirable to allow different implementations</span>
00043 <span class="comment">//  to be provided.</span>
00044 <span class="comment">//</span>
00045 <span class="comment">//  The transcoding service has to provide a couple of required string</span>
00046 <span class="comment">//  and character operations, but its most important service is the creation</span>
00047 <span class="comment">//  of transcoder objects. There are two types of transcoders, which are</span>
00048 <span class="comment">//  discussed below in the XMLTranscoder class' description.</span>
00049 <span class="comment">//</span>
<a name="l00050"></a><a class="code" href="classXMLTransService.html">00050</a> <span class="keyword">class </span><a class="code" href="XercesDefs_8hpp.html#a9"></a> XMLTransService : <span class="keyword">public</span> <a class="code" href="classXMemory.html">XMemory</a>
00051 {
00052 <span class="keyword">public</span> :
00053     <span class="comment">// -----------------------------------------------------------------------</span>
00054     <span class="comment">//  Class specific types</span>
00055     <span class="comment">// -----------------------------------------------------------------------</span>
<a name="l00056"></a><a class="code" href="classXMLTransService.html#w4">00056</a>     <span class="keyword">enum</span> Codes
00057     {
00058         Ok
00059         , UnsupportedEncoding
00060         , InternalFailure
00061         , SupportFilesNotFound
00062     };
00063 
<a name="l00064"></a><a class="code" href="structXMLTransService_1_1TransRec.html">00064</a>     <span class="keyword">struct </span><a class="code" href="structXMLTransService_1_1TransRec.html">TransRec</a>
00065     {
<a name="l00066"></a><a class="code" href="structXMLTransService_1_1TransRec.html#o0">00066</a>         XMLCh       intCh;
<a name="l00067"></a><a class="code" href="structXMLTransService_1_1TransRec.html#o1">00067</a>         <a class="code" href="XercesDefs_8hpp.html#a17">XMLByte</a>     extCh;
00068     };
00069 
00070 
00071     <span class="comment">// -----------------------------------------------------------------------</span>
00072     <span class="comment">//  Public constructors and destructor</span>
00073     <span class="comment">// -----------------------------------------------------------------------</span>
00074     <span class="keyword">virtual</span> ~XMLTransService();
00075 
00076 
00077     <span class="comment">// -----------------------------------------------------------------------</span>
00078     <span class="comment">//  Non-virtual API</span>
00079     <span class="comment">// -----------------------------------------------------------------------</span>
00080     <a class="code" href="classXMLTranscoder.html">XMLTranscoder</a>* makeNewTranscoderFor
00081     (
00082         <span class="keyword">const</span>   XMLCh* <span class="keyword">const</span>            encodingName
00083         ,       <a class="code" href="classXMLTransService.html#w4">XMLTransService::Codes</a>&amp; resValue
00084         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>            blockSize
00085         , <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span>          manager = XMLPlatformUtils::fgMemoryManager
00086     );
00087 
00088     <a class="code" href="classXMLTranscoder.html">XMLTranscoder</a>* makeNewTranscoderFor
00089     (
00090         <span class="keyword">const</span>   <span class="keywordtype">char</span>* <span class="keyword">const</span>             encodingName
00091         ,       <a class="code" href="classXMLTransService.html#w4">XMLTransService::Codes</a>&amp; resValue
00092         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>            blockSize
00093         , <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span>          manager = XMLPlatformUtils::fgMemoryManager
00094     );
00095 
00096     <a class="code" href="classXMLTranscoder.html">XMLTranscoder</a>* makeNewTranscoderFor
00097     (
00098         XMLRecognizer::Encodings        encodingEnum
00099         ,       <a class="code" href="classXMLTransService.html#w4">XMLTransService::Codes</a>&amp; resValue
00100         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>            blockSize
00101         , <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span>          manager = XMLPlatformUtils::fgMemoryManager
00102     );
00103 
00104 
00105     <span class="comment">// -----------------------------------------------------------------------</span>
00106     <span class="comment">//  The virtual transcoding service API</span>
00107     <span class="comment">// -----------------------------------------------------------------------</span>
00108     <span class="keyword">virtual</span> <span class="keywordtype">int</span> compareIString
00109     (
00110         <span class="keyword">const</span>   XMLCh* <span class="keyword">const</span>    comp1
00111         , <span class="keyword">const</span> XMLCh* <span class="keyword">const</span>    comp2
00112     ) = 0;
00113 
00114     <span class="keyword">virtual</span> <span class="keywordtype">int</span> compareNIString
00115     (
00116         <span class="keyword">const</span>   XMLCh* <span class="keyword">const</span>    comp1
00117         , <span class="keyword">const</span> XMLCh* <span class="keyword">const</span>    comp2
00118         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    maxChars
00119     ) = 0;
00120 
00121     <span class="keyword">virtual</span> <span class="keyword">const</span> XMLCh* getId() <span class="keyword">const </span>= 0;
00122 
00123     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSpace(<span class="keyword">const</span> XMLCh toCheck) <span class="keyword">const </span>= 0;
00124 
00125     <span class="keyword">virtual</span> <a class="code" href="classXMLLCPTranscoder.html">XMLLCPTranscoder</a>* makeNewLCPTranscoder() = 0;
00126 
00127     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> supportsSrcOfs() <span class="keyword">const </span>= 0;
00128 
00129     <span class="keyword">virtual</span> <span class="keywordtype">void</span> upperCase(XMLCh* <span class="keyword">const</span> toUpperCase) <span class="keyword">const </span>= 0;
00130     <span class="keyword">virtual</span> <span class="keywordtype">void</span> lowerCase(XMLCh* <span class="keyword">const</span> toLowerCase) <span class="keyword">const </span>= 0;
00131 
00132     <span class="comment">// -----------------------------------------------------------------------</span>
00133     <span class="comment">//  Allow users to add their own encodings to the intrinsinc mapping</span>
00134     <span class="comment">//  table</span>
00135     <span class="comment">//  Usage:</span>
00136     <span class="comment">//      XMLTransService::addEncoding (</span>
00137     <span class="comment">//          gMyEncodingNameString</span>
00138     <span class="comment">//          , new ENameMapFor&lt;MyTransClassType&gt;(gMyEncodingNameString)</span>
00139     <span class="comment">//      );</span>
00140     <span class="comment">// -----------------------------------------------------------------------</span>
00141     <span class="keyword">static</span> <span class="keywordtype">void</span> addEncoding(<span class="keyword">const</span> XMLCh* <span class="keyword">const</span> encoding, ENameMap* <span class="keyword">const</span> ownMapping);
00142 
00143 
00144 <span class="keyword">protected</span> :
00145     <span class="comment">// -----------------------------------------------------------------------</span>
00146     <span class="comment">//  Hidden constructors</span>
00147     <span class="comment">// -----------------------------------------------------------------------</span>
00148     XMLTransService();
00149 
00150 
00151     <span class="comment">// -----------------------------------------------------------------------</span>
00152     <span class="comment">//  Protected virtual methods.</span>
00153     <span class="comment">// -----------------------------------------------------------------------</span>
00154     <span class="keyword">virtual</span> <a class="code" href="classXMLTranscoder.html">XMLTranscoder</a>* makeNewXMLTranscoder
00155     (
00156         <span class="keyword">const</span>   XMLCh* <span class="keyword">const</span>            encodingName
00157         ,       <a class="code" href="classXMLTransService.html#w4">XMLTransService::Codes</a>&amp; resValue
00158         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>            blockSize
00159         , <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span>          manager
00160     ) = 0;
00161 
00162     <span class="comment">// -----------------------------------------------------------------------</span>
00163     <span class="comment">//  Protected init method for platform utils to call</span>
00164     <span class="comment">// -----------------------------------------------------------------------</span>
<a name="l00165"></a><a class="code" href="classXMLTransService.html#n0">00165</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classXMLPlatformUtils.html">XMLPlatformUtils</a>;
00166     <span class="keyword">virtual</span> <span class="keywordtype">void</span> initTransService();
00167 
00168     <span class="comment">// -----------------------------------------------------------------------</span>
00169     <span class="comment">// protected static members</span>
00170     <span class="comment">//  gMappings</span>
00171     <span class="comment">//      This is a hash table of ENameMap objects. It is created and filled</span>
00172     <span class="comment">//      in when the platform init calls our initTransService() method.</span>
00173     <span class="comment">//</span>
00174     <span class="comment">//  gMappingsRecognizer</span>
00175     <span class="comment">//      This is an array of ENameMap objects, predefined for those</span>
00176     <span class="comment">//      already recognized by XMLRecognizer::Encodings.</span>
00177     <span class="comment">//</span>
00178 
<a name="l00179"></a><a class="code" href="classXMLTransService.html#t0">00179</a>     <span class="keyword">static</span> RefHashTableOf&lt;ENameMap&gt;*    gMappings;
<a name="l00180"></a><a class="code" href="classXMLTransService.html#t1">00180</a>     <span class="keyword">static</span> RefVectorOf&lt;ENameMap&gt;*       gMappingsRecognizer;
00181 
00182 <span class="keyword">private</span> :
00183     <span class="comment">// -----------------------------------------------------------------------</span>
00184     <span class="comment">//  Unimplemented constructors and operators</span>
00185     <span class="comment">// -----------------------------------------------------------------------</span>
00186     XMLTransService(<span class="keyword">const</span> XMLTransService&amp;);
00187     XMLTransService&amp; operator=(<span class="keyword">const</span> XMLTransService&amp;);
00188 
00189     <span class="comment">// -----------------------------------------------------------------------</span>
00190     <span class="comment">//  Hidden method to enable/disable strict IANA encoding check</span>
00191     <span class="comment">//  Caller: XMLPlatformUtils</span>
00192     <span class="comment">// -----------------------------------------------------------------------</span>
00193     <span class="keywordtype">void</span> <a class="code" href="classXMLPlatformUtils.html#z961_0">strictIANAEncoding</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> newState);
00194     <span class="keywordtype">bool</span> <a class="code" href="classXMLPlatformUtils.html#z961_1">isStrictIANAEncoding</a>();
00195     <span class="keyword">static</span> <span class="keywordtype">void</span> reinitMappings();
00196     <span class="keyword">static</span> <span class="keywordtype">void</span> reinitMappingsRecognizer();
00197 
00198 };
00199 
00200 
00201 
<a name="l00218"></a><a class="code" href="classXMLTranscoder.html">00218</a> <span class="keyword">class </span><a class="code" href="XercesDefs_8hpp.html#a9"></a> XMLTranscoder : <span class="keyword">public</span> <a class="code" href="classXMemory.html">XMemory</a>
00219 {
00220 <span class="keyword">public</span> :
00221 
<a name="l00229"></a><a class="code" href="classXMLTranscoder.html#w2">00229</a>     <span class="keyword">enum</span> UnRepOpts
00230     {
00231         UnRep_Throw     
00232         , UnRep_RepChar     
00233     };
00234 
00235 
00238 
00243     <span class="keyword">virtual</span> ~XMLTranscoder();
00245 
00246 
00247 
00250 
00270     <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> transcodeFrom
00271     (
00272         <span class="keyword">const</span>   <a class="code" href="XercesDefs_8hpp.html#a17">XMLByte</a>* <span class="keyword">const</span>          srcData
00273         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>            srcCount
00274         ,       XMLCh* <span class="keyword">const</span>            toFill
00275         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>            maxChars
00276         ,       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp;           bytesEaten
00277         ,       <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* <span class="keyword">const</span>    charSizes
00278     ) = 0;
00279 
00293     <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> transcodeTo
00294     (
00295         <span class="keyword">const</span>   XMLCh* <span class="keyword">const</span>    srcData
00296         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    srcCount
00297         ,       <a class="code" href="XercesDefs_8hpp.html#a17">XMLByte</a>* <span class="keyword">const</span>  toFill
00298         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    maxBytes
00299         ,       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp;   charsEaten
00300         , <span class="keyword">const</span> UnRepOpts       options
00301     ) = 0;
00302 
00308     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> canTranscodeTo
00309     (
00310         <span class="keyword">const</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    toCheck
00311     )   <span class="keyword">const</span> = 0;
00312 
00314 
00317 
00322     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getBlockSize() <span class="keyword">const</span>;
00323 
00329     <span class="keyword">const</span> XMLCh* getEncodingName() <span class="keyword">const</span>;
00331 
00334 
00342     <a class="code" href="classMemoryManager.html">MemoryManager</a>* getMemoryManager() <span class="keyword">const</span>;
00343 
00345 
00346 <span class="keyword">protected</span> :
00347     <span class="comment">// -----------------------------------------------------------------------</span>
00348     <span class="comment">//  Hidden constructors</span>
00349     <span class="comment">// -----------------------------------------------------------------------</span>
00350     XMLTranscoder
00351     (
00352         <span class="keyword">const</span>   XMLCh* <span class="keyword">const</span>    encodingName
00353         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    blockSize
00354         , <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span>  manager = XMLPlatformUtils::fgMemoryManager
00355     );
00356 
00357 
00358     <span class="comment">// -----------------------------------------------------------------------</span>
00359     <span class="comment">//  Protected helper methods</span>
00360     <span class="comment">// -----------------------------------------------------------------------</span>
00361     <span class="comment">// As the body of this function is commented out it could be removed.</span>
00362     <span class="comment">// However, currently all calls to it are guarded by #if defined(XERCES_DEBUG)</span>
00363     <span class="comment">// so will leave it for now.</span>
00364     <span class="keywordtype">void</span> checkBlockSize(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> toCheck);
00365 
00366 
00367 <span class="keyword">private</span> :
00368     <span class="comment">// -----------------------------------------------------------------------</span>
00369     <span class="comment">//  Unimplemented constructors and operators</span>
00370     <span class="comment">// -----------------------------------------------------------------------</span>
00371     XMLTranscoder(<span class="keyword">const</span> XMLTranscoder&amp;);
00372     XMLTranscoder&amp; operator=(<span class="keyword">const</span> XMLTranscoder&amp;);
00373 
00374     <span class="comment">// -----------------------------------------------------------------------</span>
00375     <span class="comment">//  Private data members</span>
00376     <span class="comment">//</span>
00377     <span class="comment">//  fBlockSize</span>
00378     <span class="comment">//      This is the block size indicated in the constructor.</span>
00379     <span class="comment">//</span>
00380     <span class="comment">//  fEncodingName</span>
00381     <span class="comment">//      This is the name of the encoding this encoder is for. All basic</span>
00382     <span class="comment">//      XML transcoder's are for named encodings.</span>
00383     <span class="comment">// -----------------------------------------------------------------------</span>
00384     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    fBlockSize;
00385     XMLCh*          fEncodingName;
00386     <a class="code" href="classMemoryManager.html">MemoryManager</a>*  fMemoryManager;
00387 };
00388 
00389 
00390 <span class="comment">//</span>
00391 <span class="comment">//  This class is a specialized transcoder that only transcodes between</span>
00392 <span class="comment">//  the internal XMLCh format and the local code page. It is specialized</span>
00393 <span class="comment">//  for the very common job of translating data from the client app's</span>
00394 <span class="comment">//  native code page to the internal format and vice versa.</span>
00395 <span class="comment">//</span>
<a name="l00396"></a><a class="code" href="classXMLLCPTranscoder.html">00396</a> <span class="keyword">class </span><a class="code" href="XercesDefs_8hpp.html#a9"></a> XMLLCPTranscoder : <span class="keyword">public</span> <a class="code" href="classXMemory.html">XMemory</a>
00397 {
00398 <span class="keyword">public</span> :
00399     <span class="comment">// -----------------------------------------------------------------------</span>
00400     <span class="comment">//  Public constructors and destructor</span>
00401     <span class="comment">// -----------------------------------------------------------------------</span>
00402     <span class="keyword">virtual</span> ~XMLLCPTranscoder();
00403 
00404 
00405     <span class="comment">// -----------------------------------------------------------------------</span>
00406     <span class="comment">//  The virtual transcoder API</span>
00407     <span class="comment">//</span>
00408     <span class="comment">//  NOTE:   All these APIs don't include null terminator characters in</span>
00409     <span class="comment">//          their parameters. So calcRequiredSize() returns the number</span>
00410     <span class="comment">//          of actual chars, not including the null. maxBytes and maxChars</span>
00411     <span class="comment">//          parameters refer to actual chars, not including the null so</span>
00412     <span class="comment">//          its assumed that the buffer is physically one char or byte</span>
00413     <span class="comment">//          larger.</span>
00414     <span class="comment">// -----------------------------------------------------------------------</span>
00415     <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> calcRequiredSize(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> srcText
00416         , <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager = XMLPlatformUtils::fgMemoryManager) = 0;
00417 
00418     <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> calcRequiredSize(<span class="keyword">const</span> XMLCh* <span class="keyword">const</span> srcText
00419         , <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager = XMLPlatformUtils::fgMemoryManager) = 0;
00420 
00421     <span class="keyword">virtual</span> <span class="keywordtype">char</span>* transcode(<span class="keyword">const</span> XMLCh* <span class="keyword">const</span> toTranscode) = 0;
00422     <span class="keyword">virtual</span> <span class="keywordtype">char</span>* transcode(<span class="keyword">const</span> XMLCh* <span class="keyword">const</span> toTranscode,
00423                             <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager) = 0;
00424 
00425     <span class="keyword">virtual</span> XMLCh* transcode(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> toTranscode) = 0;
00426     <span class="keyword">virtual</span> XMLCh* transcode(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> toTranscode,
00427                              <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager) = 0;
00428 
00429     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> transcode
00430     (
00431         <span class="keyword">const</span>   <span class="keywordtype">char</span>* <span class="keyword">const</span>     toTranscode
00432         ,       XMLCh* <span class="keyword">const</span>    toFill
00433         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    maxChars
00434         , <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span>  manager = XMLPlatformUtils::fgMemoryManager
00435     ) = 0;
00436 
00437     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> transcode
00438     (
00439         <span class="keyword">const</span>   XMLCh* <span class="keyword">const</span>    toTranscode
00440         ,       <span class="keywordtype">char</span>* <span class="keyword">const</span>     toFill
00441         , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    maxBytes
00442         , <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span>  manager = XMLPlatformUtils::fgMemoryManager
00443     ) = 0;
00444 
00445 
00446 <span class="keyword">protected</span> :
00447     <span class="comment">// -----------------------------------------------------------------------</span>
00448     <span class="comment">//  Hidden constructors</span>
00449     <span class="comment">// -----------------------------------------------------------------------</span>
00450     XMLLCPTranscoder();
00451 
00452 
00453 <span class="keyword">private</span> :
00454     <span class="comment">// -----------------------------------------------------------------------</span>
00455     <span class="comment">//  Unimplemented constructors and operators</span>
00456     <span class="comment">// -----------------------------------------------------------------------</span>
00457     XMLLCPTranscoder(<span class="keyword">const</span> XMLLCPTranscoder&amp;);
00458     XMLLCPTranscoder&amp; operator=(<span class="keyword">const</span> XMLLCPTranscoder&amp;);
00459 };
00460 
00461 
00462 <span class="comment">// ---------------------------------------------------------------------------</span>
00463 <span class="comment">//  XMLTranscoder: Getter methods</span>
00464 <span class="comment">// ---------------------------------------------------------------------------</span>
<a name="l00465"></a><a class="code" href="classXMLTranscoder.html#z977_0">00465</a> <span class="keyword">inline</span> <a class="code" href="classMemoryManager.html">MemoryManager</a>* <a class="code" href="classXMLTranscoder.html#z977_0">XMLTranscoder::getMemoryManager</a>()<span class="keyword"> const</span>
00466 <span class="keyword"></span>{
00467     <span class="keywordflow">return</span> fMemoryManager;
00468 }
00469 
00470 <span class="comment">// ---------------------------------------------------------------------------</span>
00471 <span class="comment">//  XMLTranscoder: Protected helper methods</span>
00472 <span class="comment">// ---------------------------------------------------------------------------</span>
<a name="l00473"></a><a class="code" href="classXMLTranscoder.html#z975_0">00473</a> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classXMLTranscoder.html#z975_0">XMLTranscoder::getBlockSize</a>()<span class="keyword"> const</span>
00474 <span class="keyword"></span>{
00475     <span class="keywordflow">return</span> fBlockSize;
00476 }
00477 
<a name="l00478"></a><a class="code" href="classXMLTranscoder.html#z975_1">00478</a> <span class="keyword">inline</span> <span class="keyword">const</span> XMLCh* <a class="code" href="classXMLTranscoder.html#z975_1">XMLTranscoder::getEncodingName</a>()<span class="keyword"> const</span>
00479 <span class="keyword"></span>{
00480     <span class="keywordflow">return</span> fEncodingName;
00481 }
00482 
00483 <a class="code" href="XercesDefs_8hpp.html#a4">XERCES_CPP_NAMESPACE_END</a>
00484 
00485 <span class="preprocessor">#endif</span>
</pre></div>    </FONT></TD></TR></TABLE><BR>
</TD></TR></TABLE></TD></TR></TABLE><BR><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD bgcolor="#0086b2"><IMG height="1" src="images/dot.gif" width="1" alt=""></TD></TR><TR><TD align="center"><FONT color="#0086b2" size="-1"><I>
              Copyright &copy; 1994-2004 The Apache Software Foundation.
              All Rights Reserved.
            </I></FONT></TD></TR></TABLE></BODY></HTML>