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

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

?? tinyxmlparser.cpp

?? tinyxml project for Visual Studio 2008. A small xml parser, the result is lib file for embedded ARM
?? 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 <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,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级片在线观看| 视频一区二区三区在线| 亚洲视频一二三| 免费观看91视频大全| 99久久精品国产麻豆演员表| 日韩一级黄色片| 一区二区三区在线播| 国产乱人伦偷精品视频免下载| 在线亚洲欧美专区二区| 国产精品沙发午睡系列990531| 欧美日韩国产精选| 日韩午夜在线影院| 亚洲午夜av在线| av午夜精品一区二区三区| 欧美精品一区二区在线播放| 亚洲gay无套男同| 色综合网色综合| 亚洲欧洲另类国产综合| 国产99久久久国产精品潘金| 欧美一级xxx| 日日摸夜夜添夜夜添亚洲女人| 91麻豆精品一区二区三区| 亚洲国产精品激情在线观看| 精品综合久久久久久8888| 91精品麻豆日日躁夜夜躁| 亚洲五月六月丁香激情| 欧美午夜宅男影院| 一区二区三区美女| 在线欧美日韩精品| 亚洲精品国产精品乱码不99| 色综合久久88色综合天天免费| 国产精品国产精品国产专区不片| 国产69精品久久久久毛片| 日韩激情视频网站| 欧美日韩国产片| 亚洲h精品动漫在线观看| 91成人网在线| 亚洲第一福利一区| 欧美放荡的少妇| 热久久国产精品| 精品久久久久av影院| 久久国产尿小便嘘嘘尿| 久久这里只精品最新地址| 国产精品77777| 综合电影一区二区三区 | 亚洲精品久久久蜜桃| 91片在线免费观看| 亚洲一区二区三区在线播放| 欧美片网站yy| 韩国欧美国产1区| 国产日本一区二区| 91日韩精品一区| 精品国产免费一区二区三区四区| 精品国产伦理网| 国产麻豆一精品一av一免费 | 丝袜美腿成人在线| 欧美一级黄色片| 极品少妇一区二区三区精品视频| 欧美精品一区二区三区久久久| 国产成人av资源| 亚洲专区一二三| 欧美一区二区三区视频| 国产超碰在线一区| 亚洲二区在线视频| 久久久亚洲精品一区二区三区| eeuss鲁片一区二区三区| 亚洲一二三级电影| wwwwww.欧美系列| 色www精品视频在线观看| 久久er99精品| 亚洲欧美区自拍先锋| 日本怡春院一区二区| 国产在线视频不卡二| 国产精品欧美一级免费| 91精彩视频在线观看| 久久99精品久久久久久国产越南| 中文字幕不卡在线| 欧美一区二区在线观看| 不卡一卡二卡三乱码免费网站| 五月天亚洲婷婷| 国产精品夫妻自拍| 欧美大片拔萝卜| 色94色欧美sute亚洲线路一ni | 色狠狠综合天天综合综合| 日本欧洲一区二区| 亚洲色图制服诱惑| 久久色在线观看| 欧美日韩国产中文| 精品无人码麻豆乱码1区2区| 亚洲毛片av在线| 久久女同精品一区二区| 欧美剧情电影在线观看完整版免费励志电影| 国产一区欧美二区| 日韩av一区二区三区四区| 亚洲国产精品久久久久秋霞影院| 国产日韩精品一区二区三区| 欧美一区二区成人| 欧美日韩精品免费| 91黄视频在线| 99久久国产综合精品女不卡| 国产美女在线观看一区| 蜜桃视频一区二区三区| 亚洲午夜精品在线| 亚洲一区二区三区不卡国产欧美| 国产精品家庭影院| 国产精品美女久久久久久久久久久| 欧美不卡激情三级在线观看| 在线成人av影院| 欧美日韩中字一区| 欧美亚洲动漫精品| 91福利视频网站| 在线观看亚洲a| 色素色在线综合| 色综合久久久久综合体桃花网| www.性欧美| 色成人在线视频| 欧洲av一区二区嗯嗯嗯啊| 色噜噜狠狠成人中文综合| 91在线播放网址| 色999日韩国产欧美一区二区| 91视频.com| 日本韩国欧美一区二区三区| 欧美羞羞免费网站| 欧美日产在线观看| 欧美一级日韩不卡播放免费| 欧美一区二区三区在线观看 | 亚洲综合色在线| 亚洲一区中文日韩| 亚洲6080在线| 欧美aⅴ一区二区三区视频| 日本不卡一二三| 激情综合色播五月| 国产91精品在线观看| eeuss影院一区二区三区| 91视视频在线直接观看在线看网页在线看| 91影视在线播放| 91精品国产综合久久蜜臀| 精品日韩在线观看| 久久国产精品第一页| 久久99国产精品免费网站| 国产99久久久国产精品| 色综合色综合色综合| 在线播放国产精品二区一二区四区| 日韩欧美你懂的| 中文字幕不卡三区| 一个色妞综合视频在线观看| 精品综合久久久久久8888| bt7086福利一区国产| 欧美精品在线一区二区| 欧美激情在线一区二区三区| 亚洲自拍偷拍av| 国产一区二区三区视频在线播放| 不卡在线视频中文字幕| 欧美精品久久天天躁| 国产精品免费网站在线观看| 亚洲高清免费在线| 丁香啪啪综合成人亚洲小说| 欧美日韩一区三区四区| 国产欧美一二三区| 日日摸夜夜添夜夜添国产精品 | 麻豆国产欧美一区二区三区| 国产a精品视频| 欧美丰满美乳xxx高潮www| 国产亚洲一本大道中文在线| 亚洲sss视频在线视频| 国产精品一区二区在线观看网站 | 亚洲国产aⅴ天堂久久| 国产99久久久国产精品潘金| 在线播放视频一区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩国产成人精品| 色综合天天综合网天天看片| 精品美女一区二区三区| 亚洲国产你懂的| 99久久夜色精品国产网站| 精品国产91洋老外米糕| 亚洲第四色夜色| 91丨porny丨首页| 中文字幕免费不卡| 国产伦精一区二区三区| 欧美一区二区三区日韩视频| 亚洲h精品动漫在线观看| 色综合久久99| 国产精品激情偷乱一区二区∴| 国精品**一区二区三区在线蜜桃| 欧美精品三级在线观看| 亚洲成人精品一区| 欧美中文字幕一二三区视频| 亚洲日本欧美天堂| 丁香五精品蜜臀久久久久99网站| 久久综合成人精品亚洲另类欧美| 日本欧美一区二区三区| 欧美日韩高清一区| 亚洲国产aⅴ成人精品无吗| 在线观看成人免费视频| 亚洲小少妇裸体bbw| 精品视频1区2区| 性久久久久久久久| 欧美日韩国产123区| 日韩二区在线观看|