1562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project/* 2562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectwww.sourceforge.net/projects/tinyxml 30238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertOriginal code (2.0 and earlier )copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com) 4562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 5562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectThis software is provided 'as-is', without any express or implied 6562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectwarranty. In no event will the authors be held liable for any 7562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectdamages arising from the use of this software. 8562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectPermission is granted to anyone to use this software for any 10562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectpurpose, including commercial applications, and to alter it and 11562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectredistribute it freely, subject to the following restrictions: 12562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 13562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project1. The origin of this software must not be misrepresented; you must 14562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectnot claim that you wrote the original software. If you use this 15562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectsoftware in a product, an acknowledgment in the product documentation 16562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectwould be appreciated but is not required. 17562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 18562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project2. Altered source versions must be plainly marked as such, and 19562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectmust not be misrepresented as being the original software. 20562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 21562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project3. This notice may not be removed or altered from any source 22562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectdistribution. 23562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project*/ 24562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 25562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#include <ctype.h> 260238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert#include "tinyxml.h" 27562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 28562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#ifdef TIXML_USE_STL 29562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#include <sstream> 30562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#endif 31562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 32562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 33562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectbool TiXmlBase::condenseWhiteSpace = true; 34562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlBase::PutString( const TIXML_STRING& str, TIXML_OSTREAM* stream ) 36562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TIXML_STRING buffer; 380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( str, &buffer ); 390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << buffer; 40562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 41562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 420238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlBase::PutString( const TIXML_STRING& str, TIXML_STRING* outString ) 43562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 44562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project int i=0; 45562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 46562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project while( i<(int)str.length() ) 47562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 48562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project unsigned char c = (unsigned char) str[i]; 49562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 50562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( c == '&' 51562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project && i < ( (int)str.length() - 2 ) 52562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project && str[i+1] == '#' 53562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project && str[i+2] == 'x' ) 54562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 55562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Hexadecimal character reference. 56562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Pass through unchanged. 57562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // © -- copyright symbol, for example. 58562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // 59562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // The -1 is a bug fix from Rob Laveaux. It keeps 60562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // an overflow from happening if there is no ';'. 61562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // There are actually 2 ways to exit this loop - 62562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // while fails (error case) and break (semicolon found). 63562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // However, there is no mechanism (currently) for 64562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // this function to return an error. 65562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project while ( i<(int)str.length()-1 ) 66562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 67562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project outString->append( str.c_str() + i, 1 ); 68562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++i; 69562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( str[i] == ';' ) 70562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project break; 71562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 72562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 73562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else if ( c == '&' ) 74562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 75562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project outString->append( entity[0].str, entity[0].strLength ); 76562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++i; 77562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 78562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else if ( c == '<' ) 79562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 80562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project outString->append( entity[1].str, entity[1].strLength ); 81562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++i; 82562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 83562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else if ( c == '>' ) 84562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 85562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project outString->append( entity[2].str, entity[2].strLength ); 86562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++i; 87562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 88562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else if ( c == '\"' ) 89562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 90562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project outString->append( entity[3].str, entity[3].strLength ); 91562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++i; 92562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 93562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else if ( c == '\'' ) 94562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 95562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project outString->append( entity[4].str, entity[4].strLength ); 96562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++i; 97562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 98562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else if ( c < 32 ) 99562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 100562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Easy pass at non-alpha/numeric/symbol 101562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Below 32 is symbolic. 102562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project char buf[ 32 ]; 103562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 104562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #if defined(TIXML_SNPRINTF) 105562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) ); 106562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #else 107562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) ); 108562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #endif 109562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 110562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project //*ME: warning C4267: convert 'size_t' to 'int' 111562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project //*ME: Int-Cast to make compiler happy ... 112562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project outString->append( buf, (int)strlen( buf ) ); 113562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++i; 114562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 115562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 116562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 117562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project //char realc = (char) c; 118562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project //outString->append( &realc, 1 ); 119562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project *outString += (char) c; // somewhat more efficient function call. 120562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++i; 121562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 122562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 123562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 124562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 125562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1260238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert// <-- Strange class for a bug fix. Search for STL_STRING_BUG 1270238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlBase::StringToBuffer::StringToBuffer( const TIXML_STRING& str ) 1280238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 1290238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert buffer = new char[ str.length()+1 ]; 1300238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( buffer ) 1310238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 1320238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert strcpy( buffer, str.c_str() ); 1330238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 1340238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 1350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 1360238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 1370238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlBase::StringToBuffer::~StringToBuffer() 1380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 1390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert delete [] buffer; 1400238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 1410238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert// End strange bug fix. --> 1420238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 1430238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 144562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase() 145562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 146562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project parent = 0; 147562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project type = _type; 148562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild = 0; 149562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastChild = 0; 150562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project prev = 0; 151562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project next = 0; 152562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 153562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 154562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 155562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode::~TiXmlNode() 156562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 157562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node = firstChild; 158562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* temp = 0; 159562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 160562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project while ( node ) 161562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 162562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project temp = node; 163562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node = node->next; 164562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project delete temp; 165562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 166562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 167562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 168562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 169562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlNode::CopyTo( TiXmlNode* target ) const 170562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 171562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project target->SetValue (value.c_str() ); 172562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project target->userData = userData; 173562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 174562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 175562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 176562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlNode::Clear() 177562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 178562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node = firstChild; 179562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* temp = 0; 180562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 181562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project while ( node ) 182562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 183562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project temp = node; 184562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node = node->next; 185562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project delete temp; 186562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 187562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 188562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild = 0; 189562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastChild = 0; 190562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 191562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 192562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 193562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) 194562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 195562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->parent = this; 196562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 197562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->prev = lastChild; 198562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->next = 0; 199562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 200562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( lastChild ) 201562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastChild->next = node; 202562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 203562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild = node; // it was an empty list. 204562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 205562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastChild = node; 206562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 207562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 208562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 209562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 210562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) 211562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 212562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node = addThis.Clone(); 213562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !node ) 214562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 215562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 216562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return LinkEndChild( node ); 217562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 218562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 219562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 220562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) 221562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 2220238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !beforeThis || beforeThis->parent != this ) 223562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 224562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 225562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node = addThis.Clone(); 226562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !node ) 227562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 228562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->parent = this; 229562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 230562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->next = beforeThis; 231562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->prev = beforeThis->prev; 232562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( beforeThis->prev ) 233562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 234562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project beforeThis->prev->next = node; 235562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 236562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 237562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 238562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( firstChild == beforeThis ); 239562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild = node; 240562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 241562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project beforeThis->prev = node; 242562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 243562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 244562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 245562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 246562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) 247562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 2480238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !afterThis || afterThis->parent != this ) 249562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 250562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 251562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node = addThis.Clone(); 252562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !node ) 253562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 254562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->parent = this; 255562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 256562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->prev = afterThis; 257562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->next = afterThis->next; 258562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( afterThis->next ) 259562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 260562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project afterThis->next->prev = node; 261562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 262562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 263562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 264562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( lastChild == afterThis ); 265562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastChild = node; 266562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 267562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project afterThis->next = node; 268562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 269562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 270562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 271562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 272562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) 273562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 274562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( replaceThis->parent != this ) 275562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 276562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 277562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node = withThis.Clone(); 278562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !node ) 279562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 280562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 281562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->next = replaceThis->next; 282562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->prev = replaceThis->prev; 283562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 284562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( replaceThis->next ) 285562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project replaceThis->next->prev = node; 286562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 287562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastChild = node; 288562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 289562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( replaceThis->prev ) 290562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project replaceThis->prev->next = node; 291562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 292562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild = node; 293562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 294562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project delete replaceThis; 295562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->parent = this; 296562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 297562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 298562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 299562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 300562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectbool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) 301562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 302562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( removeThis->parent != this ) 303562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 304562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( 0 ); 305562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return false; 306562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 307562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 308562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( removeThis->next ) 309562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project removeThis->next->prev = removeThis->prev; 310562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 311562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastChild = removeThis->prev; 312562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 313562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( removeThis->prev ) 314562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project removeThis->prev->next = removeThis->next; 315562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 316562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild = removeThis->next; 317562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 318562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project delete removeThis; 319562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return true; 320562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 321562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 322562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const 323562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 324562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 325562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = firstChild; node; node = node->next ) 326562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 327562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( strcmp( node->Value(), _value ) == 0 ) 328562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 329562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 330562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 331562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 332562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 333562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 3340238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlNode* TiXmlNode::FirstChild( const char * _value ) 3350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 3360238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 3370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node = firstChild; node; node = node->next ) 3380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 3390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( strcmp( node->Value(), _value ) == 0 ) 3400238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node; 3410238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 3420238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return 0; 3430238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 3440238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 3450238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 346562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlNode* TiXmlNode::LastChild( const char * _value ) const 347562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 348562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 349562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = lastChild; node; node = node->prev ) 350562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 351562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( strcmp( node->Value(), _value ) == 0 ) 352562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 353562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 354562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 355562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 356562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 3570238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlNode* TiXmlNode::LastChild( const char * _value ) 3580238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 3590238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 3600238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node = lastChild; node; node = node->prev ) 3610238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 3620238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( strcmp( node->Value(), _value ) == 0 ) 3630238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node; 3640238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 3650238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return 0; 3660238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 367562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 368562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const 369562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 370562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !previous ) 371562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 372562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return FirstChild(); 373562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 374562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 375562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 376562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( previous->parent == this ); 377562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return previous->NextSibling(); 378562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 379562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 380562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 3810238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlNode* TiXmlNode::IterateChildren( TiXmlNode* previous ) 3820238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 3830238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !previous ) 3840238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 3850238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return FirstChild(); 3860238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 3870238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 3880238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 3890238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert assert( previous->parent == this ); 3900238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return previous->NextSibling(); 3910238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 3920238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 393562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 394562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const 395562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 396562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !previous ) 397562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 398562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return FirstChild( val ); 399562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 400562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 401562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 402562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( previous->parent == this ); 403562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return previous->NextSibling( val ); 404562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 405562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 406562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 4070238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlNode* TiXmlNode::IterateChildren( const char * val, TiXmlNode* previous ) 4080238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 4090238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !previous ) 4100238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 4110238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return FirstChild( val ); 4120238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 4130238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 4140238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 4150238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert assert( previous->parent == this ); 4160238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return previous->NextSibling( val ); 4170238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 4180238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 419562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 420562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const 421562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 422562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 423562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = next; node; node = node->next ) 424562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 425562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( strcmp( node->Value(), _value ) == 0 ) 426562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 427562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 428562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 429562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 430562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 4310238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlNode* TiXmlNode::NextSibling( const char * _value ) 4320238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 4330238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 4340238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node = next; node; node = node->next ) 4350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 4360238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( strcmp( node->Value(), _value ) == 0 ) 4370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node; 4380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 4390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return 0; 4400238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 441562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 442562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const 443562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 444562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 445562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = prev; node; node = node->prev ) 446562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 447562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( strcmp( node->Value(), _value ) == 0 ) 448562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 449562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 450562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 451562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 452562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 4530238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) 4540238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 4550238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 4560238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node = prev; node; node = node->prev ) 4570238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 4580238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( strcmp( node->Value(), _value ) == 0 ) 4590238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node; 4600238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 4610238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return 0; 4620238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 463562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 464562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlElement::RemoveAttribute( const char * name ) 465562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 466562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlAttribute* node = attributeSet.Find( name ); 467562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 468562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 469562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project attributeSet.Remove( node ); 470562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project delete node; 471562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 472562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 473562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 474562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlElement* TiXmlNode::FirstChildElement() const 475562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 476562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 477562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 478562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = FirstChild(); 479562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node; 480562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node = node->NextSibling() ) 481562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 482562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToElement() ) 483562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToElement(); 484562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 485562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 486562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 487562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 4880238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlElement* TiXmlNode::FirstChildElement() 4890238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 4900238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 4910238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 4920238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node = FirstChild(); 4930238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node; 4940238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node = node->NextSibling() ) 4950238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 4960238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( node->ToElement() ) 4970238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node->ToElement(); 4980238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 4990238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return 0; 5000238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 501562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 502562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const 503562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 504562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 505562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 506562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = FirstChild( _value ); 507562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node; 508562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node = node->NextSibling( _value ) ) 509562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 510562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToElement() ) 511562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToElement(); 512562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 513562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 514562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 515562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 5160238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) 5170238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 5180238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 5190238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 5200238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node = FirstChild( _value ); 5210238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node; 5220238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node = node->NextSibling( _value ) ) 5230238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 5240238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( node->ToElement() ) 5250238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node->ToElement(); 5260238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 5270238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return 0; 5280238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 529562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 530562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlElement* TiXmlNode::NextSiblingElement() const 531562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 532562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 533562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 534562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = NextSibling(); 5350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node; 5360238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node = node->NextSibling() ) 537562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 538562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToElement() ) 539562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToElement(); 540562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 541562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 542562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 543562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 5440238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlElement* TiXmlNode::NextSiblingElement() 5450238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 5460238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 5470238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 5480238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node = NextSibling(); 5490238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node; 5500238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node = node->NextSibling() ) 5510238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 5520238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( node->ToElement() ) 5530238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node->ToElement(); 5540238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 5550238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return 0; 5560238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 557562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 558562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const 559562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 560562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 561562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 562562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = NextSibling( _value ); 5630238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node; 5640238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node = node->NextSibling( _value ) ) 5650238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 5660238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( node->ToElement() ) 5670238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node->ToElement(); 5680238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 5690238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return 0; 5700238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 5710238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 5720238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) 5730238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 5740238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 5750238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 5760238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node = NextSibling( _value ); 5770238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node; 5780238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node = node->NextSibling( _value ) ) 579562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 580562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToElement() ) 581562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToElement(); 582562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 583562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 584562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 585562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 586562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 587562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlDocument* TiXmlNode::GetDocument() const 588562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 589562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 590562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 591562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for( node = this; node; node = node->parent ) 592562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 593562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToDocument() ) 594562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToDocument(); 595562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 596562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 597562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 598562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 5990238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlDocument* TiXmlNode::GetDocument() 6000238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 6010238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 6020238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 6030238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for( node = this; node; node = node->parent ) 6040238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 6050238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( node->ToDocument() ) 6060238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node->ToDocument(); 6070238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 6080238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return 0; 6090238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 610562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 611562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlElement::TiXmlElement (const char * _value) 6120238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert : TiXmlNode( TiXmlNode::ELEMENT ) 613562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 614562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild = lastChild = 0; 615562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project value = _value; 616562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 617562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 618562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 619562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#ifdef TIXML_USE_STL 620562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlElement::TiXmlElement( const std::string& _value ) 6210238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert : TiXmlNode( TiXmlNode::ELEMENT ) 622562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 623562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild = lastChild = 0; 624562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project value = _value; 625562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 626562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#endif 627562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 628562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 629562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlElement::TiXmlElement( const TiXmlElement& copy) 6300238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert : TiXmlNode( TiXmlNode::ELEMENT ) 631562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 632562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild = lastChild = 0; 633562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project copy.CopyTo( this ); 634562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 635562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 636562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 6370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlElement::operator=( const TiXmlElement& base ) 638562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 639562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ClearThis(); 640562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project base.CopyTo( this ); 641562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 642562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 643562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 644562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlElement::~TiXmlElement() 645562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 646562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ClearThis(); 647562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 648562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 649562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 650562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlElement::ClearThis() 651562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 652562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project Clear(); 653562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project while( attributeSet.First() ) 654562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 655562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlAttribute* node = attributeSet.First(); 656562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project attributeSet.Remove( node ); 657562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project delete node; 658562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 659562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 660562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 661562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 6620238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertconst char * TiXmlElement::Attribute( const char * name ) const 663562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 664562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlAttribute* node = attributeSet.Find( name ); 6650238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 666562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 667562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->Value(); 668562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 669562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 670562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 671562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 672562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 6730238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertconst char * TiXmlElement::Attribute( const char * name, int* i ) const 674562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 6750238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const char * s = Attribute( name ); 6760238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( i ) 6770238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 6780238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( s ) 6790238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert *i = atoi( s ); 6800238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 6810238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert *i = 0; 682c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert } 6830238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return s; 684c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert} 685c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert 686c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert 6870238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertconst char * TiXmlElement::Attribute( const char * name, double* d ) const 688c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert{ 6890238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const char * s = Attribute( name ); 6900238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( d ) 6910238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 6920238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( s ) 6930238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert *d = atof( s ); 6940238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 6950238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert *d = 0; 696562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 6970238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return s; 698562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 699562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 700562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 701562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectint TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const 702562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 703562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlAttribute* node = attributeSet.Find( name ); 704562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !node ) 705562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TIXML_NO_ATTRIBUTE; 706562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 7070238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node->QueryIntValue( ival ); 708562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 709562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 710562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 7110238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertint TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const 712562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 713562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlAttribute* node = attributeSet.Find( name ); 714562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !node ) 715562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TIXML_NO_ATTRIBUTE; 716562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 7170238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return node->QueryDoubleValue( dval ); 718562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 719562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 720562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 721562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlElement::SetAttribute( const char * name, int val ) 722562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 7230238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert char buf[64]; 7240238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert #if defined(TIXML_SNPRINTF) 7250238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TIXML_SNPRINTF( buf, sizeof(buf), "%d", val ); 7260238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert #else 7270238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert sprintf( buf, "%d", val ); 7280238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert #endif 7290238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert SetAttribute( name, buf ); 730562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 731562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 732562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 733562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlElement::SetDoubleAttribute( const char * name, double val ) 734562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 7350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert char buf[256]; 7360238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert #if defined(TIXML_SNPRINTF) 7370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TIXML_SNPRINTF( buf, sizeof(buf), "%f", val ); 7380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert #else 7390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert sprintf( buf, "%f", val ); 7400238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert #endif 7410238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert SetAttribute( name, buf ); 742c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert} 743562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 744c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert 7450238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlElement::SetAttribute( const char * name, const char * _value ) 746c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert{ 7470238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlAttribute* node = attributeSet.Find( name ); 7480238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( node ) 7490238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 7500238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node->SetValue( _value ); 7510238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return; 752562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 753c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert 7540238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlAttribute* attrib = new TiXmlAttribute( name, _value ); 7550238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( attrib ) 7560238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 7570238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert attributeSet.Add( attrib ); 7580238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 7590238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 7600238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 7610238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlDocument* document = GetDocument(); 7620238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, 0, 0, TIXML_ENCODING_UNKNOWN ); 763562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 764562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 765562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 766562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlElement::Print( FILE* cfile, int depth ) const 767562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 768562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project int i; 7690238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( i=0; i<depth; i++ ) 7700238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 771562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, " " ); 772562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 773562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 774562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "<%s", value.c_str() ); 775562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 776562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlAttribute* attrib; 777562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() ) 778562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 779562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, " " ); 780562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project attrib->Print( cfile, depth ); 781562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 782562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 783562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // There are 3 different formatting approaches: 784562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // 1) An element without children is printed as a <foo /> node 785562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // 2) An element with only a text child is printed as <foo> text </foo> 786562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // 3) An element with children is printed on multiple lines. 787562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 788562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !firstChild ) 789562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 790562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, " />" ); 791562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 792562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else if ( firstChild == lastChild && firstChild->ToText() ) 793562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 794562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, ">" ); 795562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project firstChild->Print( cfile, depth + 1 ); 796562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "</%s>", value.c_str() ); 797562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 798562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 799562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 800562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, ">" ); 801562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 802562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = firstChild; node; node=node->NextSibling() ) 803562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 804562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !node->ToText() ) 805562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 806562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "\n" ); 807562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 808562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->Print( cfile, depth+1 ); 809562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 810562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "\n" ); 8110238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for( i=0; i<depth; ++i ) 8120238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf( cfile, " " ); 813c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert fprintf( cfile, "</%s>", value.c_str() ); 814562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 815562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 816562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 8170238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlElement::StreamOut( TIXML_OSTREAM * stream ) const 8180238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 8190238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "<" << value; 8200238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 8210238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const TiXmlAttribute* attrib; 8220238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() ) 8230238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 8240238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << " "; 8250238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert attrib->StreamOut( stream ); 8260238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 8270238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 8280238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // If this node has children, give it a closing tag. Else 8290238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // make it an empty tag. 8300238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode* node; 8310238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( firstChild ) 8320238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 8330238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << ">"; 8340238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 8350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node = firstChild; node; node=node->NextSibling() ) 8360238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 8370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node->StreamOut( stream ); 8380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 8390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "</" << value << ">"; 8400238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 8410238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 8420238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 8430238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << " />"; 8440238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 8450238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 8460238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 847562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 848562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlElement::CopyTo( TiXmlElement* target ) const 849562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 850562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // superclass: 851562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode::CopyTo( target ); 852562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 853562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Element class: 854562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Clone the attributes, then clone the children. 855562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlAttribute* attribute = 0; 856562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for( attribute = attributeSet.First(); 857562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project attribute; 858562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project attribute = attribute->Next() ) 859562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 860562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project target->SetAttribute( attribute->Name(), attribute->Value() ); 861562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 862562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 863562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node = 0; 864562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = firstChild; node; node = node->NextSibling() ) 865562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 866562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project target->LinkEndChild( node->Clone() ); 867562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 868562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 869562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 870562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 871562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlElement::Clone() const 872562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 873562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlElement* clone = new TiXmlElement( Value() ); 874562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !clone ) 875562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 876562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 877562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project CopyTo( clone ); 878562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return clone; 879562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 880562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 881562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 882562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst char* TiXmlElement::GetText() const 883562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 884562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* child = this->FirstChild(); 885562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( child ) { 886562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlText* childText = child->ToText(); 887562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( childText ) { 888562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return childText->Value(); 889562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 890562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 891562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 892562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 893562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 894562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 8950238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::DOCUMENT ) 896562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 897562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project tabsize = 4; 898562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project useMicrosoftBOM = false; 899562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ClearError(); 900562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 901562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9020238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::DOCUMENT ) 903562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 904562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project tabsize = 4; 905562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project useMicrosoftBOM = false; 906562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project value = documentName; 907562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ClearError(); 908562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 909562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 910562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 911562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#ifdef TIXML_USE_STL 9120238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::DOCUMENT ) 913562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 914562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project tabsize = 4; 915562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project useMicrosoftBOM = false; 916562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project value = documentName; 917562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ClearError(); 918562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 919562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#endif 920562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 921562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9220238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::DOCUMENT ) 923562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 924562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project copy.CopyTo( this ); 925562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 926562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 927562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9280238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlDocument::operator=( const TiXmlDocument& copy ) 929562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 930562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project Clear(); 931562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project copy.CopyTo( this ); 932562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 933562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 934562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 935562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectbool TiXmlDocument::LoadFile( TiXmlEncoding encoding ) 936562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 9370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // See STL_STRING_BUG below. 9380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert StringToBuffer buf( value ); 939562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9400238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( buf.buffer && LoadFile( buf.buffer, encoding ) ) 9410238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return true; 942562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9430238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return false; 944c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert} 945562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9460238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 9470238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertbool TiXmlDocument::SaveFile() const 948c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert{ 9490238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // See STL_STRING_BUG below. 9500238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert StringToBuffer buf( value ); 951562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9520238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( buf.buffer && SaveFile( buf.buffer ) ) 9530238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return true; 954c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert 9550238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return false; 956562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 957562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9580238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertbool TiXmlDocument::LoadFile( const char* filename, TiXmlEncoding encoding ) 959562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 960562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Delete the existing data: 961562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project Clear(); 962562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project location.Clear(); 963562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9640238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // There was a really terrifying little bug here. The code: 9650238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // value = filename 9660238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // in the STL case, cause the assignment method of the std::string to 9670238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // be called. What is strange, is that the std::string had the same 9680238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // address as it's c_str() method, and so bad things happen. Looks 9690238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // like a bug in the Microsoft STL implementation. 9700238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // See STL_STRING_BUG above. 9710238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Fixed with the StringToBuffer class. 9720238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert value = filename; 9730238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 9740238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // reading in binary mode so that tinyxml can normalize the EOL 9750238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert FILE* file = fopen( value.c_str (), "rb" ); 976562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9770238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( file ) 978562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 9790238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Get the file size, so we can pre-allocate the string. HUGE speed impact. 9800238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert long length = 0; 9810238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fseek( file, 0, SEEK_END ); 9820238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert length = ftell( file ); 9830238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fseek( file, 0, SEEK_SET ); 984562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9850238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Strange case, but good to handle up front. 9860238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( length == 0 ) 9870238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 9880238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fclose( file ); 9890238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return false; 9900238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 991562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 9920238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // If we have a file, assume it is all one big XML file, and read it in. 9930238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // The document parser may decide the document ends sooner than the entire file, however. 9940238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TIXML_STRING data; 9950238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert data.reserve( length ); 9960238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 9970238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Subtle bug here. TinyXml did use fgets. But from the XML spec: 9980238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // 2.11 End-of-Line Handling 9990238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // <snip> 10000238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // <quote> 10010238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // ...the XML processor MUST behave as if it normalized all line breaks in external 10020238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // parsed entities (including the document entity) on input, before parsing, by translating 10030238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // both the two-character sequence #xD #xA and any #xD that is not followed by #xA to 10040238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // a single #xA character. 10050238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // </quote> 10060238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // 10070238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // It is not clear fgets does that, and certainly isn't clear it works cross platform. 10080238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Generally, you expect fgets to translate from the convention of the OS to the c/unix 10090238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // convention, and not work generally. 10100238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 10110238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert /* 10120238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert while( fgets( buf, sizeof(buf), file ) ) 10130238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 10140238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert data += buf; 10150238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 10160238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert */ 1017562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 10180238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert char* buf = new char[ length+1 ]; 10190238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert buf[0] = 0; 1020562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 10210238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( fread( buf, length, 1, file ) != 1 ) { 10220238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert //if ( fread( buf, 1, length, file ) != (size_t)length ) { 10230238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); 10240238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fclose( file ); 10250238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return false; 10260238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 10270238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fclose( file ); 1028562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 10290238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const char* lastPos = buf; 10300238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const char* p = buf; 10310238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 10320238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert buf[length] = 0; 10330238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert while( *p ) { 10340238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert assert( p < (buf+length) ); 10350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( *p == 0xa ) { 10360238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Newline character. No special rules for this. Append all the characters 10370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // since the last string, and include the newline. 10380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert data.append( lastPos, p-lastPos+1 ); // append, include the newline 10390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert ++p; // move past the newline 10400238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert lastPos = p; // and point to the new buffer (may be 0) 10410238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert assert( p <= (buf+length) ); 10420238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 10430238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else if ( *p == 0xd ) { 10440238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Carriage return. Append what we have so far, then 10450238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // handle moving forward in the buffer. 10460238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( (p-lastPos) > 0 ) { 10470238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert data.append( lastPos, p-lastPos ); // do not add the CR 10480238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 10490238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert data += (char)0xa; // a proper newline 10500238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 10510238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( *(p+1) == 0xa ) { 10520238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Carriage return - new line sequence 10530238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert p += 2; 10540238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert lastPos = p; 10550238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert assert( p <= (buf+length) ); 10560238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 10570238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else { 10580238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // it was followed by something else...that is presumably characters again. 10590238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert ++p; 10600238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert lastPos = p; 10610238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert assert( p <= (buf+length) ); 10620238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 10630238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 10640238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else { 10650238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert ++p; 1066562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1067562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 10680238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Handle any left over characters. 10690238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( p-lastPos ) { 10700238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert data.append( lastPos, p-lastPos ); 10710238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 10720238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert delete [] buf; 10730238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert buf = 0; 1074562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 10750238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert Parse( data.c_str(), 0, encoding ); 1076562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 10770238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( Error() ) 10780238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return false; 10790238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 10800238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return true; 10810238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 10820238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); 10830238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return false; 1084562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1085562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1086562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectbool TiXmlDocument::SaveFile( const char * filename ) const 1087562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1088562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // The old c stuff lives on... 10890238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert FILE* fp = fopen( filename, "w" ); 1090562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( fp ) 1091562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 10920238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( useMicrosoftBOM ) 10930238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 10940238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const unsigned char TIXML_UTF_LEAD_0 = 0xefU; 10950238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; 10960238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; 10970238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 10980238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fputc( TIXML_UTF_LEAD_0, fp ); 10990238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fputc( TIXML_UTF_LEAD_1, fp ); 11000238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fputc( TIXML_UTF_LEAD_2, fp ); 11010238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 11020238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert Print( fp, 0 ); 1103562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fclose( fp ); 11040238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return true; 1105562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1106562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return false; 1107562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1108562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1109562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1110562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlDocument::CopyTo( TiXmlDocument* target ) const 1111562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1112562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode::CopyTo( target ); 1113562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1114562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project target->error = error; 11150238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert target->errorDesc = errorDesc.c_str (); 1116562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1117562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node = 0; 1118562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = firstChild; node; node = node->NextSibling() ) 1119562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1120562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project target->LinkEndChild( node->Clone() ); 1121562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1122562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1123562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1124562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1125562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlDocument::Clone() const 1126562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1127562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlDocument* clone = new TiXmlDocument(); 1128562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !clone ) 1129562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1130562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1131562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project CopyTo( clone ); 1132562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return clone; 1133562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1134562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1135562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1136562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlDocument::Print( FILE* cfile, int depth ) const 1137562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 11380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const TiXmlNode* node; 11390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node=FirstChild(); node; node=node->NextSibling() ) 1140562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1141562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->Print( cfile, depth ); 1142562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "\n" ); 1143562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1144562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1145562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 11460238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlDocument::StreamOut( TIXML_OSTREAM * out ) const 1147562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 11480238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const TiXmlNode* node; 11490238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( node=FirstChild(); node; node=node->NextSibling() ) 1150562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 11510238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert node->StreamOut( out ); 11520238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 11530238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // Special rule for streams: stop after the root element. 11540238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // The stream in code will only read one element, so don't 11550238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert // write more than one. 11560238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( node->ToElement() ) 11570238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert break; 1158562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1159562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1160562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1161562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1162562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlAttribute* TiXmlAttribute::Next() const 1163562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1164562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // We are using knowledge of the sentinel. The sentinel 1165562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // have a value or name. 1166562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( next->value.empty() && next->name.empty() ) 1167562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1168562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return next; 1169562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1170562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1171562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlAttribute* TiXmlAttribute::Next() 1172562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1173562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // We are using knowledge of the sentinel. The sentinel 1174562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // have a value or name. 1175562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( next->value.empty() && next->name.empty() ) 1176562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1177562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return next; 1178562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1179562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1180562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlAttribute* TiXmlAttribute::Previous() const 1181562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1182562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // We are using knowledge of the sentinel. The sentinel 1183562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // have a value or name. 1184562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( prev->value.empty() && prev->name.empty() ) 1185562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1186562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return prev; 1187562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1188562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1189562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlAttribute* TiXmlAttribute::Previous() 1190562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1191562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // We are using knowledge of the sentinel. The sentinel 1192562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // have a value or name. 1193562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( prev->value.empty() && prev->name.empty() ) 1194562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1195562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return prev; 1196562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1197562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 11980238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlAttribute::Print( FILE* cfile, int /*depth*/ ) const 1199562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1200562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_STRING n, v; 1201562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 12020238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( name, &n ); 12030238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( value, &v ); 1204562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 12050238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if (value.find ('\"') == TIXML_STRING::npos) 12060238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() ); 12070238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 12080238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() ); 12090238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 12100238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 12110238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 12120238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlAttribute::StreamOut( TIXML_OSTREAM * stream ) const 12130238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 12140238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if (value.find( '\"' ) != TIXML_STRING::npos) 12150238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 12160238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( name, stream ); 12170238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "=" << "'"; 12180238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( value, stream ); 12190238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "'"; 1220562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 12210238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 12220238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 12230238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( name, stream ); 12240238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "=" << "\""; 12250238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( value, stream ); 12260238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "\""; 1227562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1228562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1229562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1230562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectint TiXmlAttribute::QueryIntValue( int* ival ) const 1231562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 12320238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( sscanf( value.c_str(), "%d", ival ) == 1 ) 1233562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TIXML_SUCCESS; 1234562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TIXML_WRONG_TYPE; 1235562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1236562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1237562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectint TiXmlAttribute::QueryDoubleValue( double* dval ) const 1238562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 12390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( sscanf( value.c_str(), "%lf", dval ) == 1 ) 1240562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TIXML_SUCCESS; 1241562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TIXML_WRONG_TYPE; 1242562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1243562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1244562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlAttribute::SetIntValue( int _value ) 1245562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1246562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project char buf [64]; 1247562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #if defined(TIXML_SNPRINTF) 1248562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value); 1249562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #else 1250562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project sprintf (buf, "%d", _value); 1251562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #endif 1252562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project SetValue (buf); 1253562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1254562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1255562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlAttribute::SetDoubleValue( double _value ) 1256562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1257562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project char buf [256]; 1258562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #if defined(TIXML_SNPRINTF) 12590238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TIXML_SNPRINTF( buf, sizeof(buf), "%lf", _value); 1260562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #else 12610238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert sprintf (buf, "%lf", _value); 1262562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #endif 1263562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project SetValue (buf); 1264562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1265562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1266562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectint TiXmlAttribute::IntValue() const 1267562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1268562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return atoi (value.c_str ()); 1269562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1270562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1271562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectdouble TiXmlAttribute::DoubleValue() const 1272562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1273562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return atof (value.c_str ()); 1274562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1275562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1276562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 12770238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::COMMENT ) 1278562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1279562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project copy.CopyTo( this ); 1280562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1281562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1282562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 12830238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlComment::operator=( const TiXmlComment& base ) 1284562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1285562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project Clear(); 1286562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project base.CopyTo( this ); 1287562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1288562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1289562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1290562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlComment::Print( FILE* cfile, int depth ) const 1291562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1292562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( int i=0; i<depth; i++ ) 1293562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 12940238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fputs( " ", cfile ); 1295562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1296562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "<!--%s-->", value.c_str() ); 1297562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1298562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 12990238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlComment::StreamOut( TIXML_OSTREAM * stream ) const 1300562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 13010238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "<!--"; 13020238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert //PutString( value, stream ); 13030238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << value; 13040238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "-->"; 1305562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1306562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1307562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 13080238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlComment::CopyTo( TiXmlComment* target ) const 1309562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 13100238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode::CopyTo( target ); 1311562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1312562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1313562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1314562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlComment::Clone() const 1315562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1316562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlComment* clone = new TiXmlComment(); 1317562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1318562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !clone ) 1319562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1320562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1321562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project CopyTo( clone ); 1322562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return clone; 1323562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1324562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1325562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1326562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlText::Print( FILE* cfile, int depth ) const 1327562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1328562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( cdata ) 1329562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1330562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project int i; 1331562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "\n" ); 1332562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( i=0; i<depth; i++ ) { 1333562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, " " ); 1334562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 13350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf( cfile, "<![CDATA[\n" ); 13360238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 13370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf( cfile, "%s", value.c_str() ); // unformatted output 13380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 13390238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf( cfile, "\n" ); 13400238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for ( i=0; i<depth; i++ ) { 13410238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf( cfile, " " ); 13420238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 13430238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf( cfile, "]]>\n" ); 1344562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1345562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 1346562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1347562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_STRING buffer; 13480238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( value, &buffer ); 1349562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "%s", buffer.c_str() ); 1350562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1351562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1352562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1353562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 13540238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlText::StreamOut( TIXML_OSTREAM * stream ) const 1355562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 13560238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( cdata ) 13570238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 13580238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "<![CDATA[" << value << "]]>"; 13590238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 13600238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert else 13610238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 13620238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( value, stream ); 13630238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert } 1364562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1365562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1366562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 13670238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlText::CopyTo( TiXmlText* target ) const 1368562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 13690238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode::CopyTo( target ); 13700238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert target->cdata = cdata; 1371562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1372562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1373562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1374562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlText::Clone() const 1375562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1376562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlText* clone = 0; 1377562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project clone = new TiXmlText( "" ); 1378562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1379562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !clone ) 1380562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1381562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1382562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project CopyTo( clone ); 1383562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return clone; 1384562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1385562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1386562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1387562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlDeclaration::TiXmlDeclaration( const char * _version, 1388562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const char * _encoding, 1389562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const char * _standalone ) 13900238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert : TiXmlNode( TiXmlNode::DECLARATION ) 1391562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1392562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project version = _version; 1393562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project encoding = _encoding; 1394562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project standalone = _standalone; 1395562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1396562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1397562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1398562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#ifdef TIXML_USE_STL 1399562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlDeclaration::TiXmlDeclaration( const std::string& _version, 1400562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const std::string& _encoding, 1401562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const std::string& _standalone ) 14020238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert : TiXmlNode( TiXmlNode::DECLARATION ) 1403562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1404562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project version = _version; 1405562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project encoding = _encoding; 1406562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project standalone = _standalone; 1407562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1408562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#endif 1409562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1410562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1411562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy ) 14120238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert : TiXmlNode( TiXmlNode::DECLARATION ) 1413562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1414562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project copy.CopyTo( this ); 1415562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1416562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1417562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 14180238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlDeclaration::operator=( const TiXmlDeclaration& copy ) 1419562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1420562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project Clear(); 1421562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project copy.CopyTo( this ); 1422562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1423562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1424562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 14250238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlDeclaration::Print( FILE* cfile, int /*depth*/ ) const 14260238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert{ 14270238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf (cfile, "<?xml "); 14280238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 14290238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !version.empty() ) 14300238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf (cfile, "version=\"%s\" ", version.c_str ()); 14310238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !encoding.empty() ) 14320238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf (cfile, "encoding=\"%s\" ", encoding.c_str ()); 14330238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !standalone.empty() ) 14340238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf (cfile, "standalone=\"%s\" ", standalone.c_str ()); 14350238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert fprintf (cfile, "?>"); 14360238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert} 14370238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 14380238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlDeclaration::StreamOut( TIXML_OSTREAM * stream ) const 1439562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 14400238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "<?xml "; 1441562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 14420238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !version.empty() ) 14430238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 14440238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "version=\""; 14450238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( version, stream ); 14460238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "\" "; 1447562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 14480238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !encoding.empty() ) 14490238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 14500238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "encoding=\""; 14510238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( encoding, stream ); 14520238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream ) << "\" "; 1453562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 14540238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( !standalone.empty() ) 14550238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert { 14560238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "standalone=\""; 14570238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert PutString( standalone, stream ); 14580238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "\" "; 1459562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 14600238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "?>"; 1461562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1462562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1463562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1464562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const 1465562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1466562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode::CopyTo( target ); 1467562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1468562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project target->version = version; 1469562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project target->encoding = encoding; 1470562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project target->standalone = standalone; 1471562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1472562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1473562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1474562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlDeclaration::Clone() const 1475562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1476562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlDeclaration* clone = new TiXmlDeclaration(); 1477562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1478562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !clone ) 1479562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1480562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1481562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project CopyTo( clone ); 1482562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return clone; 1483562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1484562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1485562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1486562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlUnknown::Print( FILE* cfile, int depth ) const 1487562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1488562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( int i=0; i<depth; i++ ) 1489562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, " " ); 1490562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "<%s>", value.c_str() ); 1491562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1492562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1493562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 14940238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlUnknown::StreamOut( TIXML_OSTREAM * stream ) const 1495562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 14960238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert (*stream) << "<" << value << ">"; // Don't use entities here! It is unknown. 1497562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1498562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1499562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 15000238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertvoid TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const 1501562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 15020238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlNode::CopyTo( target ); 1503562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1504562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1505562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1506562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlUnknown::Clone() const 1507562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1508562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlUnknown* clone = new TiXmlUnknown(); 1509562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1510562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !clone ) 1511562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1512562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1513562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project CopyTo( clone ); 1514562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return clone; 1515562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1516562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1517562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1518562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlAttributeSet::TiXmlAttributeSet() 1519562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1520562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project sentinel.next = &sentinel; 1521562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project sentinel.prev = &sentinel; 1522562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1523562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1524562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1525562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlAttributeSet::~TiXmlAttributeSet() 1526562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1527562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( sentinel.next == &sentinel ); 1528562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( sentinel.prev == &sentinel ); 1529562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1530562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1531562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1532562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) 1533562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1534562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. 1535562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1536562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project addMe->next = &sentinel; 1537562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project addMe->prev = sentinel.prev; 1538562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1539562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project sentinel.prev->next = addMe; 1540562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project sentinel.prev = addMe; 1541562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1542562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1543562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) 1544562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1545562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlAttribute* node; 1546562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1547562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for( node = sentinel.next; node != &sentinel; node = node->next ) 1548562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1549562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node == removeMe ) 1550562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1551562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->prev->next = node->next; 1552562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->next->prev = node->prev; 1553562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->next = 0; 1554562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->prev = 0; 1555562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return; 1556562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1557562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1558562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( 0 ); // we tried to remove a non-linked attribute. 1559562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1560562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 15610238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertconst TiXmlAttribute* TiXmlAttributeSet::Find( const char * name ) const 1562c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert{ 15630238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert const TiXmlAttribute* node; 15640238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 15650238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for( node = sentinel.next; node != &sentinel; node = node->next ) 1566562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1567562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->name == name ) 1568562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 1569562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1570562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1571562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1572562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 15730238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTiXmlAttribute* TiXmlAttributeSet::Find( const char * name ) 1574562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 15750238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert TiXmlAttribute* node; 1576c3bbea3c3cfee4908189a57b3fc54f105b78c59bDan Albert 15770238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert for( node = sentinel.next; node != &sentinel; node = node->next ) 1578562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 15790238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert if ( node->name == name ) 1580562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 1581562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1582562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 1583562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1584562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1585562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#ifdef TIXML_USE_STL 15860238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTIXML_ISTREAM & operator >> (TIXML_ISTREAM & in, TiXmlNode & base) 1587562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1588562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_STRING tag; 1589562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project tag.reserve( 8 * 1000 ); 1590562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project base.StreamIn( &in, &tag ); 1591562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1592562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING ); 1593562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return in; 1594562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1595562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#endif 1596562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1597562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 15980238a20410cdb339709c983dede5fc43c0a3bdc4Dan AlbertTIXML_OSTREAM & operator<< (TIXML_OSTREAM & out, const TiXmlNode & base) 1599562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 16000238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert base.StreamOut (& out); 1601562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return out; 1602562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1603562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1604562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 16050238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert#ifdef TIXML_USE_STL 16060238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albertstd::string & operator<< (std::string& out, const TiXmlNode& base ) 1607562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 16080238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert std::ostringstream os_stream( std::ostringstream::out ); 16090238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert base.StreamOut( &os_stream ); 16100238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert 16110238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert out.append( os_stream.str() ); 16120238a20410cdb339709c983dede5fc43c0a3bdc4Dan Albert return out; 1613562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1614562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#endif 1615562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1616562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1617562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlHandle TiXmlHandle::FirstChild() const 1618562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1619562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 1620562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1621562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* child = node->FirstChild(); 1622562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( child ) 1623562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( child ); 1624562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1625562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( 0 ); 1626562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1627562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1628562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1629562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlHandle TiXmlHandle::FirstChild( const char * value ) const 1630562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1631562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 1632562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1633562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* child = node->FirstChild( value ); 1634562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( child ) 1635562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( child ); 1636562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1637562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( 0 ); 1638562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1639562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1640562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1641562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlHandle TiXmlHandle::FirstChildElement() const 1642562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1643562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 1644562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1645562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlElement* child = node->FirstChildElement(); 1646562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( child ) 1647562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( child ); 1648562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1649562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( 0 ); 1650562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1651562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1652562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1653562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const 1654562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1655562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 1656562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1657562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlElement* child = node->FirstChildElement( value ); 1658562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( child ) 1659562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( child ); 1660562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1661562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( 0 ); 1662562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1663562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1664562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1665562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlHandle TiXmlHandle::Child( int count ) const 1666562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1667562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 1668562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1669562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project int i; 1670562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* child = node->FirstChild(); 1671562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( i=0; 1672562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project child && i<count; 1673562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project child = child->NextSibling(), ++i ) 1674562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1675562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // nothing 1676562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1677562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( child ) 1678562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( child ); 1679562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1680562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( 0 ); 1681562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1682562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1683562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1684562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlHandle TiXmlHandle::Child( const char* value, int count ) const 1685562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1686562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 1687562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1688562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project int i; 1689562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* child = node->FirstChild( value ); 1690562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( i=0; 1691562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project child && i<count; 1692562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project child = child->NextSibling( value ), ++i ) 1693562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1694562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // nothing 1695562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1696562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( child ) 1697562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( child ); 1698562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1699562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( 0 ); 1700562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1701562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1702562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1703562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlHandle TiXmlHandle::ChildElement( int count ) const 1704562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1705562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 1706562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1707562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project int i; 1708562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlElement* child = node->FirstChildElement(); 1709562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( i=0; 1710562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project child && i<count; 1711562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project child = child->NextSiblingElement(), ++i ) 1712562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1713562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // nothing 1714562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1715562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( child ) 1716562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( child ); 1717562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1718562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( 0 ); 1719562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1720562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1721562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1722562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const 1723562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1724562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 1725562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1726562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project int i; 1727562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlElement* child = node->FirstChildElement( value ); 1728562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( i=0; 1729562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project child && i<count; 1730562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project child = child->NextSiblingElement( value ), ++i ) 1731562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1732562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // nothing 1733562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1734562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( child ) 1735562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( child ); 1736562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1737562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return TiXmlHandle( 0 ); 1738562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1739