diff --git a/CMakeLists.txt b/CMakeLists.txt index df2536e..add1770 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,15 +28,14 @@ if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR}) ${TARGET_DATA_COPY} COMMAND ${CMAKE_COMMAND} -E echo "In source build") else(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR}) + make_directory(${CMAKE_CURRENT_BINARY_DIR}/resources/) add_custom_target( ${TARGET_DATA_COPY} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/dream.xml ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/utf8test.xml ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/utf8testverify.xml ${CMAKE_CURRENT_BINARY_DIR}) + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/resources/dream.xml ${CMAKE_CURRENT_BINARY_DIR}/resources/ + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/resources/utf8test.xml ${CMAKE_CURRENT_BINARY_DIR}/resources/ + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/resources/utf8testverify.xml ${CMAKE_CURRENT_BINARY_DIR}/resources/) endif(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR}) -set(OGL_DATA_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data) - ################################ # Add definitions diff --git a/dream.xml b/resources/dream.xml similarity index 100% rename from dream.xml rename to resources/dream.xml diff --git a/utf8test.xml b/resources/utf8test.xml similarity index 100% rename from utf8test.xml rename to resources/utf8test.xml diff --git a/utf8testverify.xml b/resources/utf8testverify.xml similarity index 100% rename from utf8testverify.xml rename to resources/utf8testverify.xml diff --git a/tinyxml2.cpp b/tinyxml2.cpp index 297c966..80dfc5c 100644 --- a/tinyxml2.cpp +++ b/tinyxml2.cpp @@ -23,18 +23,10 @@ distribution. #include "tinyxml2.h" -#if 1 - #include - #include - #include -#else - #include - #include - #include - #include - #include - #include -#endif +#include +#include +#include +#include using namespace tinyxml2; @@ -120,7 +112,7 @@ char* StrPair::ParseText( char* p, const char* endTag, int strFlags ) char* start = p; // fixme: hides a member char endChar = *endTag; - int length = strlen( endTag ); + size_t length = strlen( endTag ); // Inner loop of text parsing. while ( *p ) { @@ -316,7 +308,7 @@ const char* XMLUtil::GetCharacterRef( const char* p, char* value, int* length ) if ( *(p+1) == '#' && *(p+2) ) { unsigned long ucs = 0; - int delta = 0; + ptrdiff_t delta = 0; unsigned mult = 1; if ( *(p+2) == 'x' ) @@ -329,7 +321,7 @@ const char* XMLUtil::GetCharacterRef( const char* p, char* value, int* length ) if ( !q || !*q ) return 0; - delta = (q-p); + delta = q-p; --q; while ( *q != 'x' ) diff --git a/tinyxml2.h b/tinyxml2.h index 0cd4d58..df9e049 100644 --- a/tinyxml2.h +++ b/tinyxml2.h @@ -171,7 +171,7 @@ public: ~DynArray() { if ( mem != pool ) { - delete mem; + delete [] mem; } } void Push( T t ) @@ -225,7 +225,7 @@ private: /* - Parent virtual class a a pool for fast allocation + Parent virtual class of a pool for fast allocation and deallocation of objects. */ class MemPool @@ -314,16 +314,16 @@ private: Implements the interface to the "Visitor pattern" (see the Accept() method.) If you call the Accept() method, it requires being passed a XMLVisitor class to handle callbacks. For nodes that contain other nodes (Document, Element) - you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves + you will get called with a VisitEnter/VisitExit pair. Nodes that are always leafs are simply called with Visit(). If you return 'true' from a Visit method, recursive parsing will continue. If you return - false, no children of this node or its sibilings will be Visited. + false, no children of this node or its sibilings will be visited. All flavors of Visit methods have a default implementation that returns 'true' (continue visiting). You need to only override methods that are interesting to you. - Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting. + Generally Accept() is called on the TiXmlDocument, although all nodes support visiting. You should never change the document from a callback. @@ -344,13 +344,13 @@ public: /// Visit an element. virtual bool VisitExit( const XMLElement& /*element*/ ) { return true; } - /// Visit a declaration + /// Visit a declaration. virtual bool Visit( const XMLDeclaration& /*declaration*/ ) { return true; } - /// Visit a text node + /// Visit a text node. virtual bool Visit( const XMLText& /*text*/ ) { return true; } - /// Visit a comment node + /// Visit a comment node. virtual bool Visit( const XMLComment& /*comment*/ ) { return true; } - /// Visit an unknown node + /// Visit an unknown node. virtual bool Visit( const XMLUnknown& /*unknown*/ ) { return true; } }; @@ -398,7 +398,7 @@ public: The type of a XMLNode can be queried, and it can be cast to its more defined type. - An XMLDocument allocates memory for all its Nodes. + A XMLDocument allocates memory for all its Nodes. When the XMLDocument gets deleted, all its Nodes will also be deleted. @@ -443,7 +443,7 @@ public: /** The meaning of 'value' changes for the specific type. @verbatim - Document: empy + Document: empty Element: name of the element Comment: the comment text Unknown: the tag contents @@ -542,7 +542,7 @@ public: */ virtual bool ShallowEqual( const XMLNode* compare ) const = 0; - /** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the + /** Accept a hierarchical visit of the nodes in the TinyXML DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the TiXmlVisitor interface. @@ -869,9 +869,9 @@ public: /// See IntAttribute() bool BoolAttribute( const char* name ) const { bool b=false; QueryBoolAttribute( name, &b ); return b; } /// See IntAttribute() - double DoubleAttribute( const char* name ) const { double d=0; QueryDoubleAttribute( name, &d ); return d; } + double DoubleAttribute( const char* name ) const { double d=0; QueryDoubleAttribute( name, &d ); return d; } /// See IntAttribute() - float FloatAttribute( const char* name ) const { float f=0; QueryFloatAttribute( name, &f ); return f; } + float FloatAttribute( const char* name ) const { float f=0; QueryFloatAttribute( name, &f ); return f; } /** Given an attribute name, QueryIntAttribute() returns XML_NO_ERROR, XML_WRONG_ATTRIBUTE_TYPE if the conversion @@ -886,7 +886,7 @@ public: QueryIntAttribute( "foo", &value ); // if "foo" isn't found, value will still be 10 @endverbatim */ - int QueryIntAttribute( const char* name, int* _value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryIntValue( _value ); } + int QueryIntAttribute( const char* name, int* _value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryIntValue( _value ); } /// See QueryIntAttribute() int QueryUnsignedAttribute( const char* name, unsigned int* _value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryUnsignedValue( _value ); } /// See QueryIntAttribute() @@ -894,7 +894,7 @@ public: /// See QueryIntAttribute() int QueryDoubleAttribute( const char* name, double* _value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryDoubleValue( _value ); } /// See QueryIntAttribute() - int QueryFloatAttribute( const char* name, float* _value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryFloatValue( _value ); } + int QueryFloatAttribute( const char* name, float* _value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return XML_NO_ATTRIBUTE; return a->QueryFloatValue( _value ); } /// Sets the named attribute to value. void SetAttribute( const char* name, const char* _value ) { XMLAttribute* a = FindOrCreateAttribute( name ); a->SetAttribute( _value ); } @@ -905,7 +905,7 @@ public: /// Sets the named attribute to value. void SetAttribute( const char* name, bool _value ) { XMLAttribute* a = FindOrCreateAttribute( name ); a->SetAttribute( _value ); } /// Sets the named attribute to value. - void SetAttribute( const char* name, double _value ) { XMLAttribute* a = FindOrCreateAttribute( name ); a->SetAttribute( _value ); } + void SetAttribute( const char* name, double _value ) { XMLAttribute* a = FindOrCreateAttribute( name ); a->SetAttribute( _value ); } /** Delete an attribute. @@ -977,7 +977,7 @@ private: }; -/** A document binds together all the functionality. +/** A Document binds together all the functionality. It can be saved, loaded, and printed to the screen. All Nodes are connected and allocated to a Document. If the Document is deleted, all its Nodes are also deleted. @@ -1024,7 +1024,7 @@ public: int SaveFile( const char* filename ); /** - Save the XML file to disk. You are responsible + Save the XML file to disk. You are responsible for providing and closing the FILE*. Returns XML_NO_ERROR (0) on success, or @@ -1103,7 +1103,7 @@ public: XMLUnknown* NewUnknown( const char* text ); /** - Delete a node associated with this documented. + Delete a node associated with this document. It will be unlinked from the DOM. */ void DeleteNode( XMLNode* node ) { node->parent->DeleteChild( node ); } @@ -1116,9 +1116,9 @@ public: int ErrorID() const { return errorID; } /// Return a possibly helpful diagnostic location or string. const char* GetErrorStr1() const { return errorStr1; } - /// Return possibly helpful secondary diagnostic location or string. + /// Return a possibly helpful secondary diagnostic location or string. const char* GetErrorStr2() const { return errorStr2; } - /// If there is an error, print it to stdout + /// If there is an error, print it to stdout. void PrintError() const; // internal @@ -1158,7 +1158,7 @@ private: - + @endverbatim Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very @@ -1286,7 +1286,7 @@ private: It can: -# Print to memory. - -# Print to a file you provide + -# Print to a file you provide. -# Print XML without a XMLDocument. Print to Memory @@ -1294,7 +1294,7 @@ private: @verbatim XMLPrinter printer; doc->Print( &printer ); - SomeFunctior( printer.CStr() ); + SomeFunction( printer.CStr() ); @endverbatim Print to a File @@ -1349,7 +1349,7 @@ public: /// Add a text node. void PushText( const char* text, bool cdata=false ); - /// Add a comment + /// Add a comment. void PushComment( const char* comment ); void PushDeclaration( const char* value ); @@ -1371,6 +1371,12 @@ public: the XML file in memory. */ const char* CStr() const { return buffer.Mem(); } + /** + If in print to memory mode, return the size + of the XML file in memory. (Note the size returned + includes the terminating null.) + */ + const int CStrSize()const{ return buffer.Size(); } private: void SealElement(); diff --git a/tinyxml2/tinyxml2.xcodeproj/project.pbxproj b/tinyxml2/tinyxml2.xcodeproj/project.pbxproj index a6b7b61..cd31274 100644 --- a/tinyxml2/tinyxml2.xcodeproj/project.pbxproj +++ b/tinyxml2/tinyxml2.xcodeproj/project.pbxproj @@ -8,32 +8,11 @@ /* Begin PBXBuildFile section */ 037AE8A5151E692700E0F29F /* xmltest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 037AE8A3151E692700E0F29F /* xmltest.cpp */; }; - 037AE9BE151E694400E0F29F /* dream.xml in CopyFiles */ = {isa = PBXBuildFile; fileRef = 037AE062151CCC6D00E0F29F /* dream.xml */; }; - 037AE9BF151E694400E0F29F /* utf8test.xml in CopyFiles */ = {isa = PBXBuildFile; fileRef = 037AE065151CCC6D00E0F29F /* utf8test.xml */; }; - 037AE9C0151E694400E0F29F /* utf8testverify.xml in CopyFiles */ = {isa = PBXBuildFile; fileRef = 037AE066151CCC6D00E0F29F /* utf8testverify.xml */; }; 03F28B53152E9B1B00D4CD90 /* tinyxml2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03F28B4A152E9B1B00D4CD90 /* tinyxml2.cpp */; }; /* End PBXBuildFile section */ -/* Begin PBXCopyFilesBuildPhase section */ - 037AE9CF151E697800E0F29F /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 7; - files = ( - 037AE9BE151E694400E0F29F /* dream.xml in CopyFiles */, - 037AE9BF151E694400E0F29F /* utf8test.xml in CopyFiles */, - 037AE9C0151E694400E0F29F /* utf8testverify.xml in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - /* Begin PBXFileReference section */ - 037AE062151CCC6D00E0F29F /* dream.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = dream.xml; sourceTree = ""; }; - 037AE065151CCC6D00E0F29F /* utf8test.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = utf8test.xml; sourceTree = ""; }; - 037AE066151CCC6D00E0F29F /* utf8testverify.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = utf8testverify.xml; sourceTree = ""; }; - 037AE86D151E685F00E0F29F /* tinyxml2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tinyxml2; sourceTree = BUILT_PRODUCTS_DIR; }; + 037AE86D151E685F00E0F29F /* xmltest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = xmltest; sourceTree = BUILT_PRODUCTS_DIR; }; 037AE8A3151E692700E0F29F /* xmltest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = xmltest.cpp; path = ../xmltest.cpp; sourceTree = SOURCE_ROOT; }; 03F28B4A152E9B1B00D4CD90 /* tinyxml2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml2.cpp; sourceTree = ""; }; 03F28B4B152E9B1B00D4CD90 /* tinyxml2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinyxml2.h; sourceTree = ""; }; @@ -54,7 +33,6 @@ isa = PBXGroup; children = ( 037AE069151CCC7000E0F29F /* Classes */, - 037AE06A151CCC7C00E0F29F /* Resources */, 03F28B60152E9B4C00D4CD90 /* Libraries */, 037AE06F151CCCB900E0F29F /* Products */, ); @@ -68,21 +46,10 @@ name = Classes; sourceTree = ""; }; - 037AE06A151CCC7C00E0F29F /* Resources */ = { - isa = PBXGroup; - children = ( - 037AE062151CCC6D00E0F29F /* dream.xml */, - 037AE065151CCC6D00E0F29F /* utf8test.xml */, - 037AE066151CCC6D00E0F29F /* utf8testverify.xml */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; 037AE06F151CCCB900E0F29F /* Products */ = { isa = PBXGroup; children = ( - 037AE86D151E685F00E0F29F /* tinyxml2 */, + 037AE86D151E685F00E0F29F /* xmltest */, ); name = Products; sourceTree = ""; @@ -108,21 +75,20 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 037AE86C151E685F00E0F29F /* tinyxml2 */ = { + 037AE86C151E685F00E0F29F /* xmltest */ = { isa = PBXNativeTarget; - buildConfigurationList = 037AE873151E687E00E0F29F /* Build configuration list for PBXNativeTarget "tinyxml2" */; + buildConfigurationList = 037AE873151E687E00E0F29F /* Build configuration list for PBXNativeTarget "xmltest" */; buildPhases = ( 037AE86A151E685F00E0F29F /* Sources */, 037AE86B151E685F00E0F29F /* Frameworks */, - 037AE9CF151E697800E0F29F /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); - name = tinyxml2; + name = xmltest; productName = tinyxml2; - productReference = 037AE86D151E685F00E0F29F /* tinyxml2 */; + productReference = 037AE86D151E685F00E0F29F /* xmltest */; productType = "com.apple.product-type.tool"; }; /* End PBXNativeTarget section */ @@ -145,7 +111,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 037AE86C151E685F00E0F29F /* tinyxml2 */, + 037AE86C151E685F00E0F29F /* xmltest */, ); }; /* End PBXProject section */ @@ -183,6 +149,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = ..; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; @@ -190,7 +157,7 @@ GCC_OPTIMIZATION_LEVEL = 0; INSTALL_PATH = /usr/local/bin; PREBINDING = NO; - PRODUCT_NAME = tinyxml2; + PRODUCT_NAME = xmltest; }; name = Debug; }; @@ -198,6 +165,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = ..; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_ENABLE_FIX_AND_CONTINUE = NO; @@ -221,7 +189,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 037AE873151E687E00E0F29F /* Build configuration list for PBXNativeTarget "tinyxml2" */ = { + 037AE873151E687E00E0F29F /* Build configuration list for PBXNativeTarget "xmltest" */ = { isa = XCConfigurationList; buildConfigurations = ( 037AE86F151E686000E0F29F /* Debug */, diff --git a/xmltest.cpp b/xmltest.cpp index a87b75e..74b2f98 100644 --- a/xmltest.cpp +++ b/xmltest.cpp @@ -75,7 +75,7 @@ void NullLineEndings( char* p ) int example_1() { XMLDocument doc; - doc.LoadFile( "dream.xml" ); + doc.LoadFile( "resources/dream.xml" ); return doc.ErrorID(); } @@ -127,7 +127,7 @@ int main( int /*argc*/, const char ** /*argv*/ ) #pragma warning ( disable : 4996 ) // Fail to see a compelling reason why this should be deprecated. #endif - FILE* fp = fopen( "dream.xml", "r" ); + FILE* fp = fopen( "resources/dream.xml", "r" ); if ( !fp ) { printf( "Error opening test file 'dream.xml'.\n" "Is your working directory the same as where \n" @@ -260,9 +260,9 @@ int main( int /*argc*/, const char ** /*argv*/ ) // XML2 : 469,073 bytes in 323 allocations //int newStart = gNew; XMLDocument doc; - doc.LoadFile( "dream.xml" ); + doc.LoadFile( "resources/dream.xml" ); - doc.SaveFile( "dreamout.xml" ); + doc.SaveFile( "resources/dreamout.xml" ); doc.PrintError(); XMLTest( "Dream", "xml version=\"1.0\"", @@ -276,7 +276,7 @@ int main( int /*argc*/, const char ** /*argv*/ ) doc.LastChild()->LastChild()->LastChild()->LastChild()->LastChildElement()->GetText() ); XMLDocument doc2; - doc2.LoadFile( "dreamout.xml" ); + doc2.LoadFile( "resources/dreamout.xml" ); XMLTest( "Dream-out", "xml version=\"1.0\"", doc2.FirstChild()->ToDeclaration()->Value() ); XMLTest( "Dream-out", true, doc2.FirstChild()->NextSibling()->ToUnknown() ? true : false ); @@ -352,7 +352,7 @@ int main( int /*argc*/, const char ** /*argv*/ ) { XMLDocument doc; - doc.LoadFile( "utf8test.xml" ); + doc.LoadFile( "resources/utf8test.xml" ); // Get the attribute "value" from the "Russian" element and check it. XMLElement* element = doc.FirstChildElement( "document" )->FirstChildElement( "Russian" ); @@ -373,7 +373,7 @@ int main( int /*argc*/, const char ** /*argv*/ ) text->Value() ); // Now try for a round trip. - doc.SaveFile( "utf8testout.xml" ); + doc.SaveFile( "resources/utf8testout.xml" ); // Check the round trip. char savedBuf[256]; @@ -385,8 +385,8 @@ int main( int /*argc*/, const char ** /*argv*/ ) #pragma warning ( push ) #pragma warning ( disable : 4996 ) // Fail to see a compelling reason why this should be deprecated. #endif - FILE* saved = fopen( "utf8testout.xml", "r" ); - FILE* verify = fopen( "utf8testverify.xml", "r" ); + FILE* saved = fopen( "resources/utf8testout.xml", "r" ); + FILE* verify = fopen( "resources/utf8testverify.xml", "r" ); #if defined(_MSC_VER) #pragma warning ( pop ) #endif @@ -506,7 +506,7 @@ int main( int /*argc*/, const char ** /*argv*/ ) #pragma warning ( push ) #pragma warning ( disable : 4996 ) // Fail to see a compelling reason why this should be deprecated. #endif - FILE* textfile = fopen( "textfile.txt", "w" ); + FILE* textfile = fopen( "resources/textfile.txt", "w" ); #if defined(_MSC_VER) #pragma warning ( pop ) #endif @@ -520,7 +520,7 @@ int main( int /*argc*/, const char ** /*argv*/ ) #pragma warning ( push ) #pragma warning ( disable : 4996 ) // Fail to see a compelling reason why this should be deprecated. #endif - textfile = fopen( "textfile.txt", "r" ); + textfile = fopen( "resources/textfile.txt", "r" ); #if defined(_MSC_VER) #pragma warning ( pop ) #endif @@ -589,9 +589,9 @@ int main( int /*argc*/, const char ** /*argv*/ ) XMLDocument doc; doc.Parse( doctype ); - doc.SaveFile( "test7.xml" ); + doc.SaveFile( "resources/test7.xml" ); doc.DeleteChild( doc.RootElement() ); - doc.LoadFile( "test7.xml" ); + doc.LoadFile( "resources/test7.xml" ); doc.Print(); const XMLUnknown* decl = doc.FirstChild()->NextSibling()->ToUnknown(); @@ -824,6 +824,7 @@ int main( int /*argc*/, const char ** /*argv*/ ) static const char* result = "\xef\xbb\xbf"; XMLTest( "BOM and default declaration", printer.CStr(), result, false ); + XMLTest( "CStrSize", printer.CStrSize(), 42, false ); } @@ -838,7 +839,7 @@ int main( int /*argc*/, const char ** /*argv*/ ) #pragma warning ( push ) #pragma warning ( disable : 4996 ) // Fail to see a compelling reason why this should be deprecated. #endif - FILE* fp = fopen( "dream.xml", "r" ); + FILE* fp = fopen( "resources/dream.xml", "r" ); #if defined(_MSC_VER) #pragma warning ( pop ) #endif