From 9a9c0055dcc21857b28cfc36bca2a9db0ff698de Mon Sep 17 00:00:00 2001 From: olsner Date: Thu, 3 Jun 2004 13:27:01 +0000 Subject: [PATCH] Use the VFS wrapper instead of Xerces' local file input source This was SVN commit r383. --- source/simulation/BaseEntity.cpp | 34 +++++++++++----------- source/simulation/BaseEntity.h | 2 +- source/simulation/BaseEntityCollection.cpp | 4 +-- source/simulation/Entity.cpp | 2 +- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/source/simulation/BaseEntity.cpp b/source/simulation/BaseEntity.cpp index 6a4af581c6..918880a117 100755 --- a/source/simulation/BaseEntity.cpp +++ b/source/simulation/BaseEntity.cpp @@ -2,15 +2,7 @@ #include "ObjectManager.h" #include "CStr.h" -// xerces XML stuff -#include -#include -#include -#include -#include - -// Gee's custom error handler -#include "ps/XercesErrorHandler.h" +#include "XML.h" // automatically use namespace .. XERCES_CPP_NAMESPACE_USE @@ -59,15 +51,22 @@ bool CBaseEntity::loadXML( CStr filename ) // Set customized error handler CXercesErrorHandler *errorHandler = new CXercesErrorHandler(); parser->setErrorHandler(errorHandler); + + CVFSEntityResolver *entityResolver = new CVFSEntityResolver(filename); + parser->setEntityResolver(entityResolver); // Get main node - LocalFileInputSource source( XMLString::transcode(filename) ); + CVFSInputSource source; + parseOK=source.OpenFile(filename)==0; + + if (parseOK) + { + // Parse file + parser->parse(source); - // Parse file - parser->parse(source); - - // Check how many errors - parseOK = parser->getErrorCount() == 0; + // Check how many errors + parseOK = parser->getErrorCount() == 0; + } if (parseOK) { // parsed successfully - grab our data @@ -75,7 +74,7 @@ bool CBaseEntity::loadXML( CStr filename ) DOMElement *element = doc->getDocumentElement(); // root_name should be Object - CStr root_name = XMLString::transcode( element->getNodeName() ); + CStr root_name = XMLTranscode( element->getNodeName() ); // should have at least 3 children - Name, ModelName and TextureName DOMNodeList *children = element->getChildNodes(); @@ -151,8 +150,9 @@ bool CBaseEntity::loadXML( CStr filename ) } } - delete errorHandler; delete parser; + delete errorHandler; + delete entityResolver; } XMLPlatformUtils::Terminate(); diff --git a/source/simulation/BaseEntity.h b/source/simulation/BaseEntity.h index 5d4a21f1fe..0696e3ebc0 100755 --- a/source/simulation/BaseEntity.h +++ b/source/simulation/BaseEntity.h @@ -52,4 +52,4 @@ public: STL_HASH_MAP m_properties; }; -#endif \ No newline at end of file +#endif diff --git a/source/simulation/BaseEntityCollection.cpp b/source/simulation/BaseEntityCollection.cpp index 83299b35a9..86e4eb0b7f 100755 --- a/source/simulation/BaseEntityCollection.cpp +++ b/source/simulation/BaseEntityCollection.cpp @@ -10,8 +10,8 @@ void CBaseEntityCollection::loadTemplates() Handle handle; vfsDirEnt dent; - CStr pathname = "mods/official/entities/templates/"; - handle=vfs_open_dir("entities/templates/"); + CStr pathname = "entities/templates/"; + handle=vfs_open_dir(pathname.c_str()); if (handle > 0) { while (vfs_next_dirent(handle, &dent, ".xml") == 0) diff --git a/source/simulation/Entity.cpp b/source/simulation/Entity.cpp index 1ca9e8761d..4916c494d6 100755 --- a/source/simulation/Entity.cpp +++ b/source/simulation/Entity.cpp @@ -291,4 +291,4 @@ void CEntity::render() void PASAPScenario() { // Got rid of all the hardcoding that was here. -} \ No newline at end of file +}