]> git.tdb.fi Git - poefilter.git/blobdiff - source/condition.h
Tighten some parameters and return values
[poefilter.git] / source / condition.h
index 979f1e904714032788a8daf1d850568c713f353e..bbabf22e5f27d98c8de47b0b4a58622a910dff63 100644 (file)
@@ -20,7 +20,8 @@ public:
        virtual Condition *clone() const = 0;
        virtual Condition *flatten() const { return clone(); }
        virtual bool can_merge(const Condition &, const CompoundCondition &) const { return false; }
-       virtual Condition *merge(const std::vector<Condition *> &, const CompoundCondition &) const { return 0; }
+       virtual Condition *merge(const std::vector<const Condition *> &, const CompoundCondition &) const { return 0; }
+       virtual bool is_viable() const { return true; }
        virtual void add_lines(std::list<FilterStatement> &) const = 0;
 };
 
@@ -42,7 +43,7 @@ protected:
 public:
        void add(Condition *);
        unsigned count() const { return conditions.size(); }
-       const Condition *get(unsigned) const;
+       const Condition &get(unsigned) const;
 
        virtual Condition *flatten() const;
 protected:
@@ -71,6 +72,7 @@ protected:
        virtual Condition *flatten(OrCondition *, AndCondition *) const;
        virtual Condition *flatten(OrCondition *, OrCondition *) const;
 public:
+       virtual bool is_viable() const;
        virtual void add_lines(std::list<FilterStatement> &) const;
 };
 
@@ -87,6 +89,7 @@ protected:
        virtual Condition *flatten(OrCondition *, AndCondition *) const;
        virtual Condition *flatten(OrCondition *, OrCondition *) const;
 public:
+       virtual bool is_viable() const;
        virtual void add_lines(std::list<FilterStatement> &) const;
 };