📄 tinyxml_8h-source.html
字号:
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& 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 >= 0 && *length < 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">'&'</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 '<', '>', 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& str, TIXML_OSTREAM* out );00272 00273 <span class="keyword">static</span> <span class="keywordtype">void</span> PutString( <span class="keyword">const</span> TIXML_STRING& 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 < 128 ) <span class="keywordflow">return</span> tolower( v );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -