]> git.tdb.fi Git - poefilter.git/blobdiff - source/condition.h
Replace Staff with Stave
[poefilter.git] / source / condition.h
index 141e57094cfd666a3b789b889329dbec50b2c1ed..163c9c828f6d7499f5be57442e8fac5bfbb87486 100644 (file)
@@ -21,6 +21,7 @@ public:
        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 bool is_viable() const { return true; }
        virtual void add_lines(std::list<FilterStatement> &) const = 0;
 };
 
@@ -47,6 +48,9 @@ public:
        virtual Condition *flatten() const;
 protected:
        Condition *dispatch_flatten(Condition *, Condition *) const;
+       Condition *merge_two(Condition *, Condition *, bool) const;
+       Condition *add_merged_to(Condition *, CompoundCondition *, bool) const;
+       Condition *merge_contents_to(CompoundCondition *, CompoundCondition *) const;
        virtual Condition *flatten(Condition *, Condition *) const = 0;
        virtual Condition *flatten(AndCondition *, Condition *) const = 0;
        virtual Condition *flatten(AndCondition *, AndCondition *) const = 0;
@@ -68,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;
 };
 
@@ -84,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;
 };