And it compiles.
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 83bafb3..63b8707 100644
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -58,7 +58,7 @@
lastChild = addThis;
addThis->parent = this;
- addThis->next = null;
+ addThis->next = 0;
}
else {
TIXMLASSERT( firstChild == 0 );
@@ -66,7 +66,16 @@
addThis->parent = this;
addThis->prev = 0;
- addThis->next = null;
+ addThis->next = 0;
+ }
+ return addThis;
+}
+
+
+void XMLNode::Print( FILE* fp, int depth )
+{
+ for( int i=0; i<depth; ++i ) {
+ fprintf( fp, " " );
}
}
@@ -77,7 +86,7 @@
char* start = SkipWhiteSpace( p );
if ( !start )
- return;
+ return 0;
char endChar = *endTag;
p = start;
@@ -104,13 +113,20 @@
}
-virtual XMLComment::~XMLComment()
+XMLComment::~XMLComment()
{
}
-virtual char* XMLComment::ParseDeep( char* p )
+void XMLComment::Print( FILE* fp, int depth )
+{
+ XMLNode::Print( fp, depth );
+ fprintf( fp, "<!-- %s -->\n", value );
+}
+
+
+char* XMLComment::ParseDeep( char* p )
{
// Comment parses as text.
value = ParseText( p, "-->", &p );
@@ -135,21 +151,22 @@
bool XMLDocument::Parse( const char* p )
{
- charBuffer = CharBuffer.Construct( p );
+ charBuffer = CharBuffer::Construct( p );
XMLNode* node = 0;
- Identify( charBuffer., node );
- node->Parse( p );
+ char* q = Identify( charBuffer->mem, &node );
+ node->ParseDeep( q );
+ return true;
}
-XMLComment* XMLDocument::newComment( XMLNode* parent )
+void XMLDocument::Print( FILE* fp, int depth )
{
-
+ for( XMLNode* node = root->firstChild; node; node=node->next ) {
+ node->Print( fp, depth );
+ }
}
-
-
char* XMLDocument::Identify( char* p, XMLNode** node )
{
XMLNode* returnNode = 0;
@@ -173,7 +190,7 @@
const char* cdataHeader = { "<![CDATA[" };
if ( XMLNode::StringEqual( p, xmlHeader, 5 ) ) {
- returnNode = new XMLComment();
+ returnNode = new XMLComment( this );
}
else {
TIXMLASSERT( 0 );
diff --git a/tinyxml2.h b/tinyxml2.h
index f831363..22d9d3e 100644
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -2,6 +2,8 @@
#define TINYXML2_INCLUDED
#include <limits.h>
+#include <ctype.h>
+#include <stdio.h>
#if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__)
#ifndef DEBUG
@@ -27,7 +29,7 @@
namespace tinyxml2
{
-class XMLDocument*;
+class XMLDocument;
// internal - move to separate namespace
struct CharBuffer
@@ -45,7 +47,8 @@
friend class XMLDocument;
public:
- static XMLNode* Identify( const char* p );
+ XMLNode* InsertEndChild( XMLNode* addThis );
+ void Print( FILE* cfile, int depth ); // prints leading spaces.
protected:
XMLNode( XMLDocument* );
@@ -97,8 +100,13 @@
XMLComment( XMLDocument* doc );
virtual ~XMLComment();
+ void Print( FILE* cfile, int depth );
+
+protected:
+ char* ParseDeep( char* );
+
private:
- char* value;
+ const char* value;
};
@@ -109,26 +117,20 @@
~XMLDocument();
bool Parse( const char* );
+ void Print( FILE* cfile=stdout, int depth=0 );
XMLNode* Root() { return root; }
XMLNode* RootElement();
- XMLNode* InsertEndChild( XMLNode* addThis );
-
private:
XMLDocument( const XMLDocument& ); // intentionally not implemented
-
- virtual char* ParseDeep( char* );
+ char* Identify( char* p, XMLNode** node );
XMLNode* root;
CharBuffer* charBuffer;
};
-
-
-
-
}; // tinyxml2
diff --git a/tinyxml2.suo b/tinyxml2.suo
index fb3b44e..e447d8f 100644
--- a/tinyxml2.suo
+++ b/tinyxml2.suo
Binary files differ