]> git.tdb.fi Git - poefilter.git/blobdiff - source/condition.h
Use covariant return type for Condition::clone
[poefilter.git] / source / condition.h
index 59976aad096b19781895060bdd94dc806741cf58..53f2a8a8268be8e0248f76d41a1032b8a89516b7 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <list>
 #include <string>
+#include <vector>
 #include <msp/strings/format.h>
 #include "rarity.h"
 
@@ -19,14 +20,14 @@ public:
        virtual Condition *clone() const = 0;
        virtual bool can_merge(const Condition &, const CompoundCondition &) const { return false; }
        virtual void add_lines(std::list<FilterStatement> &) const = 0;
-       virtual void add_merged_lines(const std::list<Condition *> &, const CompoundCondition &, std::list<FilterStatement> &) const { }
+       virtual void add_merged_lines(const std::vector<Condition *> &, const CompoundCondition &, std::list<FilterStatement> &) const { }
 };
 
 
 class CompoundCondition: public Condition
 {
 protected:
-       std::list<Condition *> conditions;
+       std::vector<Condition *> conditions;
 
 public:
        virtual ~CompoundCondition();
@@ -42,7 +43,7 @@ public:
 class AndCondition: public CompoundCondition
 {
 public:
-       virtual Condition *clone() const;
+       virtual AndCondition *clone() const;
        virtual void add_lines(std::list<FilterStatement> &) const;
 };
 
@@ -50,7 +51,7 @@ public:
 class OrCondition: public CompoundCondition
 {
 public:
-       virtual Condition *clone() const;
+       virtual OrCondition *clone() const;
        virtual void add_lines(std::list<FilterStatement> &) const;
 };
 
@@ -69,7 +70,7 @@ private:
 public:
        LinkedColorsCondition(const Colors &);
 
-       virtual Condition *clone() const;
+       virtual LinkedColorsCondition *clone() const;
        virtual void add_lines(std::list<FilterStatement> &) const;
 };