aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/serializer/map.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-03-26 17:09:53 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-03-26 17:09:53 +0200
commite4c22d3686da0e973e21eae0561c1169c0eeff36 (patch)
tree0a49e9167edc88938b0287949080931314e8afea /libxsde/xsde/cxx/serializer/map.cxx
parent0d62005a3ff3b62d02c2eb3fd8644e0e19b202e8 (diff)
Implement support for XML Schema polymorphism in C++/Hybrid
examples/cxx/hybrid/polyroot/ examples/cxx/hybrid/polymorphism/: new examples tests/cxx/hybrid/polymorphism/: new tests
Diffstat (limited to 'libxsde/xsde/cxx/serializer/map.cxx')
-rw-r--r--libxsde/xsde/cxx/serializer/map.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/libxsde/xsde/cxx/serializer/map.cxx b/libxsde/xsde/cxx/serializer/map.cxx
index 1ace4ac..f3c88f6 100644
--- a/libxsde/xsde/cxx/serializer/map.cxx
+++ b/libxsde/xsde/cxx/serializer/map.cxx
@@ -23,12 +23,20 @@ namespace xsde
void serializer_map_impl::
reset () const
{
+ if (resetting_)
+ return;
+
+ bool& r = const_cast<bool&> (resetting_);
+ r = true;
+
for (hashmap::const_iterator i (map_.begin ()), e (map_.end ());
i != e; ++i)
{
serializer_base* s = *static_cast<serializer_base* const*> (*i);
s->_reset ();
}
+
+ r = false;
}
}
}