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

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

?? tinyxml.cpp

?? xml 簡單解析器
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/*
www.sourceforge.net/projects/tinyxml
Original 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 this
software in a product, an acknowledgment in the product documentation
would 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 "tinyxml.h"

#ifdef TIXML_USE_STL
#include <sstream>
#include <iostream>
#endif


bool TiXmlBase::condenseWhiteSpace = true;

void TiXmlBase::PutString( const TIXML_STRING& str, TIXML_OSTREAM* stream )
{
	TIXML_STRING buffer;
	PutString( str, &buffer );
	(*stream) << buffer;
}

void TiXmlBase::PutString( const TIXML_STRING& str, TIXML_STRING* outString )
{
	int i=0;

	while( i<(int)str.length() )
	{
		unsigned char c = (unsigned char) str[i];

		if (    c == '&' 
		     && i < ( (int)str.length() - 2 )
			 && str[i+1] == '#'
			 && str[i+2] == 'x' )
		{
			// Hexadecimal character reference.
			// Pass through unchanged.
			// &#xA9;	-- copyright symbol, for example.
			//
			// The -1 is a bug fix from Rob Laveaux. It keeps
			// an overflow from happening if there is no ';'.
			// There are actually 2 ways to exit this loop -
			// while fails (error case) and break (semicolon found).
			// However, there is no mechanism (currently) for
			// this function to return an error.
			while ( i<(int)str.length()-1 )
			{
				outString->append( str.c_str() + i, 1 );
				++i;
				if ( str[i] == ';' )
					break;
			}
		}
		else if ( c == '&' )
		{
			outString->append( entity[0].str, entity[0].strLength );
			++i;
		}
		else if ( c == '<' )
		{
			outString->append( entity[1].str, entity[1].strLength );
			++i;
		}
		else if ( c == '>' )
		{
			outString->append( entity[2].str, entity[2].strLength );
			++i;
		}
		else if ( c == '\"' )
		{
			outString->append( entity[3].str, entity[3].strLength );
			++i;
		}
		else if ( c == '\'' )
		{
			outString->append( entity[4].str, entity[4].strLength );
			++i;
		}
		else if ( c < 32 )
		{
			// Easy pass at non-alpha/numeric/symbol
			// Below 32 is symbolic.
			char buf[ 32 ];
			
			#if defined(TIXML_SNPRINTF)		
				TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) );
			#else
				sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) );
			#endif		

			//*ME:	warning C4267: convert 'size_t' to 'int'
			//*ME:	Int-Cast to make compiler happy ...
			outString->append( buf, (int)strlen( buf ) );
			++i;
		}
		else
		{
			//char realc = (char) c;
			//outString->append( &realc, 1 );
			*outString += (char) c;	// somewhat more efficient function call.
			++i;
		}
	}
}


// <-- Strange class for a bug fix. Search for STL_STRING_BUG
TiXmlBase::StringToBuffer::StringToBuffer( const TIXML_STRING& str )
{
	buffer = new char[ str.length()+1 ];
	if ( buffer )
	{
		strcpy( buffer, str.c_str() );
	}
}


TiXmlBase::StringToBuffer::~StringToBuffer()
{
	delete [] buffer;
}
// End strange bug fix. -->


TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase()
{
	parent = 0;
	type = _type;
	firstChild = 0;
	lastChild = 0;
	prev = 0;
	next = 0;
}


TiXmlNode::~TiXmlNode()
{
	TiXmlNode* node = firstChild;
	TiXmlNode* temp = 0;

	while ( node )
	{
		temp = node;
		node = node->next;
		delete temp;
	}	
}


void TiXmlNode::CopyTo( TiXmlNode* target ) const
{
	target->SetValue (value.c_str() );
	target->userData = userData; 
}


void TiXmlNode::Clear()
{
	TiXmlNode* node = firstChild;
	TiXmlNode* temp = 0;

	while ( node )
	{
		temp = node;
		node = node->next;
		delete temp;
	}	

	firstChild = 0;
	lastChild = 0;
}


TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node )
{
	assert( node->parent == 0 || node->parent == this );
	assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() );

	node->parent = this;

	node->prev = lastChild;
	node->next = 0;

	if ( lastChild )
		lastChild->next = node;
	else
		firstChild = node;			// it was an empty list.

	lastChild = node;
	return node;
}


TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis )
{
	TiXmlNode* node = addThis.Clone();
	if ( !node )
		return 0;

	return LinkEndChild( node );
}


TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis )
{	
	if ( !beforeThis || beforeThis->parent != this )
		return 0;

	TiXmlNode* node = addThis.Clone();
	if ( !node )
		return 0;
	node->parent = this;

	node->next = beforeThis;
	node->prev = beforeThis->prev;
	if ( beforeThis->prev )
	{
		beforeThis->prev->next = node;
	}
	else
	{
		assert( firstChild == beforeThis );
		firstChild = node;
	}
	beforeThis->prev = node;
	return node;
}


TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis )
{
	if ( !afterThis || afterThis->parent != this )
		return 0;

	TiXmlNode* node = addThis.Clone();
	if ( !node )
		return 0;
	node->parent = this;

	node->prev = afterThis;
	node->next = afterThis->next;
	if ( afterThis->next )
	{
		afterThis->next->prev = node;
	}
	else
	{
		assert( lastChild == afterThis );
		lastChild = node;
	}
	afterThis->next = node;
	return node;
}


TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis )
{
	if ( replaceThis->parent != this )
		return 0;

	TiXmlNode* node = withThis.Clone();
	if ( !node )
		return 0;

	node->next = replaceThis->next;
	node->prev = replaceThis->prev;

	if ( replaceThis->next )
		replaceThis->next->prev = node;
	else
		lastChild = node;

	if ( replaceThis->prev )
		replaceThis->prev->next = node;
	else
		firstChild = node;

	delete replaceThis;
	node->parent = this;
	return node;
}


bool TiXmlNode::RemoveChild( TiXmlNode* removeThis )
{
	if ( removeThis->parent != this )
	{	
		assert( 0 );
		return false;
	}

	if ( removeThis->next )
		removeThis->next->prev = removeThis->prev;
	else
		lastChild = removeThis->prev;

	if ( removeThis->prev )
		removeThis->prev->next = removeThis->next;
	else
		firstChild = removeThis->next;

	delete removeThis;
	return true;
}

const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const
{
	const TiXmlNode* node;
	for ( node = firstChild; node; node = node->next )
	{
		if ( strcmp( node->Value(), _value ) == 0 )
			return node;
	}
	return 0;
}


TiXmlNode* TiXmlNode::FirstChild( const char * _value )
{
	TiXmlNode* node;
	for ( node = firstChild; node; node = node->next )
	{
		if ( strcmp( node->Value(), _value ) == 0 )
			return node;
	}
	return 0;
}


const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const
{
	const TiXmlNode* node;
	for ( node = lastChild; node; node = node->prev )
	{
		if ( strcmp( node->Value(), _value ) == 0 )
			return node;
	}
	return 0;
}

TiXmlNode* TiXmlNode::LastChild( const char * _value )
{
	TiXmlNode* node;
	for ( node = lastChild; node; node = node->prev )
	{
		if ( strcmp( node->Value(), _value ) == 0 )
			return node;
	}
	return 0;
}

const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const
{
	if ( !previous )
	{
		return FirstChild();
	}
	else
	{
		assert( previous->parent == this );
		return previous->NextSibling();
	}
}

TiXmlNode* TiXmlNode::IterateChildren( TiXmlNode* previous )
{
	if ( !previous )
	{
		return FirstChild();
	}
	else
	{
		assert( previous->parent == this );
		return previous->NextSibling();
	}
}

const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const
{
	if ( !previous )
	{
		return FirstChild( val );
	}
	else
	{
		assert( previous->parent == this );
		return previous->NextSibling( val );
	}
}

TiXmlNode* TiXmlNode::IterateChildren( const char * val, TiXmlNode* previous )
{
	if ( !previous )
	{
		return FirstChild( val );
	}
	else
	{
		assert( previous->parent == this );
		return previous->NextSibling( val );
	}
}

const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const 
{
	const TiXmlNode* node;
	for ( node = next; node; node = node->next )
	{
		if ( strcmp( node->Value(), _value ) == 0 )
			return node;
	}
	return 0;
}

TiXmlNode* TiXmlNode::NextSibling( const char * _value )
{
	TiXmlNode* node;
	for ( node = next; node; node = node->next )
	{
		if ( strcmp( node->Value(), _value ) == 0 )
			return node;
	}
	return 0;
}

const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const
{
	const TiXmlNode* node;
	for ( node = prev; node; node = node->prev )
	{
		if ( strcmp( node->Value(), _value ) == 0 )
			return node;
	}
	return 0;
}

TiXmlNode* TiXmlNode::PreviousSibling( const char * _value )
{
	TiXmlNode* node;
	for ( node = prev; node; node = node->prev )
	{
		if ( strcmp( node->Value(), _value ) == 0 )
			return node;
	}
	return 0;
}

void TiXmlElement::RemoveAttribute( const char * name )
{
	TIXML_STRING str( name );
	TiXmlAttribute* node = attributeSet.Find( str );
	if ( node )
	{
		attributeSet.Remove( node );
		delete node;
	}
}

const TiXmlElement* TiXmlNode::FirstChildElement() const
{
	const TiXmlNode* node;

	for (	node = FirstChild();
			node;
			node = node->NextSibling() )
	{
		if ( node->ToElement() )
			return node->ToElement();
	}
	return 0;
}

TiXmlElement* TiXmlNode::FirstChildElement()
{
	TiXmlNode* node;

	for (	node = FirstChild();
			node;
			node = node->NextSibling() )
	{
		if ( node->ToElement() )
			return node->ToElement();
	}
	return 0;
}

const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const
{
	const TiXmlNode* node;

	for (	node = FirstChild( _value );
			node;
			node = node->NextSibling( _value ) )
	{
		if ( node->ToElement() )
			return node->ToElement();
	}
	return 0;
}

TiXmlElement* TiXmlNode::FirstChildElement( const char * _value )
{
	TiXmlNode* node;

	for (	node = FirstChild( _value );
			node;
			node = node->NextSibling( _value ) )
	{
		if ( node->ToElement() )
			return node->ToElement();
	}
	return 0;
}

const TiXmlElement* TiXmlNode::NextSiblingElement() const
{
	const TiXmlNode* node;

	for (	node = NextSibling();
	node;
	node = node->NextSibling() )
	{
		if ( node->ToElement() )
			return node->ToElement();
	}
	return 0;
}

TiXmlElement* TiXmlNode::NextSiblingElement()
{
	TiXmlNode* node;

	for (	node = NextSibling();
	node;
	node = node->NextSibling() )
	{
		if ( node->ToElement() )
			return node->ToElement();
	}
	return 0;
}

const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const
{
	const TiXmlNode* node;

	for (	node = NextSibling( _value );
	node;
	node = node->NextSibling( _value ) )
	{
		if ( node->ToElement() )
			return node->ToElement();
	}
	return 0;
}

TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value )
{
	TiXmlNode* node;

	for (	node = NextSibling( _value );
	node;
	node = node->NextSibling( _value ) )
	{
		if ( node->ToElement() )
			return node->ToElement();
	}
	return 0;
}


const TiXmlDocument* TiXmlNode::GetDocument() const
{
	const TiXmlNode* node;

	for( node = this; node; node = node->parent )
	{
		if ( node->ToDocument() )
			return node->ToDocument();
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产sm最大网站| 丝瓜av网站精品一区二区| 亚洲精品免费播放| 激情小说亚洲一区| 在线欧美日韩国产| 久久久久国色av免费看影院| 亚洲成人免费视频| 99久精品国产| 国产欧美一区二区精品性色超碰| 五月天激情综合网| 色婷婷久久久久swag精品 | 国产精品夜夜嗨| 欧美日韩国产美| 亚洲日本一区二区三区| 国产成人精品亚洲日本在线桃色| 欧美一区二区免费视频| 亚洲va韩国va欧美va精品 | 51精品视频一区二区三区| 中文字幕在线一区免费| 国产精品一区在线观看乱码| 欧美一级高清大全免费观看| 亚洲成人免费在线| 欧美精品成人一区二区三区四区| 一区二区视频在线看| 国产**成人网毛片九色| 久久精品亚洲乱码伦伦中文| 国产中文字幕一区| 久久蜜桃av一区二区天堂| 极品瑜伽女神91| 精品sm捆绑视频| 精品一区二区三区免费观看| 日韩亚洲欧美在线| 日本免费在线视频不卡一不卡二| 91精品国产综合久久精品app| 亚洲第一精品在线| 欧美一区二区三区精品| 蜜桃视频在线观看一区二区| 欧美成人欧美edvon| 精品一区二区三区久久| 久久九九久精品国产免费直播| 国产精品一区二区在线观看不卡 | 欧美日韩一区二区三区四区 | 精品视频在线免费看| 亚洲国产成人高清精品| 在线电影国产精品| 久久精品国产精品青草| 久久久三级国产网站| 成人免费视频app| 亚洲美腿欧美偷拍| 欧美日韩一区高清| 激情综合色播五月| 中文字幕一区二区三区蜜月| 91色视频在线| 午夜电影一区二区| 精品欧美一区二区久久| 福利电影一区二区| 夜夜精品浪潮av一区二区三区| 欧美精品第一页| 丁香婷婷深情五月亚洲| 一区二区三区免费观看| 欧美成人bangbros| 97久久精品人人做人人爽50路| 亚洲一区二区免费视频| 精品国产乱码久久久久久老虎| 国产精品77777| 亚洲一区二区三区在线看| 日韩精品一区二区三区在线观看 | 午夜精品免费在线观看| 久久综合色一综合色88| 91视频免费看| 久久99精品久久久久久动态图| 国产精品乱人伦| 91精品国产一区二区| 成人激情免费视频| 免费在线观看一区| 中文字幕永久在线不卡| 日韩一区二区免费视频| 91蜜桃网址入口| 国产在线乱码一区二区三区| 亚洲最新在线观看| 国产清纯白嫩初高生在线观看91 | 精品视频1区2区| 国产成人免费在线视频| 日韩精品亚洲专区| 亚洲欧美日本韩国| 欧美精品一区二区精品网| 在线精品视频免费播放| 国产a视频精品免费观看| 美女视频一区在线观看| 亚洲伊人色欲综合网| 国产日本亚洲高清| 日韩欧美国产综合一区 | 91视频一区二区| 国产a视频精品免费观看| 精品一区二区三区影院在线午夜| 五月天欧美精品| 亚洲第一二三四区| 亚洲永久精品大片| 亚洲精品视频在线观看网站| 中文字幕在线一区免费| 国产三级三级三级精品8ⅰ区| 日韩一区二区在线看片| 91精选在线观看| 欧美三级日韩三级| 欧美影院午夜播放| 91久久精品一区二区| aaa欧美色吧激情视频| 成人在线综合网| 国产成人日日夜夜| 国产91对白在线观看九色| 粉嫩av亚洲一区二区图片| 国产一区在线精品| 美女高潮久久久| 美女一区二区视频| 久88久久88久久久| 国产在线视频精品一区| 国产成人精品影院| 成人午夜碰碰视频| 成人理论电影网| 色综合久久九月婷婷色综合| 色妹子一区二区| 在线亚洲精品福利网址导航| 一本大道av伊人久久综合| yourporn久久国产精品| 在线观看日韩电影| 欧美精品一二三| 精品欧美久久久| 欧美激情艳妇裸体舞| 日韩理论在线观看| 香蕉久久夜色精品国产使用方法| 日韩va亚洲va欧美va久久| 免费在线观看精品| 国产成a人亚洲| 91理论电影在线观看| 欧美情侣在线播放| 久久女同性恋中文字幕| 1区2区3区国产精品| 亚洲成人午夜电影| 国产一区二三区| 99久久久国产精品免费蜜臀| 精品视频在线免费观看| 精品国产乱码久久久久久免费 | 91丝袜美腿高跟国产极品老师| 在线观看欧美精品| 日韩免费视频线观看| 国产精品福利影院| 亚洲国产一区视频| 国产一区视频在线看| 色婷婷精品大在线视频| 欧美mv日韩mv亚洲| 一区二区三区免费网站| 国模套图日韩精品一区二区| 91网页版在线| 亚洲精品一线二线三线| 亚洲精品国久久99热| 加勒比av一区二区| 欧美性生活大片视频| 国产亚洲成aⅴ人片在线观看 | a美女胸又www黄视频久久| 正在播放一区二区| 成人欧美一区二区三区黑人麻豆| 丝袜亚洲另类欧美综合| 不卡在线观看av| 精品va天堂亚洲国产| 午夜一区二区三区在线观看| 成人av资源下载| 26uuuu精品一区二区| 视频一区免费在线观看| 99久久伊人网影院| 久久久久青草大香线综合精品| 亚洲福利视频一区| av中文字幕一区| 久久久精品影视| 久久91精品久久久久久秒播| 欧美嫩在线观看| 亚洲一二三四区| 成人app网站| 久久精品亚洲麻豆av一区二区| 奇米777欧美一区二区| 在线免费观看日本一区| 中文字幕成人网| 国产精品99久久久久久久vr| 日韩限制级电影在线观看| 天天综合天天综合色| 欧洲一区二区av| 亚洲欧美日韩系列| 成人白浆超碰人人人人| 亚洲国产精品成人综合| 国产激情偷乱视频一区二区三区| 精品国产123| 久久99国产精品免费| 日韩欧美的一区| 美女视频免费一区| 精品国产自在久精品国产| 美国毛片一区二区三区| 日韩欧美国产综合在线一区二区三区| 性欧美大战久久久久久久久| 欧美精品在线观看播放| 免费三级欧美电影| 精品国产麻豆免费人成网站|