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

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

?? tinyxmlparser.cpp

?? 一個游戲源碼,初學者可以用來學習
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/*www.sourceforge.net/projects/tinyxmlOriginal code (2.0 and earlier )copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com)This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:1. The origin of this software must not be misrepresented; you must not 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, and must not be misrepresented as being the original software.3. This notice may not be removed or altered from any source distribution.*/#include "stdafx.h"#include <ctype.h>#include <stddef.h>#include "tinyxml.h"//#define DEBUG_PARSER#if defined( DEBUG_PARSER )#	if defined( DEBUG ) && defined( _MSC_VER )#		include <windows.h>#		define TIXML_LOG OutputDebugString#	else#		define TIXML_LOG printf#	endif#endif// Note tha "PutString" hardcodes the same list. This// is less flexible than it appears. Changing the entries// or order will break putstring.	TiXmlBase::Entity TiXmlBase::entity[ NUM_ENTITY ] = {	{ "&amp;",  5, '&' },	{ "&lt;",   4, '<' },	{ "&gt;",   4, '>' },	{ "&quot;", 6, '\"' },	{ "&apos;", 6, '\'' }};// Bunch of unicode info at://		http://www.unicode.org/faq/utf_bom.html// Including the basic of this table, which determines the #bytes in the// sequence from the lead byte. 1 placed for invalid sequences --// although the result will be junk, pass it through as much as possible.// Beware of the non-characters in UTF-8:	//				ef bb bf (Microsoft "lead bytes")//				ef bf be//				ef bf bf const unsigned char TIXML_UTF_LEAD_0 = 0xefU;const unsigned char TIXML_UTF_LEAD_1 = 0xbbU;const unsigned char TIXML_UTF_LEAD_2 = 0xbfU;const int TiXmlBase::utf8ByteTable[256] = {	//	0	1	2	3	4	5	6	7	8	9	a	b	c	d	e	f		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x00		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x10		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x20		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x30		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x40		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x50		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x60		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x70	End of ASCII range		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x80 0x80 to 0xc1 invalid		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x90 		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0xa0 		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0xb0 		1,	1,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	// 0xc0 0xc2 to 0xdf 2 byte		2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	// 0xd0		3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	// 0xe0 0xe0 to 0xef 3 byte		4,	4,	4,	4,	4,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1	// 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid};void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ){	const unsigned long BYTE_MASK = 0xBF;	const unsigned long BYTE_MARK = 0x80;	const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };	if (input < 0x80) 		*length = 1;	else if ( input < 0x800 )		*length = 2;	else if ( input < 0x10000 )		*length = 3;	else if ( input < 0x200000 )		*length = 4;	else		{ *length = 0; return; }	// This code won't covert this correctly anyway.	output += *length;	// Scary scary fall throughs.	switch (*length) 	{		case 4:			--output; 			*output = (char)((input | BYTE_MARK) & BYTE_MASK); 			input >>= 6;		case 3:			--output; 			*output = (char)((input | BYTE_MARK) & BYTE_MASK); 			input >>= 6;		case 2:			--output; 			*output = (char)((input | BYTE_MARK) & BYTE_MASK); 			input >>= 6;		case 1:			--output; 			*output = (char)(input | FIRST_BYTE_MARK[*length]);	}}/*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ ){	// This will only work for low-ascii, everything else is assumed to be a valid	// letter. I'm not sure this is the best approach, but it is quite tricky trying	// to figure out alhabetical vs. not across encoding. So take a very 	// conservative approach.//	if ( encoding == TIXML_ENCODING_UTF8 )//	{		if ( anyByte < 127 )			return isalpha( anyByte );		else			return 1;	// What else to do? The unicode set is huge...get the english ones right.//	}//	else//	{//		return isalpha( anyByte );//	}}/*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ ){	// This will only work for low-ascii, everything else is assumed to be a valid	// letter. I'm not sure this is the best approach, but it is quite tricky trying	// to figure out alhabetical vs. not across encoding. So take a very 	// conservative approach.//	if ( encoding == TIXML_ENCODING_UTF8 )//	{		if ( anyByte < 127 )			return isalnum( anyByte );		else			return 1;	// What else to do? The unicode set is huge...get the english ones right.//	}//	else//	{//		return isalnum( anyByte );//	}}class TiXmlParsingData{	friend class TiXmlDocument;  public:	void Stamp( const char* now, TiXmlEncoding encoding );	const TiXmlCursor& Cursor()	{ return cursor; }  private:	// Only used by the document!	TiXmlParsingData( const char* start, int _tabsize, int row, int col )	{		assert( start );		stamp = start;		tabsize = _tabsize;		cursor.row = row;		cursor.col = col;	}	TiXmlCursor		cursor;	const char*		stamp;	int				tabsize;};void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding ){	assert( now );	// Do nothing if the tabsize is 0.	if ( tabsize < 1 )	{		return;	}	// Get the current row, column.	int row = cursor.row;	int col = cursor.col;	const char* p = stamp;	assert( p );	while ( p < now )	{		// Treat p as unsigned, so we have a happy compiler.		const unsigned char* pU = (const unsigned char*)p;		// Code contributed by Fletcher Dunn: (modified by lee)		switch (*pU) {			case 0:				// We *should* never get here, but in case we do, don't				// advance past the terminating null character, ever				return;			case '\r':				// bump down to the next line				++row;				col = 0;								// Eat the character				++p;				// Check for \r\n sequence, and treat this as a single character				if (*p == '\n') {					++p;				}				break;			case '\n':				// bump down to the next line				++row;				col = 0;				// Eat the character				++p;				// Check for \n\r sequence, and treat this as a single				// character.  (Yes, this bizarre thing does occur still				// on some arcane platforms...)				if (*p == '\r') {					++p;				}				break;			case '\t':				// Eat the character				++p;				// Skip to next tab stop				col = (col / tabsize + 1) * tabsize;				break;			case TIXML_UTF_LEAD_0:				if ( encoding == TIXML_ENCODING_UTF8 )				{					if ( *(p+1) && *(p+2) )					{						// In these cases, don't advance the column. These are						// 0-width spaces.						if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 )							p += 3;							else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU )							p += 3;							else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU )							p += 3;							else							{ p +=3; ++col; }	// A normal character.					}				}				else				{					++p;					++col;				}				break;			default:				if ( encoding == TIXML_ENCODING_UTF8 )				{					// Eat the 1 to 4 byte utf8 character.					int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)];					if ( step == 0 )						step = 1;		// Error case from bad encoding, but handle gracefully.					p += step;					// Just advance one column, of course.					++col;				}				else				{					++p;					++col;				}				break;		}	}	cursor.row = row;	cursor.col = col;	assert( cursor.row >= -1 );	assert( cursor.col >= -1 );	stamp = p;	assert( stamp );}const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding ){	if ( !p || !*p )	{		return 0;	}	if ( encoding == TIXML_ENCODING_UTF8 )	{		while ( *p )		{			const unsigned char* pU = (const unsigned char*)p;						// Skip the stupid Microsoft UTF-8 Byte order marks			if (	*(pU+0)==TIXML_UTF_LEAD_0				 && *(pU+1)==TIXML_UTF_LEAD_1 				 && *(pU+2)==TIXML_UTF_LEAD_2 )			{				p += 3;				continue;			}			else if(*(pU+0)==TIXML_UTF_LEAD_0				 && *(pU+1)==0xbfU				 && *(pU+2)==0xbeU )			{				p += 3;				continue;			}			else if(*(pU+0)==TIXML_UTF_LEAD_0				 && *(pU+1)==0xbfU				 && *(pU+2)==0xbfU )			{				p += 3;				continue;			}			if ( IsWhiteSpace( *p ) || *p == '\n' || *p =='\r' )		// Still using old rules for white space.				++p;			else				break;		}	}	else	{		while ( *p && IsWhiteSpace( *p ) || *p == '\n' || *p =='\r' )			++p;	}	return p;}#ifdef TIXML_USE_STL/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ){	for( ;; )	{		if ( !in->good() ) return false;		int c = in->peek();		// At this scope, we can't get to a document. So fail silently.		if ( !IsWhiteSpace( c ) || c <= 0 )			return true;		*tag += (char) in->get();	}}/*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag ){	//assert( character > 0 && character < 128 );	// else it won't work in utf-8	while ( in->good() )	{		int c = in->peek();		if ( c == character )			return true;		if ( c <= 0 )		// Silent failure: can't get document at this scope			return false;		in->get();		*tag += (char) c;	}	return false;}#endif// One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The// "assign" optimization removes over 10% of the execution time.//const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding ){	// Oddly, not supported on some comilers,	//name->clear();	// So use this:	*name = "";	assert( p );	// Names start with letters or underscores.	// Of course, in unicode, tinyxml has no idea what a letter *is*. The	// algorithm is generous.	//	// After that, they can be letters, underscores, numbers,	// hyphens, or colons. (Colons are valid ony for namespaces,	// but tinyxml can't tell namespaces from names.)	if (    p && *p 		 && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) )	{		const char* start = p;		while(		p && *p				&&	(		IsAlphaNum( (unsigned char ) *p, encoding ) 						 || *p == '_'						 || *p == '-'						 || *p == '.'						 || *p == ':' ) )		{			//(*name) += *p; // expensive			++p;		}		if ( p-start > 0 ) {			name->assign( start, p-start );		}		return p;	}	return 0;}const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding ){	// Presume an entity, and pull it out.    TIXML_STRING ent;	int i;	*length = 0;	if ( *(p+1) && *(p+1) == '#' && *(p+2) )	{		unsigned long ucs = 0;		ptrdiff_t delta = 0;		unsigned mult = 1;		if ( *(p+2) == 'x' )		{			// Hexadecimal.			if ( !*(p+3) ) return 0;			const char* q = p+3;			q = strchr( q, ';' );			if ( !q || !*q ) return 0;			delta = q-p;			--q;			while ( *q != 'x' )			{				if ( *q >= '0' && *q <= '9' )					ucs += mult * (*q - '0');				else if ( *q >= 'a' && *q <= 'f' )					ucs += mult * (*q - 'a' + 10);				else if ( *q >= 'A' && *q <= 'F' )					ucs += mult * (*q - 'A' + 10 );				else 					return 0;				mult *= 16;				--q;			}		}		else		{			// Decimal.			if ( !*(p+2) ) return 0;			const char* q = p+2;			q = strchr( q, ';' );			if ( !q || !*q ) return 0;			delta = q-p;			--q;			while ( *q != '#' )			{				if ( *q >= '0' && *q <= '9' )					ucs += mult * (*q - '0');				else 					return 0;				mult *= 10;				--q;			}		}		if ( encoding == TIXML_ENCODING_UTF8 )		{			// convert the UCS to UTF-8			ConvertUTF32ToUTF8( ucs, value, length );		}		else		{			*value = (char)ucs;			*length = 1;		}		return p + delta + 1;	}	// Now try to match it.	for( i=0; i<NUM_ENTITY; ++i )	{		if ( strncmp( entity[i].str, p, entity[i].strLength ) == 0 )		{			assert( strlen( entity[i].str ) == entity[i].strLength );			*value = entity[i].chr;			*length = 1;			return ( p + entity[i].strLength );		}	}	// So it wasn't an entity, its unrecognized, or something like that.	*value = *p;	// Don't put back the last one, since we return it!	//*length = 1;	// Leave unrecognized entities - this doesn't really work.					// Just writes strange XML.	return p+1;}bool TiXmlBase::StringEqual( const char* p,							 const char* tag,							 bool ignoreCase,							 TiXmlEncoding encoding ){	assert( p );	assert( tag );	if ( !p || !*p )	{		assert( 0 );		return false;	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色综合久久综合| 欧美国产日韩精品免费观看| 一区二区不卡在线视频 午夜欧美不卡在| 国产福利精品一区| 中文字幕一区av| 欧美性猛交一区二区三区精品| 婷婷久久综合九色综合伊人色| 91精品婷婷国产综合久久| 视频一区二区三区入口| 日韩欧美黄色影院| 国产91精品精华液一区二区三区| 国产精品天干天干在观线| 91国偷自产一区二区开放时间| 丝袜诱惑制服诱惑色一区在线观看| 日韩一区二区三免费高清| 狠狠v欧美v日韩v亚洲ⅴ| 成人免费小视频| 欧美精品高清视频| 国产成人精品一区二区三区四区 | 欧美一二三区在线| 国产精品影视网| 亚洲自拍另类综合| 久久伊99综合婷婷久久伊| 日韩区在线观看| 91一区二区三区在线观看| 亚洲va国产天堂va久久en| 国产三级欧美三级| 欧美日韩日本视频| 成人av免费在线观看| 免费欧美在线视频| 亚洲精品国久久99热| 欧美精品一区二| 欧美日韩精品一区二区三区| 国产一本一道久久香蕉| 亚洲6080在线| 国产精品乱码妇女bbbb| 日韩三级在线免费观看| 日本韩国精品在线| 成人黄色小视频在线观看| 免费在线欧美视频| 一区二区三区蜜桃| 日韩一区日韩二区| 国产校园另类小说区| 91精品国产高清一区二区三区 | 香蕉久久夜色精品国产使用方法| 日韩限制级电影在线观看| 美腿丝袜亚洲三区| 亚洲免费观看高清在线观看| 欧美大片拔萝卜| 中文字幕精品一区二区精品绿巨人| 欧美日韩一区 二区 三区 久久精品| 懂色av中文字幕一区二区三区 | 国产日韩欧美在线一区| 在线不卡免费欧美| 欧美特级限制片免费在线观看| 国产成人a级片| 国产专区综合网| 美国十次综合导航| 日韩不卡一区二区| 亚洲444eee在线观看| 一区二区三区国产精品| 亚洲另类中文字| 亚洲欧美日韩系列| 17c精品麻豆一区二区免费| 久久久另类综合| 久久免费精品国产久精品久久久久| 欧美精品aⅴ在线视频| 欧美在线观看一区| 中文字幕av一区二区三区免费看| 一级女性全黄久久生活片免费| 久久久久国产精品人| 欧美成人乱码一区二区三区| 欧美日韩国产综合久久| 欧美亚洲尤物久久| 精品视频在线视频| **性色生活片久久毛片| 国产精品美女久久久久av爽李琼| 欧美国产日本视频| 国产精品麻豆视频| 亚洲欧美自拍偷拍色图| 亚洲码国产岛国毛片在线| 亚洲欧美影音先锋| 亚洲国产一区二区视频| 亚洲自拍都市欧美小说| 视频在线观看一区二区三区| 丝袜美腿亚洲色图| 久久激情五月激情| 国产精品一区二区久久精品爱涩| 国产一区二区在线影院| 不卡在线视频中文字幕| 一本色道久久综合精品竹菊| 欧美日韩中文字幕一区二区| 欧美一级xxx| 中文字幕免费一区| 亚洲综合在线视频| 日本中文在线一区| 国产精品一区免费视频| 成人av免费网站| 欧美日韩色一区| 337p日本欧洲亚洲大胆精品| 中文字幕一区日韩精品欧美| 亚洲一二三专区| 国产中文字幕精品| 色悠悠亚洲一区二区| 欧美视频中文一区二区三区在线观看 | 成人18精品视频| 欧美日韩中文另类| 久久久亚洲精品一区二区三区| 国产精品青草综合久久久久99| 洋洋成人永久网站入口| 久久机这里只有精品| www.欧美日韩国产在线| 欧美精品丝袜久久久中文字幕| 精品国产一区二区精华| 亚洲欧美福利一区二区| 麻豆成人久久精品二区三区小说| 暴力调教一区二区三区| 宅男在线国产精品| 国产精品不卡一区| 国产精品水嫩水嫩| 色综合久久久久综合| 日韩视频在线永久播放| 国产精品视频一区二区三区不卡 | 日韩电影免费在线看| 国产成人aaa| 91精品久久久久久久91蜜桃| 国产精品天天看| 蜜桃精品视频在线| 欧美色图一区二区三区| 欧美极品xxx| 日本成人在线看| 欧美亚洲一区三区| 国产精品网曝门| 国产综合一区二区| 欧美一区二区三区的| 亚洲欧美日韩成人高清在线一区| 激情综合亚洲精品| 欧美精品久久久久久久多人混战| 中文字幕亚洲视频| 国产不卡视频在线观看| 精品国产乱码久久| 丝袜a∨在线一区二区三区不卡| 91蜜桃传媒精品久久久一区二区| 久久久久久久精| 国产真实乱偷精品视频免| 欧美一区二区视频在线观看2020| 亚洲青青青在线视频| 成人小视频免费观看| 午夜精品爽啪视频| 在线视频亚洲一区| 亚洲男同性视频| 一本色道久久综合亚洲aⅴ蜜桃 | 悠悠色在线精品| 99麻豆久久久国产精品免费| 久久精品男人的天堂| 国产一区二区伦理| 精品福利视频一区二区三区| 免费视频最近日韩| 欧美tk丨vk视频| 激情伊人五月天久久综合| 日韩精品一区二区三区老鸭窝| 日韩黄色免费电影| 日韩欧美国产成人一区二区| 男女性色大片免费观看一区二区| 欧美另类高清zo欧美| 青草国产精品久久久久久| 日韩午夜在线观看视频| 精品无人码麻豆乱码1区2区| 精品日产卡一卡二卡麻豆| 国产一区视频导航| 国产精品女主播在线观看| 99久久精品免费看| 亚洲美女视频在线| 欧美日韩情趣电影| 蜜桃在线一区二区三区| 2024国产精品视频| av在线综合网| 亚洲影院在线观看| 日韩一区二区三免费高清| 国产一二三精品| 中文字幕亚洲电影| 欧美日韩美少妇| 精品一二三四区| 国产精品久久久久久亚洲伦| 色先锋资源久久综合| 亚洲一区二区三区三| 日韩一区和二区| 高清国产午夜精品久久久久久| 亚洲欧洲国产日韩| 欧美日韩一区久久| 国产一区二区三区精品欧美日韩一区二区三区| 久久久久久久久蜜桃| 成人看片黄a免费看在线| 亚洲制服丝袜av| 日韩精品一区国产麻豆| gogogo免费视频观看亚洲一| 亚洲一区二区三区视频在线播放| 欧美xxx久久| 91丨九色丨蝌蚪富婆spa| 日本怡春院一区二区|