Sophie

Sophie

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

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++: XMLDateTime.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>XMLDateTime.hpp</h1><a href="XMLDateTime_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 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: XMLDateTime.hpp 225121 2005-07-25 13:41:47Z cargilld $</span>
00019 <span class="comment"> */</span>
00020 
00021 <span class="preprocessor">#ifndef XML_DATETIME_HPP</span>
00022 <span class="preprocessor"></span><span class="preprocessor">#define XML_DATETIME_HPP</span>
00023 <span class="preprocessor"></span>
00024 <span class="preprocessor">#include &lt;<a class="code" href="XMLNumber_8hpp.html">xercesc/util/XMLNumber.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;<a class="code" href="XMLString_8hpp.html">xercesc/util/XMLString.hpp</a>&gt;</span>
00027 <span class="preprocessor">#include &lt;<a class="code" href="XMLUniDefs_8hpp.html">xercesc/util/XMLUniDefs.hpp</a>&gt;</span>
00028 <span class="preprocessor">#include &lt;<a class="code" href="SchemaDateTimeException_8hpp.html">xercesc/util/SchemaDateTimeException.hpp</a>&gt;</span>
00029 
00030 <a class="code" href="XercesDefs_8hpp.html#a3">XERCES_CPP_NAMESPACE_BEGIN</a>
00031 
00032 <span class="keyword">class </span><a class="code" href="classXSValue.html">XSValue</a>;
00033 
<a name="l00034"></a><a class="code" href="classXMLDateTime.html">00034</a> <span class="keyword">class </span><a class="code" href="XercesDefs_8hpp.html#a9"></a> XMLDateTime : <span class="keyword">public</span> <a class="code" href="classXMLNumber.html">XMLNumber</a>
00035 {
00036 <span class="keyword">public</span>:
00037 
<a name="l00038"></a><a class="code" href="classXMLDateTime.html#w13">00038</a>     <span class="keyword">enum</span> valueIndex
00039     {
00040         CentYear   = 0,
00041         Month      ,
00042         Day        ,
00043         Hour       ,
00044         Minute     ,
00045         Second     ,
00046         MiliSecond ,  <span class="comment">//not to be used directly</span>
00047         utc        ,
00048         TOTAL_SIZE
00049     };
00050 
<a name="l00051"></a><a class="code" href="classXMLDateTime.html#w14">00051</a>     <span class="keyword">enum</span> utcType
00052     {
00053         UTC_UNKNOWN = 0,
00054         UTC_STD        ,          <span class="comment">// set in parse() or normalize()</span>
00055         UTC_POS        ,          <span class="comment">// set in parse()</span>
00056         UTC_NEG                   <span class="comment">// set in parse()</span>
00057     };
00058 
00059     <span class="comment">// -----------------------------------------------------------------------</span>
00060     <span class="comment">// ctors and dtor</span>
00061     <span class="comment">// -----------------------------------------------------------------------</span>
00062 
00063     XMLDateTime(<a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager = XMLPlatformUtils::fgMemoryManager);
00064     XMLDateTime(<span class="keyword">const</span> XMLCh* <span class="keyword">const</span>,
00065                 <a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> manager = XMLPlatformUtils::fgMemoryManager);
00066     ~XMLDateTime();
00067 
00068     <span class="keyword">inline</span> <span class="keywordtype">void</span>           setBuffer(<span class="keyword">const</span> XMLCh* <span class="keyword">const</span>);
00069 
00070     <span class="comment">// -----------------------------------------------------------------------</span>
00071     <span class="comment">// Copy ctor and Assignment operators</span>
00072     <span class="comment">// -----------------------------------------------------------------------</span>
00073 
00074     XMLDateTime(<span class="keyword">const</span> XMLDateTime&amp;);
00075 
00076     XMLDateTime&amp;          operator=(<span class="keyword">const</span> XMLDateTime&amp;);
00077 
00078     <span class="comment">// -----------------------------------------------------------------------</span>
00079     <span class="comment">// Implementation of Abstract Interface</span>
00080     <span class="comment">// -----------------------------------------------------------------------</span>
00081 
00087     <span class="keyword">virtual</span> XMLCh*        <a class="code" href="classXMLNumber.html#a1">toString</a>() <span class="keyword">const</span>;
00088     
00089     <span class="keyword">virtual</span> XMLCh*        <a class="code" href="classXMLNumber.html#a2">getRawData</a>() <span class="keyword">const</span>;
00090 
00091     <span class="keyword">virtual</span> <span class="keyword">const</span> XMLCh*  <a class="code" href="classXMLNumber.html#a3">getFormattedString</a>() <span class="keyword">const</span>;
00092 
00093     <span class="keyword">virtual</span> <span class="keywordtype">int</span>           <a class="code" href="classXMLNumber.html#a4">getSign</a>() <span class="keyword">const</span>;
00094 
00095     <span class="comment">// -----------------------------------------------------------------------</span>
00096     <span class="comment">// Canonical Representation</span>
00097     <span class="comment">// -----------------------------------------------------------------------</span>
00098 
00099     XMLCh*                getDateTimeCanonicalRepresentation(<a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> memMgr) <span class="keyword">const</span>;
00100 
00101     XMLCh*                getTimeCanonicalRepresentation(<a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> memMgr)     <span class="keyword">const</span>;
00102 
00103     XMLCh*                getDateCanonicalRepresentation(<a class="code" href="classMemoryManager.html">MemoryManager</a>* <span class="keyword">const</span> memMgr)     <span class="keyword">const</span>;
00104 
00105     <span class="comment">// -----------------------------------------------------------------------</span>
00106     <span class="comment">// parsers</span>
00107     <span class="comment">// -----------------------------------------------------------------------</span>
00108 
00109     <span class="keywordtype">void</span>                  parseDateTime();       <span class="comment">//DateTime</span>
00110 
00111     <span class="keywordtype">void</span>                  parseDate();           <span class="comment">//Date</span>
00112 
00113     <span class="keywordtype">void</span>                  parseTime();           <span class="comment">//Time</span>
00114 
00115     <span class="keywordtype">void</span>                  parseDay();            <span class="comment">//gDay</span>
00116 
00117     <span class="keywordtype">void</span>                  parseMonth();          <span class="comment">//gMonth</span>
00118 
00119     <span class="keywordtype">void</span>                  parseYear();           <span class="comment">//gYear</span>
00120 
00121     <span class="keywordtype">void</span>                  parseMonthDay();       <span class="comment">//gMonthDay</span>
00122 
00123     <span class="keywordtype">void</span>                  parseYearMonth();      <span class="comment">//gYearMonth</span>
00124 
00125     <span class="keywordtype">void</span>                  parseDuration();       <span class="comment">//duration</span>
00126 
00127     <span class="comment">// -----------------------------------------------------------------------</span>
00128     <span class="comment">// Comparison</span>
00129     <span class="comment">// -----------------------------------------------------------------------</span>
00130     <span class="keyword">static</span> <span class="keywordtype">int</span>            compare(<span class="keyword">const</span> XMLDateTime* <span class="keyword">const</span>
00131                                 , <span class="keyword">const</span> XMLDateTime* <span class="keyword">const</span>);
00132 
00133     <span class="keyword">static</span> <span class="keywordtype">int</span>            compare(<span class="keyword">const</span> XMLDateTime* <span class="keyword">const</span>
00134                                 , <span class="keyword">const</span> XMLDateTime* <span class="keyword">const</span>
00135                                 , <span class="keywordtype">bool</span>                    );
00136 
00137     <span class="keyword">static</span> <span class="keywordtype">int</span>            compareOrder(<span class="keyword">const</span> XMLDateTime* <span class="keyword">const</span>
00138                                      , <span class="keyword">const</span> XMLDateTime* <span class="keyword">const</span>);                                    
00139 
00140     <span class="comment">/***</span>
00141 <span class="comment">     * Support for Serialization/De-serialization</span>
00142 <span class="comment">     ***/</span>
00143     DECL_XSERIALIZABLE(XMLDateTime)
00144 
00145 private:
00146 
00147     <span class="comment">// -----------------------------------------------------------------------</span>
00148     <span class="comment">// Constant data</span>
00149     <span class="comment">// -----------------------------------------------------------------------</span>
00150     <span class="comment">//</span>
00151 
00152     enum timezoneIndex
00153     {
00154         hh = 0,
00155         mm ,
00156         TIMEZONE_ARRAYSIZE
00157     };
00158 
00159     <span class="comment">// -----------------------------------------------------------------------</span>
00160     <span class="comment">// Comparison</span>
00161     <span class="comment">// -----------------------------------------------------------------------</span>
00162     <span class="keyword">static</span> <span class="keywordtype">int</span>            compareResult(<span class="keywordtype">int</span>
00163                                       , <span class="keywordtype">int</span>
00164                                       , <span class="keywordtype">bool</span>);
00165 
00166     <span class="keyword">static</span> <span class="keywordtype">void</span>           addDuration(XMLDateTime*             pDuration
00167                                     , <span class="keyword">const</span> XMLDateTime* <span class="keyword">const</span> pBaseDate
00168                                     , <span class="keywordtype">int</span>                      index);
00169 
00170 
00171     <span class="keyword">static</span> <span class="keywordtype">int</span>            compareResult(<span class="keyword">const</span> XMLDateTime* <span class="keyword">const</span>
00172                                       , <span class="keyword">const</span> XMLDateTime* <span class="keyword">const</span>
00173                                       , <span class="keywordtype">bool</span>
00174                                       , <span class="keywordtype">int</span>);
00175 
00176     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span>     getRetVal(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>);
00177 
00178     <span class="comment">// -----------------------------------------------------------------------</span>
00179     <span class="comment">// helper</span>
00180     <span class="comment">// -----------------------------------------------------------------------</span>
00181 
00182     <span class="keyword">inline</span>  <span class="keywordtype">void</span>          reset();
00183 
00184     <span class="keyword">inline</span>  <span class="keywordtype">void</span>          assertBuffer()               <span class="keyword">const</span>;
00185 
00186     <span class="keyword">inline</span>  <span class="keywordtype">void</span>          copy(<span class="keyword">const</span> XMLDateTime&amp;);
00187 
00188     <span class="comment">// allow multiple parsing</span>
00189     <span class="keyword">inline</span>  <span class="keywordtype">void</span>          initParser();
00190 
00191     <span class="keyword">inline</span>  <span class="keywordtype">bool</span>          isNormalized()               <span class="keyword">const</span>;
00192 
00193     <span class="comment">// -----------------------------------------------------------------------</span>
00194     <span class="comment">// scaners</span>
00195     <span class="comment">// -----------------------------------------------------------------------</span>
00196 
00197     <span class="keywordtype">void</span>                  getDate();
00198 
00199     <span class="keywordtype">void</span>                  getTime();
00200 
00201     <span class="keywordtype">void</span>                  getYearMonth();
00202 
00203     <span class="keywordtype">void</span>                  getTimeZone(<span class="keyword">const</span> <span class="keywordtype">int</span>);
00204 
00205     <span class="keywordtype">void</span>                  parseTimeZone();
00206 
00207     <span class="comment">// -----------------------------------------------------------------------</span>
00208     <span class="comment">// locator and converter</span>
00209     <span class="comment">// -----------------------------------------------------------------------</span>
00210 
00211     <span class="keywordtype">int</span>                   findUTCSign(<span class="keyword">const</span> <span class="keywordtype">int</span> start);
00212 
00213     <span class="keywordtype">int</span>                   indexOf(<span class="keyword">const</span> <span class="keywordtype">int</span> start
00214                                 , <span class="keyword">const</span> <span class="keywordtype">int</span> end
00215                                 , <span class="keyword">const</span> XMLCh ch)     <span class="keyword">const</span>;
00216 
00217     <span class="keywordtype">int</span>                   parseInt(<span class="keyword">const</span> <span class="keywordtype">int</span> start
00218                                  , <span class="keyword">const</span> <span class="keywordtype">int</span> end)     <span class="keyword">const</span>;
00219 
00220     <span class="keywordtype">int</span>                   parseIntYear(<span class="keyword">const</span> <span class="keywordtype">int</span> end) <span class="keyword">const</span>;
00221 
00222     <span class="keywordtype">double</span>                parseMiliSecond(<span class="keyword">const</span> <span class="keywordtype">int</span> start
00223                                         , <span class="keyword">const</span> <span class="keywordtype">int</span> end) <span class="keyword">const</span>;
00224 
00225     <span class="comment">// -----------------------------------------------------------------------</span>
00226     <span class="comment">// validator and normalizer</span>
00227     <span class="comment">// -----------------------------------------------------------------------</span>
00228 
00229     <span class="keywordtype">void</span>                  validateDateTime()          <span class="keyword">const</span>;
00230 
00231     <span class="keywordtype">void</span>                  normalize();
00232 
00233     <span class="keywordtype">void</span>                  fillString(XMLCh*&amp; ptr, <span class="keywordtype">int</span> value, <span class="keywordtype">int</span> expLen) <span class="keyword">const</span>;
00234 
00235     <span class="keywordtype">int</span>                   fillYearString(XMLCh*&amp; ptr, <span class="keywordtype">int</span> value) <span class="keyword">const</span>;
00236 
00237     <span class="keywordtype">void</span>                  searchMiliSeconds(XMLCh*&amp; miliStartPtr, XMLCh*&amp; miliEndPtr) <span class="keyword">const</span>;
00238 
00239     <span class="comment">// -----------------------------------------------------------------------</span>
00240     <span class="comment">// Unimplemented operator ==</span>
00241     <span class="comment">// -----------------------------------------------------------------------</span>
00242     <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> XMLDateTime&amp; toCompare) <span class="keyword">const</span>;
00243 
00244 
00245     <span class="comment">// -----------------------------------------------------------------------</span>
00246     <span class="comment">//  Private data members</span>
00247     <span class="comment">//</span>
00248     <span class="comment">//     fValue[]</span>
00249     <span class="comment">//          object representation of date time.</span>
00250     <span class="comment">//</span>
00251     <span class="comment">//     fTimeZone[]</span>
00252     <span class="comment">//          temporary storage for normalization</span>
00253     <span class="comment">//</span>
00254     <span class="comment">//     fStart, fEnd</span>
00255     <span class="comment">//          pointers to the portion of fBuffer being parsed</span>
00256     <span class="comment">//</span>
00257     <span class="comment">//     fBuffer</span>
00258     <span class="comment">//          raw data to be parsed, own it.</span>
00259     <span class="comment">//</span>
00260     <span class="comment">// -----------------------------------------------------------------------</span>
00261 
00262     <span class="keywordtype">int</span>          fValue[TOTAL_SIZE];
00263     <span class="keywordtype">int</span>          fTimeZone[TIMEZONE_ARRAYSIZE];
00264     <span class="keywordtype">int</span>          fStart;
00265     <span class="keywordtype">int</span>          fEnd;
00266     <span class="keywordtype">int</span>          fBufferMaxLen;
00267 
00268     <span class="keywordtype">double</span>       fMiliSecond;
00269     <span class="keywordtype">bool</span>         fHasTime;
00270 
00271     XMLCh*       fBuffer;
00272     <a class="code" href="classMemoryManager.html">MemoryManager</a>* fMemoryManager;
00273 
<a name="l00274"></a><a class="code" href="classXMLDateTime.html#n0">00274</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classXSValue.html">XSValue</a>;
00275 };
00276 
<a name="l00277"></a><a class="code" href="classXMLDateTime.html#a3">00277</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classXMLDateTime.html#a3">XMLDateTime::setBuffer</a>(<span class="keyword">const</span> XMLCh* <span class="keyword">const</span> aString)
00278 {
00279     reset();
00280 
00281     fEnd = <a class="code" href="classXMLString.html#z1013_8">XMLString::stringLen</a>(aString);
00282     <span class="keywordflow">if</span> (fEnd &gt; 0) {
00283     
00284         <span class="keywordflow">if</span> (fEnd &gt; fBufferMaxLen)
00285         {
00286             fMemoryManager-&gt;<a class="code" href="classMemoryManager.html#z442_1">deallocate</a>(fBuffer);
00287             fBufferMaxLen = fEnd + 8;
00288             fBuffer = (XMLCh*) fMemoryManager-&gt;<a class="code" href="classMemoryManager.html#z442_0">allocate</a>((fBufferMaxLen+1) * <span class="keyword">sizeof</span>(XMLCh));
00289         }
00290 
00291         memcpy(fBuffer, aString, (fEnd+1) * <span class="keyword">sizeof</span>(XMLCh));
00292     }
00293 }
00294 
00295 <span class="keyword">inline</span> <span class="keywordtype">void</span> XMLDateTime::reset()
00296 {
00297     <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i=0; i &lt; TOTAL_SIZE; i++ )
00298         fValue[i] = 0;
00299 
00300     fMiliSecond   = 0;
00301     fHasTime      = false;
00302     fTimeZone[hh] = fTimeZone[mm] = 0;
00303     fStart = fEnd = 0;
00304 
00305     if (fBuffer)
00306         *fBuffer = 0;
00307 }
00308 
00309 inline <span class="keywordtype">void</span> XMLDateTime::copy(const XMLDateTime&amp; rhs)
00310 {
00311     <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i &lt; TOTAL_SIZE; i++ )
00312         fValue[i] = rhs.fValue[i];
00313 
00314     fMiliSecond   = rhs.fMiliSecond;
00315     fHasTime      = rhs.fHasTime;
00316     fTimeZone[hh] = rhs.fTimeZone[hh];
00317     fTimeZone[mm] = rhs.fTimeZone[mm];
00318     fStart = rhs.fStart;
00319     fEnd   = rhs.fEnd;
00320 
00321     if (fEnd &gt; 0)
00322     {
00323         <span class="keywordflow">if</span> (fEnd &gt; fBufferMaxLen)
00324         {
00325             fMemoryManager-&gt;<a class="code" href="classMemoryManager.html#z442_1">deallocate</a>(fBuffer);<span class="comment">//delete[] fBuffer;</span>
00326             fBufferMaxLen = rhs.fBufferMaxLen;
00327             fBuffer = (XMLCh*) fMemoryManager-&gt;<a class="code" href="classMemoryManager.html#z442_0">allocate</a>((fBufferMaxLen+1) * <span class="keyword">sizeof</span>(XMLCh));
00328         }
00329 
00330         memcpy(fBuffer, rhs.fBuffer, (fEnd+1) * <span class="keyword">sizeof</span>(XMLCh));
00331     }
00332 }
00333 
00334 <span class="keyword">inline</span> <span class="keywordtype">void</span> XMLDateTime::assertBuffer()<span class="keyword"> const</span>
00335 <span class="keyword"></span>{
00336     <span class="keywordflow">if</span> ( ( !fBuffer )            ||
00337          ( fBuffer[0] == chNull ) )
00338     {
00339         <a class="code" href="XMLException_8hpp.html#a7">ThrowXMLwithMemMgr</a>(SchemaDateTimeException
00340                , XMLExcepts::DateTime_Assert_Buffer_Fail
00341                , fMemoryManager);
00342     }
00343 
00344 }
00345 
00346 <span class="keyword">inline</span> <span class="keywordtype">void</span> XMLDateTime::initParser()
00347 {
00348     assertBuffer();
00349     fStart = 0;   <span class="comment">// to ensure scan from the very first beginning</span>
00350                   <span class="comment">// in case the pointer is updated accidentally by someone else.</span>
00351 }
00352 
00353 <span class="keyword">inline</span> <span class="keywordtype">bool</span> XMLDateTime::isNormalized()<span class="keyword"> const</span>
00354 <span class="keyword"></span>{
00355     <span class="keywordflow">return</span> ( fValue[utc] == UTC_STD ? <span class="keyword">true</span> : <span class="keyword">false</span> );
00356 }
00357 
00358 <span class="keyword">inline</span> <span class="keywordtype">int</span> XMLDateTime::getRetVal(<span class="keywordtype">int</span> c1, <span class="keywordtype">int</span> c2)
00359 {
00360     <span class="keywordflow">if</span> ((c1 == LESS_THAN    &amp;&amp; c2 == GREATER_THAN) ||
00361         (c1 == GREATER_THAN &amp;&amp; c2 == LESS_THAN)      )
00362     {
00363         <span class="keywordflow">return</span> <a class="code" href="classXMLNumber.html#w9w3">INDETERMINATE</a>;
00364     }
00365 
00366     <span class="keywordflow">return</span> ( c1 != INDETERMINATE ) ? c1 : c2;
00367 }
00368 
00369 <a class="code" href="XercesDefs_8hpp.html#a4">XERCES_CPP_NAMESPACE_END</a>
00370 
00371 <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>