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

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

?? tinyxml.h

?? 一個游戲源碼,初學者可以用來學習
?? 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		#define TIXML_SSCANF   sscanf_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		#define TIXML_SSCANF   sscanf	#elif defined(__GNUC__) && (__GNUC__ >= 3 )		// GCC version 3 and higher.s		//#warning( "Using sn* functions." )		#define TIXML_SNPRINTF snprintf		#define TIXML_SNSCANF  snscanf		#define TIXML_SSCANF   sscanf	#else		#define TIXML_SSCANF   sscanf	#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 = 3;/*	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;	/** Expands entities in a string. Note this should not contian the tag's '<', '>', etc, 		or they will be transformed into entities!	*/	static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out );	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;		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产免费一区二区 | 在线观看视频一区二区欧美日韩| 激情综合亚洲精品| 亚洲国产另类av| 亚洲成人一区在线| 亚洲国产精品嫩草影院| 亚洲国产欧美在线| 五月激情综合色| 久久er99热精品一区二区| 麻豆国产欧美日韩综合精品二区| 琪琪久久久久日韩精品| 国产在线视频一区二区三区| 国产毛片精品视频| 成人动漫av在线| 在线欧美一区二区| 91精品国产综合久久精品| 欧美一区二区成人| 国产人成亚洲第一网站在线播放| 日本一区二区视频在线| 亚洲精品ww久久久久久p站| 亚洲国产精品久久久久秋霞影院| 午夜av电影一区| 久久国产视频网| 成人h动漫精品一区二区| 在线观看亚洲一区| 精品处破学生在线二十三| 国产精品美女视频| 日韩电影在线看| zzijzzij亚洲日本少妇熟睡| 欧美日韩一区国产| 亚洲国产精品t66y| 性久久久久久久久久久久| 国产一区二区三区免费观看| 在线观看亚洲精品视频| 久久女同互慰一区二区三区| 亚洲裸体xxx| 久99久精品视频免费观看| 日本韩国视频一区二区| 久久只精品国产| 婷婷开心久久网| www.成人网.com| 日韩美一区二区三区| 一区二区在线观看免费视频播放| 韩国一区二区视频| 欧美日韩一区二区三区在线看| 久久精品亚洲一区二区三区浴池| 亚洲国产成人av网| 成人动漫一区二区在线| 精品99一区二区三区| 亚洲大尺度视频在线观看| 成人蜜臀av电影| 日韩精品专区在线| 丝袜美腿亚洲一区二区图片| 色呦呦一区二区三区| 国产亚洲精品超碰| 韩国女主播一区二区三区| 欧美日本免费一区二区三区| 最新国产成人在线观看| 成人手机在线视频| 精品成人一区二区三区四区| 日韩精品免费视频人成| 欧美日韩一区二区三区在线| 亚洲免费看黄网站| 91在线观看高清| 国产精品九色蝌蚪自拍| 粉嫩在线一区二区三区视频| 欧美成人aa大片| 美日韩一区二区| 91精品国产综合久久久久久久| 亚洲图片欧美一区| 欧美日韩视频不卡| 性久久久久久久久久久久| 欧美艳星brazzers| 性久久久久久久| 欧美另类变人与禽xxxxx| 亚洲一区二区视频在线观看| 日本电影欧美片| 亚洲九九爱视频| 在线精品视频一区二区三四 | 欧美一区三区二区| 首页国产欧美久久| 日韩欧美激情在线| 国产剧情一区在线| 国产精品欧美一区二区三区| 99re热这里只有精品免费视频| 中文字幕在线播放不卡一区| 色欧美乱欧美15图片| 午夜精品一区在线观看| 日韩一区二区在线观看| 国产精品亚洲综合一区在线观看| 日本一区二区不卡视频| 99re这里只有精品视频首页| 一区二区三区在线视频观看| 欧美精品自拍偷拍动漫精品| 人人爽香蕉精品| 国产亚洲成aⅴ人片在线观看 | 国产激情一区二区三区桃花岛亚洲| 久久香蕉国产线看观看99| 国产精品亚洲成人| 一区二区三区美女| 欧美精品黑人性xxxx| 国产精品996| 一区二区三区在线视频免费| 日韩一区二区在线观看视频| 成人动漫视频在线| 五月激情六月综合| 国产精品电影一区二区三区| 欧美午夜片在线看| 国产xxx精品视频大全| 亚洲自拍另类综合| 久久网这里都是精品| 欧美性猛片xxxx免费看久爱| 久久不见久久见中文字幕免费| 国产精品毛片大码女人 | 久久国产尿小便嘘嘘| 国产精品欧美一级免费| 欧美一区二区三区播放老司机| 国产a精品视频| 日韩在线一二三区| 国产精品久线观看视频| 日韩欧美成人激情| 欧美中文字幕亚洲一区二区va在线 | 韩日精品视频一区| 色国产精品一区在线观看| 日韩免费高清av| 精品一区二区综合| 中文字幕一区二区三区四区 | 99视频精品在线| 视频在线观看91| 亚洲欧美乱综合| 精品国产精品一区二区夜夜嗨| 日本精品一级二级| 成人高清免费在线播放| 国产在线精品免费| 日韩成人av影视| 婷婷开心激情综合| 亚洲一二三四在线观看| 亚洲女与黑人做爰| 国产精品麻豆久久久| 精品少妇一区二区三区| 欧美一区二区二区| 在线成人高清不卡| 欧美日本在线看| 欧美丝袜自拍制服另类| 欧美性色aⅴ视频一区日韩精品| 99精品国产视频| 99精品视频中文字幕| 99国产精品一区| 色欧美88888久久久久久影院| 91一区在线观看| 91成人在线精品| 在线观看日韩毛片| 欧美揉bbbbb揉bbbbb| 欧美日免费三级在线| 欧美丰满少妇xxxxx高潮对白| 欧美日韩精品二区第二页| 欧美亚洲国产bt| 欧美巨大另类极品videosbest | 久久影院午夜片一区| 精品久久一区二区三区| 91精品国产高清一区二区三区| 欧美高清视频一二三区| 日韩女优电影在线观看| 国产亚洲一区二区三区四区 | 国产成人精品一区二区三区四区| 久久99精品国产| 久久成人综合网| 国产1区2区3区精品美女| 成人av在线观| 欧美日韩精品福利| 精品成人一区二区| **欧美大码日韩| 日韩精品一区第一页| 国产伦精品一区二区三区免费| 国产精品 欧美精品| 91福利视频网站| 欧美一区二区三区免费视频 | 一区二区三区精品在线观看| 亚州成人在线电影| 国产福利精品导航| 色综合久久久久综合体桃花网| 欧美电影影音先锋| 国产三级精品三级| 亚洲一级片在线观看| 精品一区二区成人精品| 91免费观看在线| 久久综合色一综合色88| 亚洲欧美一区二区不卡| 蜜桃视频免费观看一区| 成人性视频免费网站| 欧美丰满少妇xxxxx高潮对白| 国产精品无圣光一区二区| 五月婷婷久久丁香| 成人黄色在线看| 91精品欧美久久久久久动漫| 国产精品丝袜一区| 精品在线一区二区| 在线观看不卡一区| 国产精品久久免费看| 极品少妇一区二区|