]> git.sesse.net Git - xml-template/blobdiff - c++0x/xml-template.h
Add Alternate support to C++0x version, and corresponding attribute2 test.
[xml-template] / c++0x / xml-template.h
index 4728dbf088379b5edc998285408e28ed07e06aff..d29cbaeeb5b17594a5e5db7fd5ea80fcab4fae60 100644 (file)
@@ -25,15 +25,18 @@ class Replace : public Directive {
        const std::string str;
 };
 
+class Substitute;
+
 class Clone : public Directive {
  public:
        Clone(const std::vector<Directive *> &subdirectives);
+       Clone(const std::vector<Substitute *> &subdirectives);
        Clone(std::initializer_list<Directive *> subdirectives);
        ~Clone();
        virtual void process(xmlNode *node, bool clean);
 
  private:
-       const std::vector<Directive *> subdirectives;
+       std::vector<Directive *> subdirectives;
 };
 
 class Substitute : public Directive {
@@ -45,7 +48,15 @@ class Substitute : public Directive {
        virtual void process(xmlNode *node, bool clean);
 
  private:
-       const std::unordered_map<std::string, Directive*> substitution_map;
+       friend class Alternate;
+       std::unordered_map<std::string, Directive*> substitution_map;
+};
+
+class Alternate : public Clone {
+ public:
+       Alternate(const std::string &attribute,
+                 const std::vector<Substitute *> &subdirectives_subs,
+                 const std::vector<std::string> &alternatives);
 };
 
 void process_file(const std::string &input_filename,