X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=c%2B%2B0x%2Fxml-template.h;h=8f3d69b19257e3ae85e0d4f57163b39597277c30;hb=83a41af3311ec494205205ec093ffff0aad56fd0;hp=cd417e26465a3be7fba5d59d247af700a2735cdd;hpb=59996859ced59ac9fdb307b2eb2130b48d4d4f63;p=xml-template diff --git a/c++0x/xml-template.h b/c++0x/xml-template.h index cd417e2..8f3d69b 100644 --- a/c++0x/xml-template.h +++ b/c++0x/xml-template.h @@ -6,9 +6,11 @@ #include #include #include +#include class Directive { public: + virtual ~Directive(); virtual void process(xmlNode *node, bool clean) = 0; }; @@ -21,14 +23,31 @@ class Replace : public Directive { const std::string str; }; +class Clone : public Directive { + public: + Clone(const std::vector &subdirectives); + Clone(std::initializer_list subdirectives); + ~Clone(); + virtual void process(xmlNode *node, bool clean); + + private: + const std::vector subdirectives; +}; + class Substitute : public Directive { public: Substitute(const std::unordered_map &substitution_map); + Substitute(std::initializer_list> substitution_map); + ~Substitute(); virtual void process(xmlNode *node, bool clean); private: - const std::unordered_map &substitution_map; + const std::unordered_map substitution_map; }; +void process_file(const std::string &input_filename, + const std::string &output_filename, + Directive *root_directive); + #endif // !defined(_XML_TEMPLATE_H)