diff options
Diffstat (limited to 'libxsd/xsd/cxx/tree/stream-insertion-map.txx')
-rw-r--r-- | libxsd/xsd/cxx/tree/stream-insertion-map.txx | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libxsd/xsd/cxx/tree/stream-insertion-map.txx b/libxsd/xsd/cxx/tree/stream-insertion-map.txx index c3cf9b5..f9d5745 100644 --- a/libxsd/xsd/cxx/tree/stream-insertion-map.txx +++ b/libxsd/xsd/cxx/tree/stream-insertion-map.txx @@ -256,6 +256,13 @@ namespace xsd template <typename S, typename C> void stream_insertion_map<S, C>:: + unregister_type (const type_id& tid) + { + type_map_.erase (&tid); + } + + template <typename S, typename C> + void stream_insertion_map<S, C>:: insert (ostream<S>& s, const type& x) { if (const type_info* ti = find (typeid (x))) @@ -320,6 +327,14 @@ namespace xsd xml::qualified_name<C> (name, ns), &inserter_impl<S, T>); } + + template<unsigned long id, typename S, typename C, typename T> + stream_insertion_initializer<id, S, C, T>:: + ~stream_insertion_initializer (const C* name, const C* ns) + { + stream_insertion_map_instance<id, S, C> ().unregister_type ( + typeid (T)); + } } } } |