亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tinyxml.h

?? tinyxml project for Visual Studio 2008. A small xml parser, the result is lib file for embedded ARM
?? H
?? 第 1 頁 / 共 5 頁
字號:
/*www.sourceforge.net/projects/tinyxmlOriginal code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com)This software is provided 'as-is', without any express or impliedwarranty. In no event will the authors be held liable for anydamages arising from the use of this software.Permission is granted to anyone to use this software for anypurpose, including commercial applications, and to alter it andredistribute it freely, subject to the following restrictions:1. The origin of this software must not be misrepresented; you mustnot claim that you wrote the original software. If you use thissoftware in a product, an acknowledgment in the product documentationwould be appreciated but is not required.2. Altered source versions must be plainly marked as such, andmust not be misrepresented as being the original software.3. This notice may not be removed or altered from any sourcedistribution.*/#ifndef TINYXML_INCLUDED#define TINYXML_INCLUDED#ifdef _MSC_VER#pragma warning( push )#pragma warning( disable : 4530 )#pragma warning( disable : 4786 )#endif#include <ctype.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>// Help out windows:#if defined( _DEBUG ) && !defined( DEBUG )#define DEBUG#endif#ifdef TIXML_USE_STL	#include <string> 	#include <iostream>	#include <sstream>	#define TIXML_STRING		std::string#else	#include "tinystr.h"	#define TIXML_STRING		TiXmlString#endif// Deprecated library function hell. Compilers want to use the// new safe versions. This probably doesn't fully address the problem,// but it gets closer. There are too many compilers for me to fully// test. If you get compilation troubles, undefine TIXML_SAFE//#define TIXML_SAFE#ifdef TIXML_SAFE	#if defined(_MSC_VER) && (_MSC_VER >= 1400 )		// Microsoft visual studio, version 2005 and higher.		#define TIXML_SNPRINTF _snprintf_s		#define TIXML_SNSCANF  _snscanf_s	#elif defined(_MSC_VER) && (_MSC_VER >= 1200 )		// Microsoft visual studio, version 6 and higher.		//#pragma message( "Using _sn* functions." )		#define TIXML_SNPRINTF _snprintf		#define TIXML_SNSCANF  _snscanf	#elif defined(__GNUC__) && (__GNUC__ >= 3 )		// GCC version 3 and higher.s		//#warning( "Using sn* functions." )		#define TIXML_SNPRINTF snprintf		#define TIXML_SNSCANF  snscanf	#endif#endif	class TiXmlDocument;class TiXmlElement;class TiXmlComment;class TiXmlUnknown;class TiXmlAttribute;class TiXmlText;class TiXmlDeclaration;class TiXmlParsingData;const int TIXML_MAJOR_VERSION = 2;const int TIXML_MINOR_VERSION = 5;const int TIXML_PATCH_VERSION = 2;/*	Internal structure for tracking location of items 	in the XML file.*/struct TiXmlCursor{	TiXmlCursor()		{ Clear(); }	void Clear()		{ row = col = -1; }	int row;	// 0 based.	int col;	// 0 based.};/**	If you call the Accept() method, it requires being passed a TiXmlVisitor	class to handle callbacks. For nodes that contain other nodes (Document, Element)	you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves	are simple called with Visit().	If you return 'true' from a Visit method, recursive parsing will continue. If you return	false, <b>no children of this node or its sibilings</b> will be Visited.	All flavors of Visit methods have a default implementation that returns 'true' (continue 	visiting). You need to only override methods that are interesting to you.	Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting.	You should never change the document from a callback.	@sa TiXmlNode::Accept()*/class TiXmlVisitor{public:	virtual ~TiXmlVisitor() {}	/// Visit a document.	virtual bool VisitEnter( const TiXmlDocument& doc )	{ return true; }	/// Visit a document.	virtual bool VisitExit( const TiXmlDocument& doc )	{ return true; }	/// Visit an element.	virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute )	{ return true; }	/// Visit an element.	virtual bool VisitExit( const TiXmlElement& element )											{ return true; }	/// Visit a declaration	virtual bool Visit( const TiXmlDeclaration& declaration )		{ return true; }	/// Visit a text node	virtual bool Visit( const TiXmlText& text )						{ return true; }	/// Visit a comment node	virtual bool Visit( const TiXmlComment& comment )				{ return true; }	/// Visit an unknow node	virtual bool Visit( const TiXmlUnknown& unknown )				{ return true; }};// Only used by Attribute::Query functionsenum { 	TIXML_SUCCESS,	TIXML_NO_ATTRIBUTE,	TIXML_WRONG_TYPE};// Used by the parsing routines.enum TiXmlEncoding{	TIXML_ENCODING_UNKNOWN,	TIXML_ENCODING_UTF8,	TIXML_ENCODING_LEGACY};const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN;/** TiXmlBase is a base class for every class in TinyXml.	It does little except to establish that TinyXml classes	can be printed and provide some utility functions.	In XML, the document and elements can contain	other elements and other types of nodes.	@verbatim	A Document can contain:	Element	(container or leaf)							Comment (leaf)							Unknown (leaf)							Declaration( leaf )	An Element can contain:	Element (container or leaf)							Text	(leaf)							Attributes (not on tree)							Comment (leaf)							Unknown (leaf)	A Decleration contains: Attributes (not on tree)	@endverbatim*/class TiXmlBase{	friend class TiXmlNode;	friend class TiXmlElement;	friend class TiXmlDocument;public:	TiXmlBase()	:	userData(0)		{}	virtual ~TiXmlBase()			{}	/**	All TinyXml classes can print themselves to a filestream		or the string class (TiXmlString in non-STL mode, std::string		in STL mode.) Either or both cfile and str can be null.				This is a formatted print, and will insert 		tabs and newlines.				(For an unformatted stream, use the << operator.)	*/	virtual void Print( FILE* cfile, int depth ) const = 0;	/**	The world does not agree on whether white space should be kept or		not. In order to make everyone happy, these global, static functions		are provided to set whether or not TinyXml will condense all white space		into a single space or not. The default is to condense. Note changing this		value is not thread safe.	*/	static void SetCondenseWhiteSpace( bool condense )		{ condenseWhiteSpace = condense; }	/// Return the current white space setting.	static bool IsWhiteSpaceCondensed()						{ return condenseWhiteSpace; }	/** Return the position, in the original source file, of this node or attribute.		The row and column are 1-based. (That is the first row and first column is		1,1). If the returns values are 0 or less, then the parser does not have		a row and column value.		Generally, the row and column value will be set when the TiXmlDocument::Load(),		TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set		when the DOM was created from operator>>.		The values reflect the initial load. Once the DOM is modified programmatically		(by adding or changing nodes and attributes) the new values will NOT update to		reflect changes in the document.		There is a minor performance cost to computing the row and column. Computation		can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value.		@sa TiXmlDocument::SetTabSize()	*/	int Row() const			{ return location.row + 1; }	int Column() const		{ return location.col + 1; }	///< See Row()	void  SetUserData( void* user )			{ userData = user; }	///< Set a pointer to arbitrary user data.	void* GetUserData()						{ return userData; }	///< Get a pointer to arbitrary user data.	const void* GetUserData() const 		{ return userData; }	///< Get a pointer to arbitrary user data.	// Table that returs, for a given lead byte, the total number of bytes	// in the UTF-8 sequence.	static const int utf8ByteTable[256];	virtual const char* Parse(	const char* p, 								TiXmlParsingData* data, 								TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0;	enum	{		TIXML_NO_ERROR = 0,		TIXML_ERROR,		TIXML_ERROR_OPENING_FILE,		TIXML_ERROR_OUT_OF_MEMORY,		TIXML_ERROR_PARSING_ELEMENT,		TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME,		TIXML_ERROR_READING_ELEMENT_VALUE,		TIXML_ERROR_READING_ATTRIBUTES,		TIXML_ERROR_PARSING_EMPTY,		TIXML_ERROR_READING_END_TAG,		TIXML_ERROR_PARSING_UNKNOWN,		TIXML_ERROR_PARSING_COMMENT,		TIXML_ERROR_PARSING_DECLARATION,		TIXML_ERROR_DOCUMENT_EMPTY,		TIXML_ERROR_EMBEDDED_NULL,		TIXML_ERROR_PARSING_CDATA,		TIXML_ERROR_DOCUMENT_TOP_ONLY,		TIXML_ERROR_STRING_COUNT	};protected:	static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding );	inline static bool IsWhiteSpace( char c )			{ 		return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' ); 	}	inline static bool IsWhiteSpace( int c )	{		if ( c < 256 )			return IsWhiteSpace( (char) c );		return false;	// Again, only truly correct for English/Latin...but usually works.	}	#ifdef TIXML_USE_STL	static bool	StreamWhiteSpace( std::istream * in, TIXML_STRING * tag );	static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag );	#endif	/*	Reads an XML name into the string provided. Returns		a pointer just past the last character of the name,		or 0 if the function has an error.	*/	static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding );	/*	Reads text. Returns a pointer past the given end tag.		Wickedly complex options, but it keeps the (sensitive) code in one place.	*/	static const char* ReadText(	const char* in,				// where to start									TIXML_STRING* text,			// the string read									bool ignoreWhiteSpace,		// whether to keep the white space									const char* endTag,			// what ends this text									bool ignoreCase,			// whether to ignore case in the end tag									TiXmlEncoding encoding );	// the current encoding	// If an entity has been found, transform it into a character.	static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding );	// Get a character, while interpreting entities.	// The length can be from 0 to 4 bytes.	inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding )	{		assert( p );		if ( encoding == TIXML_ENCODING_UTF8 )		{			*length = utf8ByteTable[ *((const unsigned char*)p) ];			assert( *length >= 0 && *length < 5 );		}		else		{			*length = 1;		}		if ( *length == 1 )		{			if ( *p == '&' )				return GetEntity( p, _value, length, encoding );			*_value = *p;			return p+1;		}		else if ( *length )		{			//strncpy( _value, p, *length );	// lots of compilers don't like this function (unsafe),												// and the null terminator isn't needed			for( int i=0; p[i] && i<*length; ++i ) {				_value[i] = p[i];			}			return p + (*length);		}		else		{			// Not valid text.			return 0;		}	}	// Puts a string to a stream, expanding entities as it goes.	// Note this should not contian the '<', '>', etc, or they will be transformed into entities!	static void PutString( const TIXML_STRING& str, TIXML_STRING* out );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区不卡| 欧美性生活一区| 精品国产一区二区国模嫣然| 视频一区免费在线观看| 欧美日韩国产免费一区二区| 亚洲国产精品久久久男人的天堂| 91理论电影在线观看| 亚洲精品亚洲人成人网在线播放| 91色.com| 亚洲mv在线观看| 亚洲精品在线免费观看视频| 亚洲成av人片观看| 中文字幕av不卡| 欧美性大战久久久| 精久久久久久久久久久| 中文字幕乱码日本亚洲一区二区| av在线免费不卡| 午夜精品久久久久久久99水蜜桃| 日韩美女天天操| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲成人先锋电影| 亚洲欧洲av另类| 久久美女艺术照精彩视频福利播放 | 日韩视频免费观看高清完整版在线观看| 欧美日本在线一区| 亚洲宅男天堂在线观看无病毒| 久久精品国产一区二区| 日本一区二区三区国色天香| 欧美美女一区二区三区| 一本大道av一区二区在线播放| 国产欧美一区二区精品性| 日本乱人伦一区| 91网站在线播放| 99综合影院在线| 99麻豆久久久国产精品免费| 国产91丝袜在线观看| 经典三级在线一区| 国模套图日韩精品一区二区| 老司机免费视频一区二区| 日本麻豆一区二区三区视频| 亚洲福利一区二区三区| 亚洲国产成人av好男人在线观看| 亚洲乱码中文字幕| 亚洲成人av福利| 日韩av一级电影| 国产乱码精品1区2区3区| 国产一区二区电影| 国产老妇另类xxxxx| youjizz久久| 日韩欧美在线影院| 国产精品嫩草影院com| 亚洲老妇xxxxxx| 日韩av一区二区三区四区| 日韩国产成人精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 精品午夜久久福利影院| 91在线国产福利| 久久夜色精品国产噜噜av| 亚洲人成精品久久久久| 国产亚洲人成网站| 91精品国产一区二区人妖| www.亚洲色图.com| 国模冰冰炮一区二区| 亚洲欧美偷拍卡通变态| 欧美高清精品3d| 国产高清不卡二三区| 日韩欧美一区电影| 亚洲电影欧美电影有声小说| 成人综合在线观看| 久久精品亚洲精品国产欧美kt∨| 午夜精品福利一区二区三区蜜桃| 不卡一区二区在线| 国产精品久久福利| 成人一区在线看| 欧美激情一区二区三区在线| 国产又黄又大久久| 久久久av毛片精品| 国内成人免费视频| 欧美福利电影网| 亚洲色图制服丝袜| kk眼镜猥琐国模调教系列一区二区| 久久你懂得1024| 国产一区二区三区久久久| 精品99一区二区| 国产v综合v亚洲欧| 国产精品高潮久久久久无| caoporen国产精品视频| 亚洲欧洲av色图| 在线不卡欧美精品一区二区三区| 一区二区三区成人| 欧美一卡2卡3卡4卡| 国产成人亚洲综合色影视| 中文字幕亚洲在| 欧美一区二区三区婷婷月色| 韩国精品在线观看| 亚洲欧美一区二区视频| 欧美日韩国产首页| 亚洲天堂福利av| 激情深爱一区二区| 欧美色图激情小说| 亚洲色图清纯唯美| 国产成人综合自拍| 日本一区二区久久| 精品一区二区三区视频| 国产福利一区二区| 日本一区二区免费在线观看视频| 成人不卡免费av| 国产成人精品1024| 久久99国产精品免费网站| 亚洲视频免费在线观看| 精品国产乱码久久久久久1区2区| 91免费看视频| 欧美伊人精品成人久久综合97| 国产成人亚洲综合a∨婷婷图片| 日韩va亚洲va欧美va久久| 一区二区三区四区视频精品免费 | 在线播放91灌醉迷j高跟美女| 国产一区二区91| 国产一区二区影院| 国产尤物一区二区在线| 九九国产精品视频| 麻豆久久久久久久| 国产一区二区三区在线看麻豆| 久久精品国产亚洲aⅴ| 成人午夜短视频| 欧洲一区二区三区在线| 色一区在线观看| 欧美日韩国产综合草草| 欧美一级二级在线观看| 91日韩精品一区| 成人午夜又粗又硬又大| 不卡一区二区在线| 欧美日韩一区二区三区不卡| 欧美日韩另类一区| 久久久久久久久久美女| 亚洲欧美激情插| 久久99热99| 欧美日韩午夜影院| 久久伊人蜜桃av一区二区| 国产91丝袜在线播放| 蜜桃视频一区二区三区| 国产亚洲一二三区| 秋霞午夜鲁丝一区二区老狼| 亚洲成人在线免费| 亚洲成av人**亚洲成av**| 日本一区二区三区在线观看| 欧美精品久久天天躁| 最新国产精品久久精品| 一道本成人在线| 久久久亚洲综合| 精品在线观看视频| 日韩视频免费直播| 亚洲国产日日夜夜| 日本道免费精品一区二区三区| 久久久亚洲欧洲日产国码αv| 日韩精品乱码免费| 欧美日韩中文另类| 一区二区三区日韩精品视频| 福利电影一区二区| 国产日韩欧美高清| 另类综合日韩欧美亚洲| 欧美高清视频不卡网| 天堂影院一区二区| 777色狠狠一区二区三区| 婷婷六月综合亚洲| 91精品国产91热久久久做人人| 亚洲在线免费播放| 欧美日本免费一区二区三区| 亚洲成av人影院| 欧美一级一区二区| 国产在线精品一区二区三区不卡| 欧美va亚洲va香蕉在线| 国产久卡久卡久卡久卡视频精品| 中文文精品字幕一区二区| 国产乱码精品一区二区三| 国产欧美日韩中文久久| 91亚洲精品久久久蜜桃网站 | 久久久久久久久久久99999| 丁香啪啪综合成人亚洲小说| 国产欧美精品一区二区色综合朱莉 | 91黄色免费观看| 蜜芽一区二区三区| 国产精品系列在线| 91精品国产色综合久久不卡蜜臀| 性做久久久久久免费观看| 在线不卡免费av| 亚洲成人先锋电影| 69久久夜色精品国产69蝌蚪网| 一区二区三区成人| 国产成人在线色| 精品毛片乱码1区2区3区| 亚洲午夜免费福利视频| 91亚洲国产成人精品一区二区三 | 欧美日韩国产123区| 懂色av一区二区在线播放| 亚洲图片欧美视频| 欧美激情综合在线| 国产亚洲视频系列| 日韩一区二区三区观看| 国产成人av电影在线|