X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcondition.h;h=163c9c828f6d7499f5be57442e8fac5bfbb87486;hb=f3d3b7227de162f824b8be6be4028a8848f11f2f;hp=141e57094cfd666a3b789b889329dbec50b2c1ed;hpb=8b9d1f472e7bfbb1e097bb6d8bcad026e9636822;p=poefilter.git diff --git a/source/condition.h b/source/condition.h index 141e570..163c9c8 100644 --- a/source/condition.h +++ b/source/condition.h @@ -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 &, const CompoundCondition &) const { return 0; } + virtual bool is_viable() const { return true; } virtual void add_lines(std::list &) 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 &) 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 &) const; };