[commit] r1572 - trunk/GME/XmlBackEnd
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Mon Oct 3 16:04:45 CDT 2011
Author: ksmyth
Date: Mon Oct 3 16:04:45 2011
New Revision: 1572
Log:
Remove "shared parser" false optimization
Modified:
trunk/GME/XmlBackEnd/CoreXmlFile.cpp
trunk/GME/XmlBackEnd/CoreXmlFile.h
trunk/GME/XmlBackEnd/OperOptions.cpp
trunk/GME/XmlBackEnd/OperOptions.h
Modified: trunk/GME/XmlBackEnd/CoreXmlFile.cpp
==============================================================================
--- trunk/GME/XmlBackEnd/CoreXmlFile.cpp Fri Sep 30 09:52:14 2011 (r1571)
+++ trunk/GME/XmlBackEnd/CoreXmlFile.cpp Mon Oct 3 16:04:45 2011 (r1572)
@@ -598,10 +598,6 @@
m_hashFileNames = false;
m_hashInfoFound = false;
m_hashVal = -1;
- m_domImpl = 0;
- m_domParser = 0;
- m_domErrHandler = 0;
- m_strategyShared = false;
m_needsSessionRefresh = true;
fillParentMap();
@@ -611,9 +607,6 @@
CCoreXmlFile::~CCoreXmlFile()
{
clearAll();
- if (m_strategyShared) {
- deleteParser(&m_domParser, &m_domErrHandler);
- }
XMLPlatformUtils::Terminate();
}
@@ -3579,21 +3572,22 @@
CTime lastWriteTime( attr.ftLastWriteTime );
- DOMLSParser * parser = NULL;
- DOMErrorHandler* err_handler = 0;
+ std::auto_ptr<DOMLSParser> parser;
+ std::auto_ptr<DOMErrorHandler> err_handler;
try
{
DOMImplementationLS * domimpl = 0;
- giveDOMObjs( &domimpl, &parser, &err_handler);
+ newDOMObjs( &domimpl, parser, err_handler);
- if( !domimpl || !parser)
+ if( !domimpl || !parser.get())
{
sendMsg( std::string( "Could not create parser for file ") + fileName + "!", MSG_ERROR);
HR_THROW(E_FILEOPEN);
}
bool suc;
- XERCES_CPP_NAMESPACE::DOMDocument * doc = enclosedParse( fileName, parser, &suc);
+ // TODO: a good candidate for another thread...
+ XERCES_CPP_NAMESPACE::DOMDocument * doc = enclosedParse( fileName, parser.get(), &suc);
if( !doc || !suc)
{
sendMsg( std::string( "Could not parse file ") + fileName + "!", MSG_ERROR);
@@ -3637,14 +3631,9 @@
}
readObject( doc_e, pointers, NULL, fullLoad, lastWriteTime );
-
- deleteParser( &parser, &err_handler);//delete parser;
}
catch(...)
{
- if( parser != NULL )
- deleteParser( &parser, &err_handler);//delete parser;
-
sendMsg( std::string( "Exception during reading ") + fileName + " file!", MSG_ERROR);
HR_THROW(E_FILEOPEN);
}
@@ -3896,14 +3885,9 @@
clearAll();
- m_strategyShared = m_userOpts.m_optimizedParsing;
- initParsers(); // shows a message and throws if can't create parser objects
-
// load all dirs
loadDirs( m_folderPath, pointers, fullLoad);
- finiParsers();
-
#ifdef _DEBUG
#if(DETAILS_ABOUT_XMLBACKEND)
if( m_userOpts.m_measureTime) { sendMsg( "resolvePointers", MSG_INFO); }
@@ -5978,53 +5962,7 @@
return std::string( "<A HREF=\"mga:") + id + "\">" + (nm.size()>0?nm:"noname") + "</A>";
}
-void CCoreXmlFile::initParsers()
-{
- m_domImpl = 0;
- m_domParser = 0;
- m_domErrHandler = 0;
-
- if( m_strategyShared) // reusable objects are intended
- {
- newDOMObjs( &m_domImpl, &m_domParser, &m_domErrHandler);
-
- if( !m_domImpl || !m_domParser || !m_domErrHandler)
- {
- sendMsg( "Could not create parser and related objects!", MSG_ERROR);
- HR_THROW(E_FILEOPEN);
- }
- }
-}
-
-void CCoreXmlFile::finiParsers()
-{
- if( m_domParser)
- {
- delete m_domParser;
- m_domParser = 0;
- }
-
- if( m_domErrHandler)
- {
- delete m_domErrHandler;
- m_domErrHandler = 0;
- }
-}
-
-// pretends to delete a parser
-// but deletes it only in unique strategy case
-void CCoreXmlFile::deleteParser( DOMLSParser* *p_parser, DOMErrorHandler* *p_err_handler)
-{
- if( !m_strategyShared)
- {
- delete *p_parser;
- *p_parser = 0;
- delete *p_err_handler;
- *p_err_handler = 0;
- }
-}
-
-void CCoreXmlFile::newDOMObjs( XERCES_CPP_NAMESPACE::DOMImplementationLS* *p_domImpl, XERCES_CPP_NAMESPACE::DOMLSParser* *p_domParser, XERCES_CPP_NAMESPACE::DOMErrorHandler* *p_domErrHandler)
+void CCoreXmlFile::newDOMObjs( XERCES_CPP_NAMESPACE::DOMImplementationLS** p_domImpl, std::auto_ptr<XERCES_CPP_NAMESPACE::DOMLSParser>& p_domParser, std::auto_ptr<XERCES_CPP_NAMESPACE::DOMErrorHandler>& p_domErrHandler)
{
DOMImplementationLS * domimpl = DOMImplementationRegistry::getDOMImplementation( smart_XMLCh(XMLString::transcode("XML 1.0")));//NULL
ASSERT( domimpl != NULL );
@@ -6038,50 +5976,10 @@
parser->getDomConfig()->setParameter(XMLUni::fgDOMErrorHandler, err_handler);
*p_domImpl = domimpl;
- *p_domParser = parser;
- *p_domErrHandler = err_handler;
-}
-
-void CCoreXmlFile::giveDOMObjs( XERCES_CPP_NAMESPACE::DOMImplementationLS* *p_domImpl, XERCES_CPP_NAMESPACE::DOMLSParser* *p_domParser, XERCES_CPP_NAMESPACE::DOMErrorHandler* *p_domErrHandler)
-{
- if( m_strategyShared)
- {
- // reuse the current set
- *p_domImpl = m_domImpl;
- *p_domParser = m_domParser;
- *p_domErrHandler = m_domErrHandler;
- }
- else
- {
- // create a new set of objects
- newDOMObjs( p_domImpl, p_domParser, p_domErrHandler);
- }
+ p_domParser = std::auto_ptr<XERCES_CPP_NAMESPACE::DOMLSParser>(parser);
+ p_domErrHandler = std::auto_ptr<XERCES_CPP_NAMESPACE::DOMErrorHandler>(err_handler);
}
-//DOMImplementationLS * CCoreXmlFile::giveDomImpl()
-//{
-// if( m_strategyShared)
-// return m_domImpl;
-// else
-// {
-// DOMImplementationLS * domimpl = DOMImplementationRegistry::getDOMImplementation( XMLString::transcode("XML 1.0"));//NULL
-// ASSERT( domimpl != NULL );
-// return domimpl;
-// }
-//}
-//
-//DOMBuilder * CCoreXmlFile::giveDomParser( DOMImplementationLS * domimpl)
-//{
-// if( m_strategyShared)
-// return m_domParser;
-// else
-// {
-// DOMBuilder *parser = !domimpl? 0: domimpl->createDOMBuilder( DOMImplementationLS::MODE_SYNCHRONOUS, NULL );
-// ASSERT( parser != NULL );
-// return parser;
-// }
-//}
-//
XERCES_CPP_NAMESPACE::DOMDocument* CCoreXmlFile::enclosedParse( const std::string& p_fileName, DOMLSParser* p_parser, bool *p_success)
{
ASSERT( p_parser);
Modified: trunk/GME/XmlBackEnd/CoreXmlFile.h
==============================================================================
--- trunk/GME/XmlBackEnd/CoreXmlFile.h Fri Sep 30 09:52:14 2011 (r1571)
+++ trunk/GME/XmlBackEnd/CoreXmlFile.h Mon Oct 3 16:04:45 2011 (r1572)
@@ -746,19 +746,7 @@
XERCES_CPP_NAMESPACE::DOMDocument*
enclosedParse ( const std::string& p_fileName, XERCES_CPP_NAMESPACE::DOMLSParser* p_parser, bool *p_success);
- //XERCES_CPP_NAMESPACE::DOMImplementationLS * giveDomImpl();
- //XERCES_CPP_NAMESPACE::DOMBuilder* giveDomParser( XERCES_CPP_NAMESPACE::DOMImplementationLS * domimpl);
- void giveDOMObjs( XERCES_CPP_NAMESPACE::DOMImplementationLS* *p_domImpl, XERCES_CPP_NAMESPACE::DOMLSParser* *p_domParser, XERCES_CPP_NAMESPACE::DOMErrorHandler* *p_domErrHandler);
- void newDOMObjs( XERCES_CPP_NAMESPACE::DOMImplementationLS* *p_domImpl, XERCES_CPP_NAMESPACE::DOMLSParser* *p_domParser, XERCES_CPP_NAMESPACE::DOMErrorHandler* *p_domErrHandler);
- void initParsers ();
- void deleteParser (XERCES_CPP_NAMESPACE::DOMLSParser* *p_parser, DOMErrorHandler* *p_err_handler);
- void finiParsers ();
-
- bool m_strategyShared;
-
- DOMImplementationLS * m_domImpl;
- DOMLSParser * m_domParser;
- DOMErrorHandler* m_domErrHandler;
+ void newDOMObjs( XERCES_CPP_NAMESPACE::DOMImplementationLS** p_domImpl, std::auto_ptr<XERCES_CPP_NAMESPACE::DOMLSParser>& p_domParser, std::auto_ptr<XERCES_CPP_NAMESPACE::DOMErrorHandler>& p_domErrHandler);
public: // parser creation for other tasks than the individual xml file scannning
DOMLSParser* getFreshParser ( const std::string& p_whoIsTheUser, DOMImplementationLS ** p_ptrRetDomImpl = 0);
Modified: trunk/GME/XmlBackEnd/OperOptions.cpp
==============================================================================
--- trunk/GME/XmlBackEnd/OperOptions.cpp Fri Sep 30 09:52:14 2011 (r1571)
+++ trunk/GME/XmlBackEnd/OperOptions.cpp Mon Oct 3 16:04:45 2011 (r1572)
@@ -18,7 +18,6 @@
, m_doConnSegmentLock( true)
, m_doModelParentLock( true)
, m_doBaseTypeLock( true)
-, m_optimizedParsing( false)
, m_partialLoad( false)
, m_useAccountInfo( false)
, m_automaticLogin( false)
@@ -51,7 +50,6 @@
m_doConnSegmentLock = true;
m_doModelParentLock = true;
m_doBaseTypeLock = true;
- m_optimizedParsing = false;
m_partialLoad = false;
m_useAccountInfo = false;
m_automaticLogin = false;
@@ -131,10 +129,6 @@
{
m_defCheckOutOnAction = parseBool( line, "DefCheckOutOnAction"); //m_defCheckOutOnAction = true;
}
- else if( 0 == line.find( "OptimizedParsing"))
- {
- m_optimizedParsing = parseBool( line, "OptimizedParsing");
- }
else if( 0 == line.find( "PartialLoad"))//=true"))
{
m_partialLoad = parseBool( line, "PartialLoad"); //m_partialLoad = true;
@@ -245,7 +239,6 @@
#ifdef _DEBUG
//parent->sendMsg( std::string( "[DebugMode]Log=") + (m_createLog?"true":"false"), MSG_INFO);
#endif
- if( m_optimizedParsing) parent->sendMsg( std::string( "OptimizedParsing=") + (m_optimizedParsing?"true":"false"), MSG_INFO);
parent->sendMsg( std::string( "PartialLoad=") + (m_partialLoad?"true":"false"), MSG_INFO);
//parent->sendMsg( std::string( "Adv. Settings {RTgt, CEnd, CSeg, ModP, BasT}=")
// + (m_doRefTargetLock?"{true,":"{false,")
Modified: trunk/GME/XmlBackEnd/OperOptions.h
==============================================================================
--- trunk/GME/XmlBackEnd/OperOptions.h Fri Sep 30 09:52:14 2011 (r1571)
+++ trunk/GME/XmlBackEnd/OperOptions.h Mon Oct 3 16:04:45 2011 (r1572)
@@ -31,7 +31,6 @@
bool m_doConnSegmentLock;
bool m_doModelParentLock;
bool m_doBaseTypeLock;
- bool m_optimizedParsing;
bool m_partialLoad;
bool m_useAccountInfo;
bool m_automaticLogin;
More information about the gme-commit
mailing list