aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/parser/expat
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-10-15 11:34:06 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-10-15 11:34:06 +0200
commitfac1bf0b0db4aa90472a2dd06c646af145e059a5 (patch)
tree2d2ecc6e9a5dec300630baef29eb0ce6e42bb39e /libxsde/xsde/cxx/parser/expat
parentd6635604d7d684edcbd90b4423888b6bb9058dae (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.cxx27
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)