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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tinyxml.cpp

?? sigmadesign smp8623 gui source code ,bingo
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
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.
*/


/**
  @file   tinyxml.cpp
  
  @modified by Raul Chirinos
  @date   2004-08-26
  
  Changes:
  
  - Replaced string.h routines for their RMF equivalents
  - Replaced character buffer allocations with RMMalloc
  - Replaced ctype.h routines with macro equivalents not to use locale
    since this support is removed from ucLinux
  
*/

	 
#include "tinyxml.h"

#ifdef TIXML_USE_STL
#include <sstream>
#endif
#include <limits.h>

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 ];
			sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) );
			//outString->append( buf, strlen( buf ) );
			outString->append( buf, RMasciiLength( buf ) );//[RC NEW]
			++i;
		}
		else
		{
			// Assume everthing else is unicode. c should never actually 
			// be out of the range of 0-255. Else something has gone strange.
			assert( c > 0 );
#if UCHAR_MAX > 255
			assert ( c < 256 );
#endif

			//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 = (RMascii*)MALLOC(str.length()+1);//new char[ str.length()+1 ];
	if ( buffer )
	{
		//strcpy( buffer, str.c_str() );
		RMCopyAscii( buffer, str.c_str() );//[RC NEW]
	}
}


TiXmlBase::StringToBuffer::~StringToBuffer()
{
	RFREE(buffer);//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 )
{
	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;
}

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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



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

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


TiXmlElement::TiXmlElement (const char * _value)
	: TiXmlNode( TiXmlNode::ELEMENT )
{
	firstChild = lastChild = 0;
	value = _value;
}


#ifdef TIXML_USE_STL
TiXmlElement::TiXmlElement( const std::string& _value ) 
	: TiXmlNode( TiXmlNode::ELEMENT )
{
	firstChild = lastChild = 0;
	value = _value;
}
#endif


TiXmlElement::TiXmlElement( const TiXmlElement& copy)
	: TiXmlNode( TiXmlNode::ELEMENT )
{
	firstChild = lastChild = 0;
	copy.CopyTo( this );	
}


void TiXmlElement::operator=( const TiXmlElement& base )
{
	ClearThis();
	base.CopyTo( this );
}


TiXmlElement::~TiXmlElement()
{
	ClearThis();
}


void TiXmlElement::ClearThis()
{
	Clear();
	while( attributeSet.First() )
	{
		TiXmlAttribute* node = attributeSet.First();
		attributeSet.Remove( node );
		delete node;
	}
}


const char * TiXmlElement::Attribute( const char * name ) const
{
	TiXmlAttribute* node = attributeSet.Find( name );

	if ( node )
		return node->Value();

	return 0;
}


// [RC] NEW
const char * TiXmlElement::Attribute( const char * name, bool casefree ) const
{
	TiXmlAttribute* node;
	
	if(casefree)
		node = attributeSet.Find( name, casefree );
	else
		node = attributeSet.Find( name );

	if ( node )
		return node->Value();

	return 0;
}


const char * TiXmlElement::Attribute( const char * name, int* i ) const
{
	const char * s = Attribute( name );
	if ( i )
	{
		if ( s )
			*i = atoi( s );
		else
			*i = 0;
	}
	return s;
}


#ifndef NO_FPU
const char * TiXmlElement::Attribute( const char * name, double* d ) const
{
	const char * s = Attribute( name );
	if ( d )
	{
		if ( s )
			*d = atof( s );
		else
			*d = 0;
	}
	return s;
}
#endif


int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const
{
	TiXmlAttribute* node = attributeSet.Find( name );
	if ( !node )
		return TIXML_NO_ATTRIBUTE;

	return node->QueryIntValue( ival );
}


#ifndef NO_FPU
int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const
{
	TiXmlAttribute* node = attributeSet.Find( name );
	if ( !node )
		return TIXML_NO_ATTRIBUTE;

	return node->QueryDoubleValue( dval );
}
#endif


void TiXmlElement::SetAttribute( const char * name, int val )
{	
	char buf[64];
	sprintf( buf, "%d", val );
	SetAttribute( name, buf );
}


#ifndef NO_FPU
void TiXmlElement::SetDoubleAttribute( const char * name, double val )
{	
	char buf[128];
	sprintf( buf, "%f", val );
	SetAttribute( name, buf );
}
#endif


void TiXmlElement::SetAttribute( const char * name, const char * _value )
{
	TiXmlAttribute* node = attributeSet.Find( name );
	if ( node )
	{
		node->SetValue( _value );
		return;
	}

	TiXmlAttribute* attrib = new TiXmlAttribute( name, _value );
	if ( attrib )
	{
		attributeSet.Add( attrib );
	}
	else
	{
		TiXmlDocument* document = GetDocument();
		if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, 0, 0, TIXML_ENCODING_UNKNOWN );
	}
}

