From f0079a4f11c7108f064f67cd000f45ef2e31c8f0 Mon Sep 17 00:00:00 2001 From: Khaled Noaman <knoaman@apache.org> Date: Fri, 27 Dec 2002 16:16:51 +0000 Subject: [PATCH] Set scanner options and handlers. git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174557 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/dom/deprecated/DOMParser.cpp | 6 +++--- src/xercesc/internal/XMLScanner.cpp | 21 ++++++++++++++++++++- src/xercesc/internal/XMLScanner.hpp | 18 +++++++++++++++++- src/xercesc/parsers/AbstractDOMParser.cpp | 8 +++----- src/xercesc/parsers/SAX2XMLReaderImpl.cpp | 5 ++++- src/xercesc/parsers/SAXParser.cpp | 9 ++++++--- 6 files changed, 53 insertions(+), 14 deletions(-) diff --git a/src/xercesc/dom/deprecated/DOMParser.cpp b/src/xercesc/dom/deprecated/DOMParser.cpp index 83dc48e10..c2da4884a 100644 --- a/src/xercesc/dom/deprecated/DOMParser.cpp +++ b/src/xercesc/dom/deprecated/DOMParser.cpp @@ -383,11 +383,11 @@ void DOMParser::useScanner(const XMLCh* const scannerName) if (tempScanner) { - // REVISIT: need to set scanner options and handlers + tempScanner->setParseSettings(fScanner); + tempScanner->setGrammarResolver(fGrammarResolver); + tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; - fScanner->setGrammarResolver(fGrammarResolver); - fScanner->setURIStringPool(fURIStringPool); } } diff --git a/src/xercesc/internal/XMLScanner.cpp b/src/xercesc/internal/XMLScanner.cpp index 54296478b..fa1ba381f 100644 --- a/src/xercesc/internal/XMLScanner.cpp +++ b/src/xercesc/internal/XMLScanner.cpp @@ -540,7 +540,26 @@ void XMLScanner::scanReset(XMLPScanToken& token) fErrorCount = 0; } - +void XMLScanner::setParseSettings(XMLScanner* const refScanner) +{ + setDocHandler(refScanner->getDocHandler()); + setDocTypeHandler(refScanner->getDocTypeHandler()); + setErrorHandler(refScanner->getErrorHandler()); + setErrorReporter(refScanner->getErrorReporter()); + setEntityHandler(refScanner->getEntityHandler()); + setDoNamespaces(refScanner->getDoNamespaces()); + setDoSchema(refScanner->getDoSchema()); + setCalculateSrcOfs(refScanner->getCalculateSrcOfs()); + setExitOnFirstFatal(refScanner->getExitOnFirstFatal()); + setValidationConstraintFatal(refScanner->getValidationConstraintFatal()); + setValidationSchemaFullChecking(refScanner->getValidationSchemaFullChecking()); + cacheGrammarFromParse(refScanner->isCachingGrammarFromParse()); + useCachedGrammarInParse(refScanner->isUsingCachedGrammarInParse()); + setLoadExternalDTD(refScanner->getLoadExternalDTD()); + setNormalizeData(refScanner->getNormalizeData()); + setExternalSchemaLocation(refScanner->getExternalSchemaLocation()); + setExternalNoNamespaceSchemaLocation(refScanner->getExternalNoNamespaceSchemaLocation()); +} // --------------------------------------------------------------------------- // XMLScanner: Private helper methods. diff --git a/src/xercesc/internal/XMLScanner.hpp b/src/xercesc/internal/XMLScanner.hpp index 7a9be63ea..a599fc702 100644 --- a/src/xercesc/internal/XMLScanner.hpp +++ b/src/xercesc/internal/XMLScanner.hpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.15 2002/12/27 16:16:51 knoaman + * Set scanner options and handlers. + * * Revision 1.14 2002/12/20 22:09:56 tng * XML 1.1 * @@ -408,6 +411,8 @@ public : XMLEntityHandler* getEntityHandler(); const XMLErrorReporter* getErrorReporter() const; XMLErrorReporter* getErrorReporter(); + const ErrorHandler* getErrorHandler() const; + ErrorHandler* getErrorHandler(); bool getExitOnFirstFatal() const; bool getValidationConstraintFatal() const; RefHashTableOf<XMLRefInfo>* getIDRefList(); @@ -527,6 +532,7 @@ public : void setLoadExternalDTD(const bool loadDTD); void setNormalizeData(const bool normalizeData); void setCalculateSrcOfs(const bool newValue); + void setParseSettings(XMLScanner* const refScanner); // ----------------------------------------------------------------------- // Mutator methods @@ -577,7 +583,7 @@ public : // ----------------------------------------------------------------------- // Grammar preparsing methods - // ----------------------------------------------------------------------- + // ----------------------------------------------------------------------- Grammar* loadGrammar ( const XMLCh* const systemId @@ -934,6 +940,16 @@ inline XMLErrorReporter* XMLScanner::getErrorReporter() return fErrorReporter; } +inline const ErrorHandler* XMLScanner::getErrorHandler() const +{ + return fErrorHandler; +} + +inline ErrorHandler* XMLScanner::getErrorHandler() +{ + return fErrorHandler; +} + inline bool XMLScanner::getExitOnFirstFatal() const { return fExitOnFirstFatal; diff --git a/src/xercesc/parsers/AbstractDOMParser.cpp b/src/xercesc/parsers/AbstractDOMParser.cpp index 952afb877..b0e65e9b3 100644 --- a/src/xercesc/parsers/AbstractDOMParser.cpp +++ b/src/xercesc/parsers/AbstractDOMParser.cpp @@ -378,13 +378,11 @@ void AbstractDOMParser::useScanner(const XMLCh* const scannerName) if (tempScanner) { - // REVISIT: need to set scanner options and handlers + tempScanner->setParseSettings(fScanner); + tempScanner->setGrammarResolver(fGrammarResolver); + tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; - fScanner->setDocHandler(this); - fScanner->setDocTypeHandler(this); - fScanner->setGrammarResolver(fGrammarResolver); - fScanner->setURIStringPool(fURIStringPool); } } diff --git a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp index af7f51e9a..3a7db573b 100644 --- a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp +++ b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.15 2002/12/27 16:16:51 knoaman + * Set scanner options and handlers. + * * Revision 1.14 2002/12/11 22:14:54 knoaman * Performance: no need to use temporary buffer to hold namespace value. * @@ -1488,7 +1491,7 @@ void SAX2XMLReaderImpl::setProperty(const XMLCh* const name, void* value) if (tempScanner) { - // REVISIT: set scanner options and handlers + tempScanner->setParseSettings(fScanner); tempScanner->setGrammarResolver(fGrammarResolver); tempScanner->setURIStringPool(fURIStringPool); delete fScanner; diff --git a/src/xercesc/parsers/SAXParser.cpp b/src/xercesc/parsers/SAXParser.cpp index 5fd825e41..686378f1f 100644 --- a/src/xercesc/parsers/SAXParser.cpp +++ b/src/xercesc/parsers/SAXParser.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.12 2002/12/27 16:16:51 knoaman + * Set scanner options and handlers. + * * Revision 1.11 2002/12/23 15:23:18 knoaman * Added a public api to various parsers to return the src offset within the input * source. @@ -553,11 +556,11 @@ void SAXParser::useScanner(const XMLCh* const scannerName) if (tempScanner) { - // REVISIT: need to set scanner options and handlers + tempScanner->setParseSettings(fScanner); + tempScanner->setGrammarResolver(fGrammarResolver); + tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; - fScanner->setGrammarResolver(fGrammarResolver); - fScanner->setURIStringPool(fURIStringPool); } } -- GitLab