blob: aa3788f78a62c2b727832532f5f05713c4c70745 [file] [log] [blame]
U-Lama\Lee560bd472011-12-28 19:42:49 -08001#include "tinyxml2.h"
2
3#include <string.h>
4#include <stdlib.h>
5#include <stdio.h>
U-Lama\Lee4cee6112011-12-31 14:58:18 -08006#include <ctype.h>
U-Lama\Lee560bd472011-12-28 19:42:49 -08007
8using namespace tinyxml2;
9
10/*static*/ CharBuffer* CharBuffer::Construct( const char* in )
11{
12 size_t len = strlen( in );
13 size_t size = len + sizeof( CharBuffer );
14 CharBuffer* cb = (CharBuffer*) malloc( size );
15 cb->length = len;
16 strcpy( cb->mem, in );
17 return cb;
18}
19
20
21/*static*/ void CharBuffer::Free( CharBuffer* cb )
22{
23 free( cb );
24}
25
26
U-Lama\Lee4cee6112011-12-31 14:58:18 -080027const char* XMLNode::SkipWhiteSpace( const char* p )
28{
29 while( isspace( *p ) ) {
30 ++p;
31 }
32 return p;
33}
34
35
U-Lama\Lee560bd472011-12-28 19:42:49 -080036XMLDocument::XMLDocument() :
37 charBuffer( 0 )
38{
39}
U-Lama\Leee13c3e62011-12-28 14:36:55 -080040
41
U-Lama\Lee4cee6112011-12-31 14:58:18 -080042bool XMLDocument::Parse( const char* p )
U-Lama\Leee13c3e62011-12-28 14:36:55 -080043{
U-Lama\Lee4cee6112011-12-31 14:58:18 -080044 XMLNode* returnNode = 0;
45
46 p = XMLNode::SkipWhiteSpace( p );
47 if( !p || !*p || *p != '<' )
48 {
49 return 0;
50 }
51
52 // What is this thing?
53 // - Elements start with a letter or underscore, but xml is reserved.
54 // - Comments: <!--
55 // - Decleration: <?xml
56 // - Everthing else is unknown to tinyxml.
57 //
58
59 const char* xmlHeader = { "<?xml" };
60 const char* commentHeader = { "<!--" };
61 const char* dtdHeader = { "<!" };
62 const char* cdataHeader = { "<![CDATA[" };
63
64 if ( XMLNode::StringEqual( p, xmlHeader, 5 ) ) {
65
66 }
67 else {
68 TIXMLASSERT( 0 );
69 }
U-Lama\Leee13c3e62011-12-28 14:36:55 -080070
U-Lama\Lee560bd472011-12-28 19:42:49 -080071 return true;
U-Lama\Leee13c3e62011-12-28 14:36:55 -080072}