void TiXmlElement::Print( FILE* cfile, int depth ) const
{
	int i;
	for ( i=0; i<depth; i++ )
	{
		fprintf( cfile, "    " );
	}

	fprintf( cfile, "<%s", value.c_str() );

	TiXmlAttribute* attrib;
	for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() )
	{
		fprintf( cfile, " " );
		attrib->Print( cfile, depth );
	}

	// There are 3 different formatting approaches:
	// 1) An element without children is printed as a <foo /> node
	// 2) An element with only a text child is printed as <foo> text </foo>
	// 3) An element with children is printed on multiple lines.
	TiXmlNode* node;
	if ( !firstChild )
	{
		fprintf( cfile, " />" );
	}
	else if ( firstChild == lastChild && firstChild->ToText() )
	{
		fprintf( cfile, ">" );
		firstChild->Print( cfile, depth + 1 );
		fprintf( cfile, "</%s>", value.c_str() );
	}
	else
	{
		fprintf( cfile, ">" );

		for ( node = firstChild; node; node=node->NextSibling() )
		{
			if ( !node->ToText() )
			{
				fprintf( cfile, "\n" );
			}
			node->Print( cfile, depth+1 );
		}
		fprintf( cfile, "\n" );
		for( i=0; i<depth; ++i )
		fprintf( cfile, "    " );
		fprintf( cfile, "</%s>", value.c_str() );
	}
}

void TiXmlElement::StreamOut( TIXML_OSTREAM * stream ) const
{
	(*stream) << "<" << value;

	TiXmlAttribute* attrib;
	for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() )
	{	
		(*stream) << " ";
		attrib->StreamOut( stream );
	}

	// If this node has children, give it a closing tag. Else
	// make it an empty tag.
	TiXmlNode* node;
	if ( firstChild )
	{ 		
		(*stream) << ">";

		for ( node = firstChild; node; node=node->NextSibling() )
		{
			node->StreamOut( stream );
		}
		(*stream) << "</" << value << ">";
	}
	else
	{
		(*stream) << " />";
	}
}


