From 4cac62e1fadd899162768bdf60b0049de6183394 Mon Sep 17 00:00:00 2001 From: jez_higgins <> Date: Mon, 15 Aug 2005 08:31:41 +0000 Subject: [PATCH] factored out setParserFeatures --- DOM/SAX2DOM/SAX2DOM.h | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/DOM/SAX2DOM/SAX2DOM.h b/DOM/SAX2DOM/SAX2DOM.h index 581367dc..28427869 100644 --- a/DOM/SAX2DOM/SAX2DOM.h +++ b/DOM/SAX2DOM/SAX2DOM.h @@ -35,6 +35,10 @@ class Parser : private SAX::basic_DefaultHandler2 entityResolver_(0), errorHandler_(0) { + SAX::FeatureNames fNames; + features_.insert(std::make_pair(fNames.namespaces, true)); + features_.insert(std::make_pair(fNames.namespace_prefixes, true)); + features_.insert(std::make_pair(fNames.validation, true)); } // Parser void setEntityResolver(EntityResolverT& resolver) { entityResolver_ = &resolver; } @@ -51,7 +55,6 @@ class Parser : private SAX::basic_DefaultHandler2 bool parse(SAX::basic_InputSource& source) { - SAX::FeatureNames fNames; SAX::PropertyNames pNames; DOM::DOMImplementation di = SimpleDOM::DOMImplementation::getDOMImplementation(); @@ -69,9 +72,7 @@ class Parser : private SAX::basic_DefaultHandler2 setParserProperty >(parser, pNames.lexicalHandler); setParserProperty >(parser, pNames.declHandler); - parser.setFeature(fNames.namespaces, true); - parser.setFeature(fNames.namespace_prefixes, true); - //parser.setFeature(fNames.external_general, true); + setParserFeatures(parser); try { @@ -114,9 +115,13 @@ class Parser : private SAX::basic_DefaultHandler2 DOM::Node currentNode_; DOM::Node cachedCurrent_; + typedef std::map Features; + Features features_; + bool inCDATA_; int inEntity_; string_adaptorT SA_; + std::map declaredEntities_; EntityResolverT* entityResolver_; @@ -125,7 +130,7 @@ class Parser : private SAX::basic_DefaultHandler2 private: template - void setParserProperty(SAX_parser& parser, const stringT& propertyName) + void setParserProperty(SAX_parser& parser, const stringT& propertyName) { try { parser.setProperty(propertyName, static_cast(*this)); @@ -133,6 +138,12 @@ class Parser : private SAX::basic_DefaultHandler2 catch(SAX::SAXException&) { } } // setParserProperty + void setParserFeatures(SAX_parser& parser) const + { + for(Features::const_iterator f = features_.begin(), e = features_.end(); f != e; ++f) + parser.setFeature(f->first, f->second); + } // setParserFeatures + /////////////////////////////////////////////////////////// // ContentHandler virtual void endDocument()