factored out setParserFeatures

This commit is contained in:
jez_higgins 2005-08-15 08:31:41 +00:00
parent bcd9584ce1
commit 4cac62e1fa

View file

@ -35,6 +35,10 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
entityResolver_(0), entityResolver_(0),
errorHandler_(0) errorHandler_(0)
{ {
SAX::FeatureNames<stringT> 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 } // Parser
void setEntityResolver(EntityResolverT& resolver) { entityResolver_ = &resolver; } void setEntityResolver(EntityResolverT& resolver) { entityResolver_ = &resolver; }
@ -51,7 +55,6 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
bool parse(SAX::basic_InputSource<stringT>& source) bool parse(SAX::basic_InputSource<stringT>& source)
{ {
SAX::FeatureNames<stringT> fNames;
SAX::PropertyNames<stringT> pNames; SAX::PropertyNames<stringT> pNames;
DOM::DOMImplementation<stringT> di = SimpleDOM::DOMImplementation<stringT, string_adaptorT>::getDOMImplementation(); DOM::DOMImplementation<stringT> di = SimpleDOM::DOMImplementation<stringT, string_adaptorT>::getDOMImplementation();
@ -69,9 +72,7 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
setParserProperty<SAX::basic_LexicalHandler<stringT> >(parser, pNames.lexicalHandler); setParserProperty<SAX::basic_LexicalHandler<stringT> >(parser, pNames.lexicalHandler);
setParserProperty<SAX::basic_DeclHandler<stringT> >(parser, pNames.declHandler); setParserProperty<SAX::basic_DeclHandler<stringT> >(parser, pNames.declHandler);
parser.setFeature(fNames.namespaces, true); setParserFeatures(parser);
parser.setFeature(fNames.namespace_prefixes, true);
//parser.setFeature(fNames.external_general, true);
try try
{ {
@ -114,9 +115,13 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
DOM::Node<stringT> currentNode_; DOM::Node<stringT> currentNode_;
DOM::Node<stringT> cachedCurrent_; DOM::Node<stringT> cachedCurrent_;
typedef std::map<stringT, bool> Features;
Features features_;
bool inCDATA_; bool inCDATA_;
int inEntity_; int inEntity_;
string_adaptorT SA_; string_adaptorT SA_;
std::map<stringT, EntityT*> declaredEntities_; std::map<stringT, EntityT*> declaredEntities_;
EntityResolverT* entityResolver_; EntityResolverT* entityResolver_;
@ -133,6 +138,12 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
catch(SAX::SAXException&) { } catch(SAX::SAXException&) { }
} // setParserProperty } // 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 // ContentHandler
virtual void endDocument() virtual void endDocument()