From 384b50ceec7a83713a45844cfbd1d58d185c3909 Mon Sep 17 00:00:00 2001 From: Alexandre Bique Date: Tue, 28 Apr 2009 17:27:50 +0100 Subject: [PATCH] [moulette] starting a xml listener --- README | 1 + src/moulette/listeners/CMakeLists.txt | 1 + src/moulette/listeners/xml-listener.cc | 32 ++++++++++++++++++++++++++++++++ src/moulette/listeners/xml-listener.hh | 27 +++++++++++++++++++++++++++ src/moulette/main.cc | 2 ++ 5 files changed, 63 insertions(+) create mode 100644 src/moulette/listeners/xml-listener.cc create mode 100644 src/moulette/listeners/xml-listener.hh diff --git a/README b/README index e4f9c9c..2d628dd 100644 --- a/README +++ b/README @@ -21,6 +21,7 @@ Dependancies: - bison - flex - bohem gc (C/C++ garbage collector) + - rapidxml You also need to apply a patch on /usr/share/bison/glr.c, the patch can be found in patches/ diff --git a/src/moulette/listeners/CMakeLists.txt b/src/moulette/listeners/CMakeLists.txt index d37cb01..b4acc0e 100644 --- a/src/moulette/listeners/CMakeLists.txt +++ b/src/moulette/listeners/CMakeLists.txt @@ -1,3 +1,4 @@ ADD_LIBRARY(moulette-listeners console-listener.cc console-listener.hh + xml-listener.cc xml-listener.hh ) \ No newline at end of file diff --git a/src/moulette/listeners/xml-listener.cc b/src/moulette/listeners/xml-listener.cc new file mode 100644 index 0000000..0390f34 --- /dev/null +++ b/src/moulette/listeners/xml-listener.cc @@ -0,0 +1,32 @@ +#include + +#include +#include "xml-listener.hh" + +template class rapidxml::xml_node<>; +template class rapidxml::xml_document<>; + +namespace moulette +{ + XmlListener::XmlListener() + : Listener(), + doc_(), + node_(&doc_) + { + } + + void + XmlListener::starting(const Testable * test) + { + rapidxml::xml_node<> * node = + doc_.allocate_node(rapidxml::node_element, "test"); + node_->append_node(node); + node_ = node; + } + + void + XmlListener::finished(const Testable * test) + { + node_ = node_->parent(); + } +} diff --git a/src/moulette/listeners/xml-listener.hh b/src/moulette/listeners/xml-listener.hh new file mode 100644 index 0000000..744edb2 --- /dev/null +++ b/src/moulette/listeners/xml-listener.hh @@ -0,0 +1,27 @@ +#ifndef MOULETTE_XML_LISTENER_HH +# define MOULETTE_XML_LISTENER_HH + +# include + +# include + +namespace moulette +{ + class XmlListener : public Listener + { + public: + XmlListener(); + + virtual void starting(const Testable * test); + virtual void finished(const Testable * test); + + protected: + rapidxml::xml_document<> doc_; + rapidxml::xml_node<> * node_; + }; +} + +extern template class rapidxml::xml_node<>; +extern template class rapidxml::xml_document<>; + +#endif /* !MOULETTE_XML_LISTENER_HH */ diff --git a/src/moulette/main.cc b/src/moulette/main.cc index 418fc03..2485198 100644 --- a/src/moulette/main.cc +++ b/src/moulette/main.cc @@ -4,6 +4,7 @@ #include #include +#include namespace po = boost::program_options; @@ -36,6 +37,7 @@ int main(int argc, char **argv) } moul.registerListener(*new moulette::ConsoleListener); + moul.registerListener(*new moulette::XmlListener); moul.run(); return 0; -- 2.11.4.GIT