⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tinyxml_8h-source.html

📁 xml文件处理多平台类
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00182 00183     <span class="comment">// Table that returs, for a given lead byte, the total number of bytes</span>00184     <span class="comment">// in the UTF-8 sequence.</span>00185     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> utf8ByteTable[256];00186 00187     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* Parse(  <span class="keyword">const</span> <span class="keywordtype">char</span>* p, 00188                                 TiXmlParsingData* data, 00189                                 TiXmlEncoding encoding <span class="comment">/*= TIXML_ENCODING_UNKNOWN */</span> ) = 0;00190 00191 <span class="keyword">protected</span>:00192 00193     <span class="comment">// See STL_STRING_BUG</span>00194     <span class="comment">// Utility class to overcome a bug.</span>00195     <span class="keyword">class </span>StringToBuffer00196     {00197       <span class="keyword">public</span>:00198         StringToBuffer( <span class="keyword">const</span> TIXML_STRING&amp; str );00199         ~StringToBuffer();00200         <span class="keywordtype">char</span>* buffer;00201     };00202 00203     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>*  SkipWhiteSpace( <span class="keyword">const</span> <span class="keywordtype">char</span>*, TiXmlEncoding encoding );00204     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span>  IsWhiteSpace( <span class="keywordtype">char</span> c )      00205     { 00206         <span class="keywordflow">return</span> ( isspace( (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) c ) || c == <span class="charliteral">'\n'</span> || c == <span class="charliteral">'\r'</span> ); 00207     }00208 00209     <span class="keyword">virtual</span> <span class="keywordtype">void</span> StreamOut (TIXML_OSTREAM *) <span class="keyword">const</span> = 0;00210 00211 <span class="preprocessor">    #ifdef TIXML_USE_STL</span>00212 <span class="preprocessor"></span>        <span class="keyword">static</span> <span class="keywordtype">bool</span> StreamWhiteSpace( TIXML_ISTREAM * in, TIXML_STRING * tag );00213         <span class="keyword">static</span> <span class="keywordtype">bool</span> StreamTo( TIXML_ISTREAM * in, <span class="keywordtype">int</span> character, TIXML_STRING * tag );00214 <span class="preprocessor">    #endif</span>00215 <span class="preprocessor"></span>00216     <span class="comment">/*  Reads an XML name into the string provided. Returns</span>00217 <span class="comment">        a pointer just past the last character of the name,</span>00218 <span class="comment">        or 0 if the function has an error.</span>00219 <span class="comment">    */</span>00220     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ReadName( <span class="keyword">const</span> <span class="keywordtype">char</span>* p, TIXML_STRING* name, TiXmlEncoding encoding );00221 00222     <span class="comment">/*  Reads text. Returns a pointer past the given end tag.</span>00223 <span class="comment">        Wickedly complex options, but it keeps the (sensitive) code in one place.</span>00224 <span class="comment">    */</span>00225     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* ReadText(    <span class="keyword">const</span> <span class="keywordtype">char</span>* in,             <span class="comment">// where to start</span>00226                                     TIXML_STRING* text,         <span class="comment">// the string read</span>00227                                     <span class="keywordtype">bool</span> ignoreWhiteSpace,      <span class="comment">// whether to keep the white space</span>00228                                     <span class="keyword">const</span> <span class="keywordtype">char</span>* endTag,         <span class="comment">// what ends this text</span>00229                                     <span class="keywordtype">bool</span> ignoreCase,            <span class="comment">// whether to ignore case in the end tag</span>00230                                     TiXmlEncoding encoding );   <span class="comment">// the current encoding</span>00231 00232     <span class="comment">// If an entity has been found, transform it into a character.</span>00233     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* GetEntity( <span class="keyword">const</span> <span class="keywordtype">char</span>* in, <span class="keywordtype">char</span>* value, <span class="keywordtype">int</span>* length, TiXmlEncoding encoding );00234 00235     <span class="comment">// Get a character, while interpreting entities.</span>00236     <span class="comment">// The length can be from 0 to 4 bytes.</span>00237     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* GetChar( <span class="keyword">const</span> <span class="keywordtype">char</span>* p, <span class="keywordtype">char</span>* _value, <span class="keywordtype">int</span>* length, TiXmlEncoding encoding )00238     {00239         assert( p );00240         <span class="keywordflow">if</span> ( encoding == TIXML_ENCODING_UTF8 )00241         {00242             *length = utf8ByteTable[ *((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)p) ];00243             assert( *length &gt;= 0 &amp;&amp; *length &lt; 5 );00244         }00245         <span class="keywordflow">else</span>00246         {00247             *length = 1;00248         }00249 00250         <span class="keywordflow">if</span> ( *length == 1 )00251         {00252             <span class="keywordflow">if</span> ( *p == <span class="charliteral">'&amp;'</span> )00253                 <span class="keywordflow">return</span> GetEntity( p, _value, length, encoding );00254             *_value = *p;00255             <span class="keywordflow">return</span> p+1;00256         }00257         <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( *length )00258         {00259             strncpy( _value, p, *length );00260             <span class="keywordflow">return</span> p + (*length);00261         }00262         <span class="keywordflow">else</span>00263         {00264             <span class="comment">// Not valid text.</span>00265             <span class="keywordflow">return</span> 0;00266         }00267     }00268 00269     <span class="comment">// Puts a string to a stream, expanding entities as it goes.</span>00270     <span class="comment">// Note this should not contian the '&lt;', '&gt;', etc, or they will be transformed into entities!</span>00271     <span class="keyword">static</span> <span class="keywordtype">void</span> PutString( <span class="keyword">const</span> TIXML_STRING&amp; str, TIXML_OSTREAM* out );00272 00273     <span class="keyword">static</span> <span class="keywordtype">void</span> PutString( <span class="keyword">const</span> TIXML_STRING&amp; str, TIXML_STRING* out );00274 00275     <span class="comment">// Return true if the next characters in the stream are any of the endTag sequences.</span>00276     <span class="comment">// Ignore case only works for english, and should only be relied on when comparing</span>00277     <span class="comment">// to Engilish words: StringEqual( p, "version", true ) is fine.</span>00278     <span class="keyword">static</span> <span class="keywordtype">bool</span> StringEqual(    <span class="keyword">const</span> <span class="keywordtype">char</span>* p,00279                                 <span class="keyword">const</span> <span class="keywordtype">char</span>* endTag,00280                                 <span class="keywordtype">bool</span> ignoreCase,00281                                 TiXmlEncoding encoding );00282 00283 00284     <span class="keyword">enum</span>00285     {00286         TIXML_NO_ERROR = 0,00287         TIXML_ERROR,00288         TIXML_ERROR_OPENING_FILE,00289         TIXML_ERROR_OUT_OF_MEMORY,00290         TIXML_ERROR_PARSING_ELEMENT,00291         TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME,00292         TIXML_ERROR_READING_ELEMENT_VALUE,00293         TIXML_ERROR_READING_ATTRIBUTES,00294         TIXML_ERROR_PARSING_EMPTY,00295         TIXML_ERROR_READING_END_TAG,00296         TIXML_ERROR_PARSING_UNKNOWN,00297         TIXML_ERROR_PARSING_COMMENT,00298         TIXML_ERROR_PARSING_DECLARATION,00299         TIXML_ERROR_DOCUMENT_EMPTY,00300         TIXML_ERROR_EMBEDDED_NULL,00301 00302         TIXML_ERROR_STRING_COUNT00303     };00304     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* errorString[ TIXML_ERROR_STRING_COUNT ];00305 00306     TiXmlCursor location;00307 <a name="l00309"></a><a class="code" href="classTiXmlBase.html#n1">00309</a>     <span class="keywordtype">void</span>*           <a class="code" href="classTiXmlBase.html#n1">userData</a>;00310     00311     <span class="comment">// None of these methods are reliable for any language except English.</span>00312     <span class="comment">// Good for approximation, not great for accuracy.</span>00313     <span class="keyword">static</span> <span class="keywordtype">int</span> IsAlpha( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> anyByte, TiXmlEncoding encoding );00314     <span class="keyword">static</span> <span class="keywordtype">int</span> IsAlphaNum( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> anyByte, TiXmlEncoding encoding );00315     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">int</span> ToLower( <span class="keywordtype">int</span> v, TiXmlEncoding encoding )00316     {00317         <span class="keywordflow">if</span> ( encoding == TIXML_ENCODING_UTF8 )00318         {00319             <span class="keywordflow">if</span> ( v &lt; 128 ) <span class="keywordflow">return</span> tolower( v );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -