basic structure in place.
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index e923c48..aa3788f 100644
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -3,6 +3,7 @@
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
+#include <ctype.h>
using namespace tinyxml2;
@@ -23,14 +24,49 @@
}
+const char* XMLNode::SkipWhiteSpace( const char* p )
+{
+ while( isspace( *p ) ) {
+ ++p;
+ }
+ return p;
+}
+
+
XMLDocument::XMLDocument() :
charBuffer( 0 )
{
}
-bool XMLDocument::Parse( const char* str )
+bool XMLDocument::Parse( const char* p )
{
+ XMLNode* returnNode = 0;
+
+ p = XMLNode::SkipWhiteSpace( p );
+ if( !p || !*p || *p != '<' )
+ {
+ return 0;
+ }
+
+ // What is this thing?
+ // - Elements start with a letter or underscore, but xml is reserved.
+ // - Comments: <!--
+ // - Decleration: <?xml
+ // - Everthing else is unknown to tinyxml.
+ //
+
+ const char* xmlHeader = { "<?xml" };
+ const char* commentHeader = { "<!--" };
+ const char* dtdHeader = { "<!" };
+ const char* cdataHeader = { "<![CDATA[" };
+
+ if ( XMLNode::StringEqual( p, xmlHeader, 5 ) ) {
+
+ }
+ else {
+ TIXMLASSERT( 0 );
+ }
return true;
}
diff --git a/tinyxml2.h b/tinyxml2.h
index aa1fbba..a29739e 100644
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -1,12 +1,33 @@
#ifndef TINYXML2_INCLUDED
#define TINYXML2_INCLUDED
+#include <limits.h>
+
+#if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__)
+ #ifndef DEBUG
+ #define DEBUG
+ #endif
+#endif
+
+
+#if defined(DEBUG)
+ #if defined(_MSC_VER)
+ #define TIXMLASSERT( x ) if ( !(x)) { _asm { int 3 } } //if ( !(x)) WinDebugBreak()
+ #elif defined (ANDROID_NDK)
+ #include <android/log.h>
+ #define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); }
+ #else
+ #include <assert.h>
+ #define TIXMLASSERT assert
+ #endif
+#else
+ #define TIXMLASSERT( x ) {}
+#endif
+
namespace tinyxml2
{
-
-
// internal - move to separate namespace
struct CharBuffer
{
@@ -18,14 +39,37 @@
};
-/*
-class Element
+class XMLNode
{
+ friend class XMLDocument;
public:
- Element
-};
-*/
+ static XMLNode* Identify( const char* p );
+
+protected:
+ static const char* SkipWhiteSpace( const char* p );
+ static char* SkipWhiteSpace( char* p ) { return (char*) SkipWhiteSpace( (const char*)p ); }
+
+ inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX ) {
+ int n = 0;
+ while( *p && *q && *p == *q && n<nChar ) {
+ ++p; ++q; ++n;
+ }
+ if ( (n == nChar) || ( *p == 0 && *q == 0 ) ) {
+ return true;
+ }
+ return false;
+ }
+
+private:
+
+};
+
+
+class XMLComment : public XMLNode
+{
+
+};
class XMLDocument
@@ -37,11 +81,15 @@
private:
XMLDocument( const XMLDocument& ); // not implemented
+
CharBuffer* charBuffer;
};
+
+
+
}; // tinyxml2
diff --git a/tinyxml2.suo b/tinyxml2.suo
index 345fd48..2bca40e 100644
--- a/tinyxml2.suo
+++ b/tinyxml2.suo
Binary files differ
diff --git a/xmltest.cpp b/xmltest.cpp
index c8ef227..8df6ce0 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -7,11 +7,21 @@
int main( int argc, const char* argv )
{
- static const char* test = "<hello></hello>";
+ {
+ static const char* test = "<!--hello world-->";
- XMLDocument doc;
- doc.Parse( test );
- doc.Print( stdout );
+ XMLDocument doc;
+ doc.Parse( test );
+ doc.Print( stdout );
+ }
+ /*
+ {
+ static const char* test = "<hello></hello>";
+ XMLDocument doc;
+ doc.Parse( test );
+ doc.Print( stdout );
+ }
+ */
return 0;
}
\ No newline at end of file