| template<class ParentContext, class ElementTag> | |
| class same_context_with_xml_element: boost::noncopyable | |
| { | |
| public: | |
| typedef ParentContext type; | |
| template<class XMLElement> | |
| same_context_with_xml_element(ParentContext & context, XMLElement const & xml_elem) | |
| : context_(context) | |
| { | |
| context_.on_enter_element(ElementTag(), xml_elem); | |
| } | |
| type & get() const { return context_; } | |
| void on_exit_element() const | |
| { | |
| context_.on_exit_element(); | |
| } | |
| private: | |
| type & context_; | |
| }; |
| struct ChildContextFactories | |
| { | |
| template<class ParentContext, class ElementTag, class Enable = void> | |
| struct apply | |
| { | |
| typedef svgpp::factory::context::same_context_with_xml_element<BaseContext> type; | |
| }; | |
| }; |
| { | |
| document_traversal< | |
| ... | |
| context_factories<ChildContextFactories> | |
| >::load_document(xml_root_element, context); | |
| } |