diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-10-15 11:34:06 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-10-15 11:34:06 +0200 |
commit | fac1bf0b0db4aa90472a2dd06c646af145e059a5 (patch) | |
tree | 2d2ecc6e9a5dec300630baef29eb0ce6e42bb39e /libxsde/xsde/cxx/parser/expat | |
parent | d6635604d7d684edcbd90b4423888b6bb9058dae (diff) |
Add current element to the parser context
Diffstat (limited to 'libxsde/xsde/cxx/parser/expat')
-rw-r--r-- | libxsde/xsde/cxx/parser/expat/document.cxx | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/libxsde/xsde/cxx/parser/expat/document.cxx b/libxsde/xsde/cxx/parser/expat/document.cxx index 84cf7f8..4ce3059 100644 --- a/libxsde/xsde/cxx/parser/expat/document.cxx +++ b/libxsde/xsde/cxx/parser/expat/document.cxx @@ -64,7 +64,7 @@ namespace xsde #else document_pimpl (parser_base& p, const std::string& n) #endif - : first_ (true), xml_parser_ (0), context_ (0), parser_ (&p) + : first_ (true), xml_parser_ (0), parser_ (&p) { #ifdef XSDE_ENCODING_ISO8859_1 xml_error_ = 0; @@ -86,7 +86,7 @@ namespace xsde const std::string& ns, const std::string& n) #endif - : first_ (true), xml_parser_ (0), context_ (0), parser_ (&p) + : first_ (true), xml_parser_ (0), parser_ (&p) { #ifdef XSDE_ENCODING_ISO8859_1 xml_error_ = 0; @@ -105,7 +105,7 @@ namespace xsde #else document_pimpl (parser_base& p, const char* n) #endif - : first_ (true), xml_parser_ (0), context_ (0), parser_ (&p) + : first_ (true), xml_parser_ (0), parser_ (&p) { #ifdef XSDE_ENCODING_ISO8859_1 xml_error_ = 0; @@ -125,7 +125,7 @@ namespace xsde #else document_pimpl (parser_base& p, const char* ns, const char* n) #endif - : first_ (true), xml_parser_ (0), context_ (0), parser_ (&p) + : first_ (true), xml_parser_ (0), parser_ (&p) { #ifdef XSDE_ENCODING_ISO8859_1 xml_error_ = 0; @@ -138,7 +138,7 @@ namespace xsde document_pimpl:: document_pimpl () - : first_ (true), xml_parser_ (0), context_ (0), parser_ (0) + : first_ (true), xml_parser_ (0), parser_ (0) { #ifdef XSDE_ENCODING_ISO8859_1 xml_error_ = 0; @@ -151,7 +151,7 @@ namespace xsde #ifdef XSDE_POLYMORPHIC document_pimpl:: document_pimpl (const char* n) - : first_ (true), xml_parser_ (0), context_ (0), parser_ (0), + : first_ (true), xml_parser_ (0), parser_ (0), polymorphic_ (true) { #ifdef XSDE_ENCODING_ISO8859_1 @@ -162,7 +162,7 @@ namespace xsde document_pimpl:: document_pimpl (const char* ns, const char* n) - : first_ (true), xml_parser_ (0), context_ (0), parser_ (0), + : first_ (true), xml_parser_ (0), parser_ (0), polymorphic_ (true) { #ifdef XSDE_ENCODING_ISO8859_1 @@ -174,7 +174,7 @@ namespace xsde #ifdef XSDE_STL document_pimpl:: document_pimpl (const std::string& n) - : first_ (true), xml_parser_ (0), context_ (0), parser_ (0), + : first_ (true), xml_parser_ (0), parser_ (0), polymorphic_ (true) { #ifdef XSDE_ENCODING_ISO8859_1 @@ -185,7 +185,7 @@ namespace xsde document_pimpl:: document_pimpl (const std::string& ns, const std::string& n) - : first_ (true), xml_parser_ (0), context_ (0), parser_ (0), + : first_ (true), xml_parser_ (0), parser_ (0), polymorphic_ (true) { #ifdef XSDE_ENCODING_ISO8859_1 @@ -416,8 +416,7 @@ namespace xsde void document_pimpl:: parse_begin (XML_Parser parser) { - context_ = context (parser); - + context_.reset (parser); xml_parser_ = parser; set (); } @@ -671,6 +670,9 @@ namespace xsde const ro_string ns (ns_p, ns_s); const ro_string name (name_p, name_s); + context_.element_namespace (ns); + context_.element_name (name); + #ifdef XSDE_POLYMORPHIC const char* type = 0; string type_holder; @@ -1046,6 +1048,9 @@ namespace xsde const ro_string ns (ns_p, ns_s); const ro_string name (name_p, name_s); + context_.element_namespace (ns); + context_.element_name (name); + parser_state& cur = context_.current_; if (cur.depth_ == 0) |