From 30d8823a44b24fa8070a6838690bf12e007ae9d7 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 2 Oct 2006 06:36:07 +0000 Subject: [PATCH] allow removing without deleting (detaching) --- stepmania/src/XmlFile.cpp | 5 +++-- stepmania/src/XmlFile.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/stepmania/src/XmlFile.cpp b/stepmania/src/XmlFile.cpp index e8dff78a09..0ce876e7c4 100644 --- a/stepmania/src/XmlFile.cpp +++ b/stepmania/src/XmlFile.cpp @@ -103,13 +103,14 @@ XNode *XNode::AppendChild( XNode *node ) } // detach node and delete object -bool XNode::RemoveChild( XNode *node ) +bool XNode::RemoveChild( XNode *node, bool bDelete ) { FOREACHMM( RString, XNode*, m_childs, p ) { if( p->second == node ) { - SAFE_DELETE( p->second ); + if( bDelete ) + SAFE_DELETE( p->second ); m_childs.erase( p ); return true; } diff --git a/stepmania/src/XmlFile.h b/stepmania/src/XmlFile.h index 66f89d0344..ddabedd382 100644 --- a/stepmania/src/XmlFile.h +++ b/stepmania/src/XmlFile.h @@ -81,7 +81,7 @@ public: XNode *AppendChild( const RString &sName, T value ) { XNode *p=new XNode(sName); p->SetValue(value); return AppendChild(p); } XNode *AppendChild( const RString &sName ) { XNode *p=new XNode(sName); return AppendChild(p); } XNode *AppendChild( XNode *node ); - bool RemoveChild( XNode *node ); + bool RemoveChild( XNode *node, bool bDelete = true ); void AppendAttr( const RString &sName, const RString &sValue = RString() ); void AppendAttr( const RString &sName, float value );