1562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project/* 2562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectwww.sourceforge.net/projects/tinyxml 3562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectOriginal 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> 26562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#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 35562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlBase::PutString( const TIXML_STRING& str, TIXML_OSTREAM* stream ) 36562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 37562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_STRING buffer; 38562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( str, &buffer ); 39562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << buffer; 40562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 41562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 42562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid 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 126562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project// <-- Strange class for a bug fix. Search for STL_STRING_BUG 127562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlBase::StringToBuffer::StringToBuffer( const TIXML_STRING& str ) 128562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 129562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project buffer = new char[ str.length()+1 ]; 130562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( buffer ) 131562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 132562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project strcpy( buffer, str.c_str() ); 133562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 134562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 135562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 136562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 137562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlBase::StringToBuffer::~StringToBuffer() 138562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 139562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project delete [] buffer; 140562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 141562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project// End strange bug fix. --> 142562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 143562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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{ 222562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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{ 248562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 334562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::FirstChild( const char * _value ) 335562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 336562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 337562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = firstChild; node; node = node->next ) 338562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 339562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( strcmp( node->Value(), _value ) == 0 ) 340562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 341562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 342562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 343562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 344562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 345562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 357562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::LastChild( const char * _value ) 358562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 359562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 360562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = lastChild; node; node = node->prev ) 361562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 362562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( strcmp( node->Value(), _value ) == 0 ) 363562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 364562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 365562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 366562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 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 381562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::IterateChildren( TiXmlNode* previous ) 382562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 383562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !previous ) 384562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 385562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return FirstChild(); 386562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 387562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 388562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 389562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( previous->parent == this ); 390562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return previous->NextSibling(); 391562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 392562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 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 407562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::IterateChildren( const char * val, TiXmlNode* previous ) 408562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 409562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !previous ) 410562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 411562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return FirstChild( val ); 412562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 413562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 414562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 415562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( previous->parent == this ); 416562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return previous->NextSibling( val ); 417562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 418562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 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 431562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::NextSibling( const char * _value ) 432562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 433562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 434562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = next; node; node = node->next ) 435562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 436562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( strcmp( node->Value(), _value ) == 0 ) 437562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 438562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 439562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 440562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 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 453562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) 454562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 455562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 456562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = prev; node; node = node->prev ) 457562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 458562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( strcmp( node->Value(), _value ) == 0 ) 459562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node; 460562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 461562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 462562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 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 488562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlElement* TiXmlNode::FirstChildElement() 489562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 490562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 491562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 492562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = FirstChild(); 493562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node; 494562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node = node->NextSibling() ) 495562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 496562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToElement() ) 497562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToElement(); 498562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 499562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 500562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 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 516562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) 517562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 518562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 519562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 520562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = FirstChild( _value ); 521562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node; 522562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node = node->NextSibling( _value ) ) 523562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 524562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToElement() ) 525562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToElement(); 526562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 527562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 528562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 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(); 535562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node; 536562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 544562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlElement* TiXmlNode::NextSiblingElement() 545562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 546562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 547562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 548562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = NextSibling(); 549562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node; 550562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node = node->NextSibling() ) 551562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 552562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToElement() ) 553562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToElement(); 554562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 555562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 556562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 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 ); 563562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node; 564562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node = node->NextSibling( _value ) ) 565562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 566562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToElement() ) 567562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToElement(); 568562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 569562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 570562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 571562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 572562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) 573562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 574562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 575562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 576562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = NextSibling( _value ); 577562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node; 578562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 599562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlDocument* TiXmlNode::GetDocument() 600562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 601562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 602562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 603562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for( node = this; node; node = node->parent ) 604562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 605562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToDocument() ) 606562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->ToDocument(); 607562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 608562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return 0; 609562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 610562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 611562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlElement::TiXmlElement (const char * _value) 612562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project : 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 ) 621562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project : 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) 630562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project : 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 637562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid 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 662562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst char * TiXmlElement::Attribute( const char * name ) const 663562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 664562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlAttribute* node = attributeSet.Find( name ); 665562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 673562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst char * TiXmlElement::Attribute( const char * name, int* i ) const 674562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 675562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const char * s = Attribute( name ); 676562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( i ) 677562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 678562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( s ) 679562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project *i = atoi( s ); 680562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 681562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project *i = 0; 682562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 683562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return s; 684562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 685562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 686562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 687562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst char * TiXmlElement::Attribute( const char * name, double* d ) const 688562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 689562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const char * s = Attribute( name ); 690562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( d ) 691562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 692562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( s ) 693562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project *d = atof( s ); 694562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 695562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project *d = 0; 696562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 697562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 707562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return node->QueryIntValue( ival ); 708562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 709562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 710562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 711562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectint 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 717562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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{ 723562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project char buf[64]; 724562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #if defined(TIXML_SNPRINTF) 725562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_SNPRINTF( buf, sizeof(buf), "%d", val ); 726562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #else 727562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project sprintf( buf, "%d", val ); 728562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #endif 729562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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{ 735562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project char buf[256]; 736562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #if defined(TIXML_SNPRINTF) 737562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_SNPRINTF( buf, sizeof(buf), "%f", val ); 738562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #else 739562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project sprintf( buf, "%f", val ); 740562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #endif 741562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project SetAttribute( name, buf ); 742562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 743562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 744562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 745562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlElement::SetAttribute( const char * name, const char * _value ) 746562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 747562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlAttribute* node = attributeSet.Find( name ); 748562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node ) 749562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 750562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->SetValue( _value ); 751562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return; 752562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 753562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 754562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlAttribute* attrib = new TiXmlAttribute( name, _value ); 755562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( attrib ) 756562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 757562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project attributeSet.Add( attrib ); 758562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 759562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 760562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 761562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlDocument* document = GetDocument(); 762562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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; 769562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( i=0; i<depth; i++ ) 770562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 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" ); 811562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for( i=0; i<depth; ++i ) 812562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, " " ); 813562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "</%s>", value.c_str() ); 814562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 815562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 816562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 817562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlElement::StreamOut( TIXML_OSTREAM * stream ) const 818562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 819562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "<" << value; 820562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 821562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlAttribute* attrib; 822562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() ) 823562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 824562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << " "; 825562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project attrib->StreamOut( stream ); 826562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 827562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 828562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // If this node has children, give it a closing tag. Else 829562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // make it an empty tag. 830562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode* node; 831562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( firstChild ) 832562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 833562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << ">"; 834562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 835562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node = firstChild; node; node=node->NextSibling() ) 836562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 837562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->StreamOut( stream ); 838562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 839562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "</" << value << ">"; 840562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 841562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 842562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 843562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << " />"; 844562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 845562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 846562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 895562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlDocument::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 902562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlDocument::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 912562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlDocument::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 922562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlDocument::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 928562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid 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{ 937562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // See STL_STRING_BUG below. 938562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project StringToBuffer buf( value ); 939562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 940562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( buf.buffer && LoadFile( buf.buffer, encoding ) ) 941562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return true; 942562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 943562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return false; 944562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 945562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 946562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 947562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectbool TiXmlDocument::SaveFile() const 948562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 949562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // See STL_STRING_BUG below. 950562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project StringToBuffer buf( value ); 951562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 952562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( buf.buffer && SaveFile( buf.buffer ) ) 953562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return true; 954562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 955562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return false; 956562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 957562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 958562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectbool 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 964562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // There was a really terrifying little bug here. The code: 965562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // value = filename 966562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // in the STL case, cause the assignment method of the std::string to 967562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // be called. What is strange, is that the std::string had the same 968562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // address as it's c_str() method, and so bad things happen. Looks 969562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // like a bug in the Microsoft STL implementation. 970562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // See STL_STRING_BUG above. 971562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Fixed with the StringToBuffer class. 972562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project value = filename; 973562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 974562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // reading in binary mode so that tinyxml can normalize the EOL 975562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project FILE* file = fopen( value.c_str (), "rb" ); 976562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 977562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( file ) 978562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 979562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Get the file size, so we can pre-allocate the string. HUGE speed impact. 980562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project long length = 0; 981562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fseek( file, 0, SEEK_END ); 982562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project length = ftell( file ); 983562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fseek( file, 0, SEEK_SET ); 984562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 985562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Strange case, but good to handle up front. 986562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( length == 0 ) 987562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 988562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fclose( file ); 989562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return false; 990562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 991562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 992562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // If we have a file, assume it is all one big XML file, and read it in. 993562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // The document parser may decide the document ends sooner than the entire file, however. 994562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_STRING data; 995562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project data.reserve( length ); 996562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 997562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Subtle bug here. TinyXml did use fgets. But from the XML spec: 998562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // 2.11 End-of-Line Handling 999562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // <snip> 1000562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // <quote> 1001562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // ...the XML processor MUST behave as if it normalized all line breaks in external 1002562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // parsed entities (including the document entity) on input, before parsing, by translating 1003562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // both the two-character sequence #xD #xA and any #xD that is not followed by #xA to 1004562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // a single #xA character. 1005562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // </quote> 1006562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // 1007562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // It is not clear fgets does that, and certainly isn't clear it works cross platform. 1008562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Generally, you expect fgets to translate from the convention of the OS to the c/unix 1009562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // convention, and not work generally. 1010562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1011562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project /* 1012562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project while( fgets( buf, sizeof(buf), file ) ) 1013562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1014562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project data += buf; 1015562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1016562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project */ 1017562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1018562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project char* buf = new char[ length+1 ]; 1019562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project buf[0] = 0; 1020562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1021562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( fread( buf, length, 1, file ) != 1 ) { 1022562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project //if ( fread( buf, 1, length, file ) != (size_t)length ) { 1023562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); 1024562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fclose( file ); 1025562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return false; 1026562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1027562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fclose( file ); 1028562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1029562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const char* lastPos = buf; 1030562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const char* p = buf; 1031562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1032562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project buf[length] = 0; 1033562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project while( *p ) { 1034562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( p < (buf+length) ); 1035562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( *p == 0xa ) { 1036562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Newline character. No special rules for this. Append all the characters 1037562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // since the last string, and include the newline. 1038562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project data.append( lastPos, p-lastPos+1 ); // append, include the newline 1039562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++p; // move past the newline 1040562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastPos = p; // and point to the new buffer (may be 0) 1041562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( p <= (buf+length) ); 1042562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1043562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else if ( *p == 0xd ) { 1044562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Carriage return. Append what we have so far, then 1045562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // handle moving forward in the buffer. 1046562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( (p-lastPos) > 0 ) { 1047562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project data.append( lastPos, p-lastPos ); // do not add the CR 1048562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1049562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project data += (char)0xa; // a proper newline 1050562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1051562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( *(p+1) == 0xa ) { 1052562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Carriage return - new line sequence 1053562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project p += 2; 1054562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastPos = p; 1055562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( p <= (buf+length) ); 1056562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1057562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else { 1058562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // it was followed by something else...that is presumably characters again. 1059562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++p; 1060562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project lastPos = p; 1061562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project assert( p <= (buf+length) ); 1062562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1063562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1064562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else { 1065562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project ++p; 1066562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1067562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1068562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Handle any left over characters. 1069562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( p-lastPos ) { 1070562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project data.append( lastPos, p-lastPos ); 1071562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1072562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project delete [] buf; 1073562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project buf = 0; 1074562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1075562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project Parse( data.c_str(), 0, encoding ); 1076562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1077562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( Error() ) 1078562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return false; 1079562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 1080562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project return true; 1081562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1082562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); 1083562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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... 1089562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project FILE* fp = fopen( filename, "w" ); 1090562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( fp ) 1091562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1092562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( useMicrosoftBOM ) 1093562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1094562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const unsigned char TIXML_UTF_LEAD_0 = 0xefU; 1095562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; 1096562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; 1097562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1098562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fputc( TIXML_UTF_LEAD_0, fp ); 1099562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fputc( TIXML_UTF_LEAD_1, fp ); 1100562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fputc( TIXML_UTF_LEAD_2, fp ); 1101562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1102562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project Print( fp, 0 ); 1103562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fclose( fp ); 1104562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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; 1115562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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{ 1138562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 1139562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 1146562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlDocument::StreamOut( TIXML_OSTREAM * out ) const 1147562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1148562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlNode* node; 1149562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( node=FirstChild(); node; node=node->NextSibling() ) 1150562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1151562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project node->StreamOut( out ); 1152562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1153562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // Special rule for streams: stop after the root element. 1154562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // The stream in code will only read one element, so don't 1155562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project // write more than one. 1156562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( node->ToElement() ) 1157562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 1198562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid 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 1202562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( name, &n ); 1203562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( value, &v ); 1204562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1205562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if (value.find ('\"') == TIXML_STRING::npos) 1206562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() ); 1207562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 1208562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() ); 1209562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1210562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1211562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1212562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlAttribute::StreamOut( TIXML_OSTREAM * stream ) const 1213562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1214562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if (value.find( '\"' ) != TIXML_STRING::npos) 1215562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1216562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( name, stream ); 1217562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "=" << "'"; 1218562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( value, stream ); 1219562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "'"; 1220562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1221562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 1222562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1223562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( name, stream ); 1224562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "=" << "\""; 1225562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( value, stream ); 1226562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*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{ 1232562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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{ 1239562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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) 1259562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TIXML_SNPRINTF( buf, sizeof(buf), "%lf", _value); 1260562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project #else 1261562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 1277562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlComment::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 1283562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid 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 { 1294562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 1299562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlComment::StreamOut( TIXML_OSTREAM * stream ) const 1300562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1301562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "<!--"; 1302562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project //PutString( value, stream ); 1303562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << value; 1304562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "-->"; 1305562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1306562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1307562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1308562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlComment::CopyTo( TiXmlComment* target ) const 1309562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1310562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 } 1335562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "<![CDATA[\n" ); 1336562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1337562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "%s", value.c_str() ); // unformatted output 1338562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1339562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, "\n" ); 1340562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for ( i=0; i<depth; i++ ) { 1341562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf( cfile, " " ); 1342562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1343562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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; 1348562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 1354562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlText::StreamOut( TIXML_OSTREAM * stream ) const 1355562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1356562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( cdata ) 1357562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1358562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "<![CDATA[" << value << "]]>"; 1359562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1360562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project else 1361562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1362562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( value, stream ); 1363562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1364562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1365562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1366562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1367562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlText::CopyTo( TiXmlText* target ) const 1368562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1369562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlNode::CopyTo( target ); 1370562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 ) 1390562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project : 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 ) 1402562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project : 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 ) 1412562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project : 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 1418562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid 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 1425562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlDeclaration::Print( FILE* cfile, int /*depth*/ ) const 1426562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1427562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf (cfile, "<?xml "); 1428562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1429562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !version.empty() ) 1430562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf (cfile, "version=\"%s\" ", version.c_str ()); 1431562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !encoding.empty() ) 1432562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf (cfile, "encoding=\"%s\" ", encoding.c_str ()); 1433562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !standalone.empty() ) 1434562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf (cfile, "standalone=\"%s\" ", standalone.c_str ()); 1435562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project fprintf (cfile, "?>"); 1436562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project} 1437562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1438562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlDeclaration::StreamOut( TIXML_OSTREAM * stream ) const 1439562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1440562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "<?xml "; 1441562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1442562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !version.empty() ) 1443562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1444562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "version=\""; 1445562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( version, stream ); 1446562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "\" "; 1447562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1448562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !encoding.empty() ) 1449562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1450562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "encoding=\""; 1451562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( encoding, stream ); 1452562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream ) << "\" "; 1453562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1454562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project if ( !standalone.empty() ) 1455562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1456562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "standalone=\""; 1457562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project PutString( standalone, stream ); 1458562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*stream) << "\" "; 1459562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project } 1460562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*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 1494562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlUnknown::StreamOut( TIXML_OSTREAM * stream ) const 1495562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1496562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project (*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 1500562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectvoid TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const 1501562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1502562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 1561562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectconst TiXmlAttribute* TiXmlAttributeSet::Find( const char * name ) const 1562562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1563562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project const TiXmlAttribute* node; 1564562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1565562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 1573562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTiXmlAttribute* TiXmlAttributeSet::Find( const char * name ) 1574562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1575562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project TiXmlAttribute* node; 1576562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1577562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project for( node = sentinel.next; node != &sentinel; node = node->next ) 1578562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project { 1579562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 1586562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTIXML_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 1598562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source ProjectTIXML_OSTREAM & operator<< (TIXML_OSTREAM & out, const TiXmlNode & base) 1599562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1600562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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 1605562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project#ifdef TIXML_USE_STL 1606562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Projectstd::string & operator<< (std::string& out, const TiXmlNode& base ) 1607562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project{ 1608562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project std::ostringstream os_stream( std::ostringstream::out ); 1609562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project base.StreamOut( &os_stream ); 1610562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 1611562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project out.append( os_stream.str() ); 1612562be06492c3ac43adf153f550abaede6bc18a44The Android Open Source Project 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