deep copy and clone
diff --git a/tinyxml2.h b/tinyxml2.h
index de589bd..607d0c7 100755
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -53,7 +53,7 @@
AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h
*/
-#if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__)
+#if defined( _DEBUG ) || defined (__DEBUG__)
# ifndef DEBUG
# define DEBUG
# endif
@@ -846,6 +846,20 @@
*/
virtual XMLNode* ShallowClone( XMLDocument* document ) const = 0;
+ /**
+ Make a copy of this node and all of the children
+ of this node.
+
+ If the 'document' is null, then the nodes will
+ be allocated in the current document. If specified,
+ memory will e allocated is the specified document.
+
+ NOTE: This is probably not the correct tool to
+ copy a document, since XMLDocuments can have multiple
+ top level XMLNodes. You probably want XMLDocument::DeepCopy()
+ */
+ XMLNode* DeepClone( XMLDocument* document ) const;
+
/**
Test if 2 nodes are the same, but don't test children.
The 2 nodes do not need to be in the same Document.
@@ -1787,7 +1801,17 @@
/// Clear the document, resetting it to the initial state.
void Clear();
- // internal
+ /**
+ Copies this document to a target.
+ The target will be completely cleared before the copy.
+ If you want to copy a sub-tree, see DeepClone.
+
+ NOTE: that the 'target' must be non-null and not
+ the source document.
+ */
+ void DeepCopy(XMLDocument* target);
+
+ // internal
char* Identify( char* p, XMLNode** node );
virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const {