亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日本va欧美va瓶| 成人精品国产免费网站| 蜜臀精品一区二区三区在线观看 | 激情六月婷婷综合| 99久久综合精品| 日韩欧美高清dvd碟片| 自拍偷拍亚洲综合| 国产精品香蕉一区二区三区| 911精品产国品一二三产区 | 欧美日韩一级二级三级| 国产婷婷一区二区| 久久成人羞羞网站| 欧美一区欧美二区| 亚洲永久免费视频| 一本一本久久a久久精品综合麻豆| 精品国产免费一区二区三区四区 | 色噜噜狠狠成人网p站| 国产偷国产偷亚洲高清人白洁| 午夜欧美电影在线观看| 91麻豆成人久久精品二区三区| 国产日韩一级二级三级| 久久国产尿小便嘘嘘尿| 日韩一级完整毛片| 亚洲成av人**亚洲成av**| 欧美亚洲综合久久| 亚洲狠狠爱一区二区三区| 91精品福利视频| 亚洲欧美日韩系列| 在线这里只有精品| 亚洲精品五月天| 一本一本大道香蕉久在线精品| 亚洲日韩欧美一区二区在线| 99久久免费精品| 中文字幕佐山爱一区二区免费| 国产成人精品一区二区三区网站观看| 精品日韩在线一区| 国产综合久久久久影院| 久久婷婷一区二区三区| 国产精品一区二区免费不卡| 久久久精品tv| thepron国产精品| 一区二区理论电影在线观看| 在线免费不卡电影| 日韩中文字幕av电影| 欧美精品久久久久久久多人混战 | 国产精品夜夜嗨| 欧美国产禁国产网站cc| 成人免费毛片a| 自拍偷拍国产精品| 欧美日韩mp4| 精品一区二区在线看| 国产亚洲婷婷免费| 99久久777色| 亚洲高清在线精品| 精品少妇一区二区三区日产乱码| 国产激情一区二区三区| 国产精品国产自产拍在线| 色狠狠一区二区| 麻豆一区二区在线| 中文字幕一区二区三区精华液 | 亚洲欧美日韩国产综合| 在线一区二区三区| 日本亚洲三级在线| 国产三级精品三级在线专区| 色欧美片视频在线观看在线视频| 日韩二区三区在线观看| 国产欧美精品在线观看| 欧美性生活大片视频| 久久精品久久99精品久久| 国产精品嫩草久久久久| 欧美视频在线观看一区二区| 久久99精品久久久| 亚洲麻豆国产自偷在线| 欧美一区二区三级| 99热国产精品| 精品综合免费视频观看| 亚洲欧美日韩在线| 国产无人区一区二区三区| 欧美日本一区二区在线观看| 国产成人一区在线| 日本在线不卡一区| 亚洲欧美韩国综合色| 精品国产乱码久久久久久久| 91福利资源站| 成人aa视频在线观看| 免费一区二区视频| 悠悠色在线精品| 日本一区二区三区dvd视频在线| 欧美日韩成人在线一区| 色综合中文字幕国产| 秋霞午夜鲁丝一区二区老狼| 亚洲日本在线观看| 2020国产精品自拍| 91精品国产乱码久久蜜臀| 91免费视频网址| 成人午夜电影小说| 久久99热国产| 免费一级片91| 热久久免费视频| 日韩激情一二三区| 午夜视频一区在线观看| 亚洲精品精品亚洲| 中文字幕中文字幕一区| 国产日韩精品一区| 26uuu国产日韩综合| 日韩欧美成人激情| 欧美一区二区三区视频免费| 欧美三级欧美一级| 精品视频999| 欧美日韩免费电影| 欧美性xxxxx极品少妇| 一本色道久久综合狠狠躁的推荐| 成人av网址在线观看| 成人一区二区三区视频| 国产精品1024久久| 国产成人免费网站| 国产成人在线影院| 99久久99久久精品免费看蜜桃| av毛片久久久久**hd| 97精品久久久午夜一区二区三区 | 99久久婷婷国产综合精品| 国产91在线看| 成人高清视频在线| 91在线视频观看| 色呦呦国产精品| 欧美性xxxxxxxx| 91精品国产欧美日韩| 欧美一区二区久久久| 精品久久久网站| 国产人成亚洲第一网站在线播放 | 一区二区三区加勒比av| 亚洲已满18点击进入久久| 亚洲成a人片在线观看中文| 婷婷综合在线观看| 激情综合一区二区三区| 粉嫩高潮美女一区二区三区 | 91麻豆精品国产综合久久久久久| 欧美日韩综合一区| 精品少妇一区二区三区视频免付费 | 亚洲第一久久影院| 精品无人码麻豆乱码1区2区| 国产91在线|亚洲| 欧美自拍偷拍一区| 精品国产乱码久久久久久浪潮| 国产日产欧产精品推荐色| 亚洲精品日日夜夜| 人人狠狠综合久久亚洲| 成人免费看的视频| 欧美日韩精品系列| 亚洲精品一区二区精华| 国产精品不卡一区二区三区| 午夜视频在线观看一区| 国产精品夜夜嗨| 欧美日韩国产中文| 国产网红主播福利一区二区| 亚洲精品免费在线观看| 裸体健美xxxx欧美裸体表演| 福利一区在线观看| 91精品国模一区二区三区| 国产喷白浆一区二区三区| 一区二区理论电影在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 日本道免费精品一区二区三区| 欧美一区二区三区小说| 国产精品久久精品日日| 免费在线观看视频一区| 色婷婷综合五月| 欧美国产国产综合| 麻豆精品国产传媒mv男同| 日本高清不卡aⅴ免费网站| 久久久精品免费网站| 日韩电影在线观看网站| 色激情天天射综合网| 国产精品青草久久| 国产中文字幕精品| 884aa四虎影成人精品一区| 亚洲精品视频观看| 成人h动漫精品一区二区| 日韩精品一区二区三区老鸭窝| 亚洲综合色视频| 91在线免费视频观看| 国产午夜亚洲精品理论片色戒| 日精品一区二区| 欧美人xxxx| 亚洲妇熟xx妇色黄| 在线欧美一区二区| 中文字幕国产一区二区| 首页国产丝袜综合| 欧美精品少妇一区二区三区| 1024亚洲合集| 国产在线播放一区二区三区| 日韩精品一区二区在线观看| 亚洲综合av网| av不卡在线播放| 国产精品色婷婷| 久久99国产乱子伦精品免费| 91精彩视频在线观看| 亚洲国产精品尤物yw在线观看| 成人av网站免费观看| 久久久久88色偷偷免费|