Merge pull request #98 from martinsh-shaiters/devel

Implementation & unit test for enhancement described in issue #74
This commit is contained in:
Lee Thomason 2013-01-30 10:05:29 -08:00
commit c97ded4872
3 changed files with 16 additions and 8 deletions

View File

@ -1520,8 +1520,10 @@ XMLDocument::~XMLDocument()
}
void XMLDocument::InitDocument()
void XMLDocument::Clear()
{
DeleteChildren();
_errorID = XML_NO_ERROR;
_errorStr1 = 0;
_errorStr2 = 0;
@ -1578,8 +1580,7 @@ XMLUnknown* XMLDocument::NewUnknown( const char* str )
XMLError XMLDocument::LoadFile( const char* filename )
{
DeleteChildren();
InitDocument();
Clear();
FILE* fp = 0;
#if defined(_MSC_VER) && (_MSC_VER >= 1400 )
@ -1600,8 +1601,7 @@ XMLError XMLDocument::LoadFile( const char* filename )
XMLError XMLDocument::LoadFile( FILE* fp )
{
DeleteChildren();
InitDocument();
Clear();
fseek( fp, 0, SEEK_END );
size_t size = ftell( fp );
@ -1662,8 +1662,7 @@ XMLError XMLDocument::SaveFile( FILE* fp, bool compact )
XMLError XMLDocument::Parse( const char* p, size_t len )
{
DeleteChildren();
InitDocument();
Clear();
if ( !p || !*p ) {
SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );

View File

@ -1532,6 +1532,9 @@ public:
}
/// If there is an error, print it to stdout.
void PrintError() const;
/// Clear the document, resetting it to the initial state.
void Clear();
// internal
char* Identify( char* p, XMLNode** node );
@ -1546,7 +1549,6 @@ public:
private:
XMLDocument( const XMLDocument& ); // not supported
void operator=( const XMLDocument& ); // not supported
void InitDocument();
bool _writeBOM;
bool _processEntities;

View File

@ -1072,6 +1072,13 @@ int main( int argc, const char ** argv )
XMLTest( "Set length of incoming data", doc.Error(), false );
}
{
XMLDocument doc;
doc.LoadFile( "resources/dream.xml" );
doc.Clear();
XMLTest( "Document Clear()'s", doc.NoChildren(), true );
}
// ----------- Whitespace ------------
{
const char* xml = "<element>"