]> git.tdb.fi Git - poefilter.git/blobdiff - source/condition.h
Merge and conditions if they only differ in one sub-condition
[poefilter.git] / source / condition.h
index 9d945c78eec8ffa3c123fb4ea9e8fdb3e42ef978..6b0cf6bda2831109cc7ef38b66fb08abf8a1bf7f 100644 (file)
@@ -74,6 +74,11 @@ protected:
        virtual Condition *flatten(OrCondition *, Condition *) const;
        virtual Condition *flatten(OrCondition *, AndCondition *) const;
        virtual Condition *flatten(OrCondition *, OrCondition *) const;
+public:
+       virtual bool can_merge(const Condition &, const CompoundCondition &) const;
+       virtual AndCondition *merge(const std::vector<const Condition *> &, const CompoundCondition &) const;
+private:
+       static bool merge(const AndCondition &, const AndCondition &, const CompoundCondition &, AndCondition **);
 public:
        virtual bool is_viable() const;
        virtual void add_lines(std::list<FilterStatement> &) const;