void TiXmlElement::CopyTo( TiXmlElement* target ) const
{
	// superclass:
	TiXmlNode::CopyTo( target );

	// Element class: 
	// Clone the attributes, then clone the children.
	TiXmlAttribute* attribute = 0;
	for(	attribute = attributeSet.First();
	attribute;
	attribute = attribute->Next() )
	{
		target->SetAttribute( attribute->Name(), attribute->Value() );
	}

	TiXmlNode* node = 0;
	for ( node = firstChild; node; node = node->NextSibling() )
	{
		target->LinkEndChild( node->Clone() );
	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜美腿亚洲综合| 国产精品一区久久久久| 精品999在线播放| 91免费视频网址| 蜜臀av一区二区| 综合中文字幕亚洲| 日韩你懂的在线观看| 色综合久久中文字幕| 国模无码大尺度一区二区三区| 亚洲天天做日日做天天谢日日欢| 日韩欧美一二三区| 欧美日韩亚洲综合在线| 成人av影视在线观看| 蜜桃久久精品一区二区| 一区二区免费视频| 国产精品福利一区二区三区| 欧美v国产在线一区二区三区| 在线观看区一区二| 成人av资源下载| 国产一区二区免费视频| 蜜臀久久久99精品久久久久久| 一片黄亚洲嫩模| 国产精品久久三区| 国产欧美日韩在线| 久久午夜羞羞影院免费观看| 日韩一区二区三免费高清| 欧美日韩精品高清| 在线亚洲一区二区| 91网上在线视频| 菠萝蜜视频在线观看一区| 国产白丝网站精品污在线入口| 麻豆中文一区二区| 青青青爽久久午夜综合久久午夜| 亚洲自拍与偷拍| 亚洲男人的天堂av| 亚洲日本va在线观看| 国产精品美女久久久久高潮| 久久久久久久综合日本| 久久午夜老司机| wwww国产精品欧美| 久久精品男人天堂av| 久久久激情视频| 国产欧美日韩不卡| 国产女同互慰高潮91漫画| 国产精品色眯眯| 亚洲日本韩国一区| 亚洲国产视频一区二区| 天天色天天爱天天射综合| 丝袜美腿高跟呻吟高潮一区| 日韩激情av在线| 蜜臀99久久精品久久久久久软件 | 亚洲人成精品久久久久久| 国产精品卡一卡二| 亚洲男同性视频| 亚洲国产成人91porn| 亚洲国产精品久久久男人的天堂 | 中文字幕字幕中文在线中不卡视频| 中文欧美字幕免费| 亚洲品质自拍视频网站| 亚洲国产成人porn| 青草av.久久免费一区| 国产又粗又猛又爽又黄91精品| 国产精品一区不卡| 97国产一区二区| 欧美挠脚心视频网站| 日韩免费一区二区| 国产精品麻豆网站| 亚洲福利视频一区| 国产在线播精品第三| 不卡的看片网站| 欧美日韩精品专区| 久久久久久久久久电影| 亚洲欧美日韩综合aⅴ视频| 亚洲国产你懂的| 精品一区二区三区蜜桃| 色综合中文综合网| 91国产福利在线| 91精品国产综合久久精品| 久久精品夜色噜噜亚洲aⅴ| 中文字幕一区二区三| 偷拍自拍另类欧美| 国产成人午夜99999| 91久久精品午夜一区二区| 欧美成人综合网站| 亚洲人妖av一区二区| 日韩专区欧美专区| 成人av电影在线| 日韩视频在线你懂得| 亚洲欧美日韩中文字幕一区二区三区 | 色呦呦国产精品| 精品国产麻豆免费人成网站| 中文字幕在线一区二区三区| 日本视频一区二区| 色婷婷综合久久久| 国产亚洲一本大道中文在线| 性感美女久久精品| 91在线视频18| 精品国产乱码久久久久久久| 一区二区三区在线免费视频| 国产精品一品二品| 欧美一区二区三区性视频| 日韩一区有码在线| 国产精品一区久久久久| 欧美一区二区二区| 亚洲精品第1页| 成人午夜视频网站| 精品久久久久99| 香蕉久久一区二区不卡无毒影院| av综合在线播放| 国产欧美一区二区三区网站| 另类中文字幕网| 欧美丰满高潮xxxx喷水动漫| 一区二区三区久久久| caoporm超碰国产精品| 久久久三级国产网站| 久久精品国产一区二区三区免费看| 欧洲激情一区二区| 亚洲人快播电影网| 99久久国产综合色|国产精品| 久久免费偷拍视频| 老司机免费视频一区二区| 51久久夜色精品国产麻豆| 亚洲第一会所有码转帖| 日本大香伊一区二区三区| 亚洲色图一区二区三区| 成人国产精品视频| 中文字幕久久午夜不卡| 国产成人午夜99999| 国产亚洲制服色| 国产成人在线视频网址| 久久婷婷成人综合色| 久久国产婷婷国产香蕉| 日韩一级片网站| 蜜臀av一区二区在线观看| 欧美一区二区三级| 麻豆91在线播放免费| 日韩午夜激情免费电影| 奇米色一区二区三区四区| 日韩一区二区免费电影| 久久国产精品露脸对白| 久久综合色之久久综合| 韩国精品在线观看| 久久久久久一二三区| 粉嫩av一区二区三区在线播放 | 麻豆视频一区二区| 日韩欧美在线一区二区三区| 奇米精品一区二区三区四区| 欧美大片免费久久精品三p| 久久99这里只有精品| 久久久精品欧美丰满| 成人在线综合网站| 亚洲欧美日本韩国| 欧美男女性生活在线直播观看| 天堂va蜜桃一区二区三区 | 欧美不卡一区二区三区四区| 蜜臀久久99精品久久久久宅男| 精品久久一区二区| 国产999精品久久| 亚洲欧美另类在线| 欧美精品视频www在线观看| 日本成人在线看| 国产偷国产偷精品高清尤物| av动漫一区二区| 午夜激情综合网| 精品国产亚洲在线| 99视频超级精品| 日韩国产精品久久| 国产夜色精品一区二区av| 99视频一区二区| 视频在线观看91| 国产人成亚洲第一网站在线播放| 99久久777色| 日本不卡的三区四区五区| 久久精品无码一区二区三区| 色婷婷久久久综合中文字幕| 蜜乳av一区二区三区| 国产精品美女视频| 91麻豆精品国产91久久久资源速度| 国产揄拍国内精品对白| 一区二区在线看| 亚洲精品在线一区二区| 91久久精品一区二区| 国内精品伊人久久久久av影院 | 99久久精品免费| 蜜臀av一区二区在线观看| 国产精品二三区| 欧美一级国产精品| 99久久99久久精品免费看蜜桃 | 日产欧产美韩系列久久99| 国产欧美综合在线观看第十页| 欧美羞羞免费网站| 国产精品18久久久久久vr| 亚洲第一福利一区| 国产精品家庭影院| 日韩女优av电影| 欧美亚洲一区三区| 丰满白嫩尤物一区二区| 日韩av电影免费观看高清完整版 | 国产欧美一区二区三区在线老狼 | 日韩欧美视频一区|