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

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

?? tinyxml.cpp.svn-base

?? sigmadesign smp8623 gui source code ,bingo
?? SVN-BASE
?? 第 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() );
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区网站| 蜜臀久久99精品久久久久宅男 | 亚洲va天堂va国产va久| 久久福利资源站| 欧美主播一区二区三区美女| 久久一留热品黄| 亚洲va韩国va欧美va| 99re热视频这里只精品 | 欧美日韩国产成人在线91| 欧美韩日一区二区三区| 美日韩一区二区三区| 在线免费观看日本欧美| 国产精品免费人成网站| 黄页视频在线91| 欧美精品乱码久久久久久按摩| 国产精品成人一区二区三区夜夜夜| 久久精品国产99久久6| 欧美日韩二区三区| 一区二区三区成人| 91色在线porny| 亚洲人成在线播放网站岛国| 成人一二三区视频| 国产亚洲精品精华液| 极品瑜伽女神91| 久久免费国产精品| 国产精品538一区二区在线| 欧美精品一区二区三| 久久国产成人午夜av影院| 日韩一级精品视频在线观看| 麻豆精品视频在线观看| 日韩亚洲欧美中文三级| 美腿丝袜在线亚洲一区| 日韩欧美国产小视频| 蜜桃av一区二区在线观看| 日韩午夜在线观看| 国产一区啦啦啦在线观看| 久久久亚洲午夜电影| 国产精品2024| **网站欧美大片在线观看| 91丨porny丨户外露出| 亚洲另类色综合网站| 欧美日韩一区小说| 五月天久久比比资源色| 日韩三级高清在线| 国模冰冰炮一区二区| 国产欧美日韩在线观看| 91在线看国产| 一区二区三区免费观看| 在线不卡免费av| 国产专区综合网| 中文字幕一区二区三区蜜月| 91丝袜美腿高跟国产极品老师| 一区二区三区中文免费| 91精品国产一区二区三区蜜臀| 国产一区在线观看麻豆| 亚洲欧洲精品一区二区精品久久久| 色噜噜狠狠色综合欧洲selulu| 丝袜美腿高跟呻吟高潮一区| 久久网站最新地址| 一本久久a久久精品亚洲| 婷婷久久综合九色综合绿巨人| 日韩一卡二卡三卡四卡| 成人av网站在线观看免费| 亚洲永久免费av| 久久综合色婷婷| 在线亚洲人成电影网站色www| 美女视频黄免费的久久| 最新日韩在线视频| 欧美一区二区精品在线| 99国产一区二区三精品乱码| 日韩激情视频网站| 国产精品你懂的在线| 欧美欧美午夜aⅴ在线观看| 高清在线不卡av| 日韩精品乱码av一区二区| 久久久欧美精品sm网站| 欧美日免费三级在线| 国产福利一区二区三区视频| 午夜精品久久久久久久99水蜜桃| 久久精品人人做人人综合| 欧美视频在线不卡| av一本久道久久综合久久鬼色| 视频一区二区三区中文字幕| 国产精品毛片a∨一区二区三区| 欧美一区欧美二区| 91亚洲男人天堂| 成人黄色大片在线观看| 精品在线免费视频| 五月天久久比比资源色| 亚洲人精品午夜| 日本一区二区免费在线| 精品乱码亚洲一区二区不卡| 欧美日韩黄视频| 欧洲国内综合视频| 92国产精品观看| 不卡在线观看av| 粉嫩一区二区三区性色av| 激情综合亚洲精品| 美美哒免费高清在线观看视频一区二区 | 成人动漫精品一区二区| 激情六月婷婷综合| 日本亚洲天堂网| 亚洲第一成年网| 一二三区精品福利视频| 亚洲三级免费观看| 国产精品国产a| 亚洲国产精品成人综合色在线婷婷| 精品不卡在线视频| 日韩精品中文字幕在线不卡尤物| 欧美日韩在线免费视频| 欧美三级在线播放| 91精品午夜视频| 日韩一区二区三区电影| 日韩一本二本av| 久久婷婷久久一区二区三区| 精品国产一区二区三区忘忧草| 日韩一区二区三| 久久欧美一区二区| 国产精品无人区| 亚洲另类春色校园小说| 一区二区三区四区中文字幕| 亚洲一区二区在线观看视频| 一区二区三区中文字幕| 亚洲无线码一区二区三区| 性感美女久久精品| 久久精品国产免费| 国产成人免费视频| 99国产欧美另类久久久精品| 色综合 综合色| 91麻豆精品国产自产在线观看一区| 欧美一级午夜免费电影| 亚洲精品在线一区二区| 欧美韩国日本不卡| 一区二区三区欧美视频| 秋霞成人午夜伦在线观看| 久久99九九99精品| 99在线热播精品免费| 欧美视频日韩视频在线观看| 日韩一区二区三区观看| 中文字幕巨乱亚洲| 午夜不卡av在线| 国产精品99久久久久久有的能看 | 日韩欧美在线观看一区二区三区| 日韩欧美一区二区视频| 国产亚洲精久久久久久| 亚洲欧洲韩国日本视频| 午夜欧美在线一二页| 国产成人亚洲综合a∨猫咪| 91福利精品第一导航| 日韩美一区二区三区| 国产精品久久久久久久午夜片| 亚洲成av人片观看| 粉嫩av一区二区三区在线播放| 欧美亚洲动漫制服丝袜| 精品少妇一区二区三区免费观看| 国产精品乱码一区二三区小蝌蚪| 亚洲mv在线观看| 国产传媒久久文化传媒| 欧美日韩免费高清一区色橹橹| 精品国产伦一区二区三区免费| 亚洲日本韩国一区| 久久99久久久欧美国产| 欧美系列在线观看| 国产精品免费网站在线观看| 蜜桃视频第一区免费观看| 99re视频精品| 国产色产综合色产在线视频| 午夜视频久久久久久| 99这里都是精品| 久久免费精品国产久精品久久久久| 一区二区三区久久久| 粉嫩av亚洲一区二区图片| 欧美一级高清片| 一区二区三区四区国产精品| 国产精品91一区二区| 日韩免费看的电影| 日韩和的一区二区| 色狠狠综合天天综合综合| 国产蜜臀97一区二区三区| 久久99精品网久久| 日韩一区二区三区免费观看| 亚洲v日本v欧美v久久精品| 日本韩国精品一区二区在线观看| 中文字幕不卡一区| 国产成人亚洲综合色影视| 精品国产乱码久久久久久图片| 午夜精品久久久久久久久久久| 91麻豆福利精品推荐| **性色生活片久久毛片| 成人免费的视频| 中文字幕久久午夜不卡| 国产精品亚洲成人| 久久久久国产精品麻豆 | 青青草国产成人99久久| 在线观看国产精品网站| 亚洲一区视频在线| 欧美三级乱人伦电影| 亚洲gay无套男同| 678五月天丁香亚洲综合网| 天天色天天操综合|