7 #include <msp/strings/format.h>
10 class CompoundCondition;
11 class FilterStatement;
18 virtual ~Condition() { }
20 virtual Condition *clone() const = 0;
21 virtual bool can_merge(const Condition &, const CompoundCondition &) const { return false; }
22 virtual void add_lines(std::list<FilterStatement> &) const = 0;
23 virtual void add_merged_lines(const std::vector<Condition *> &, const CompoundCondition &, std::list<FilterStatement> &) const { }
27 class CompoundCondition: public Condition
30 std::vector<Condition *> conditions;
33 virtual ~CompoundCondition();
36 void clone_to(CompoundCondition &) const;
39 void add(Condition *);
43 class AndCondition: public CompoundCondition
46 virtual Condition *clone() const;
47 virtual void add_lines(std::list<FilterStatement> &) const;
51 class OrCondition: public CompoundCondition
54 virtual Condition *clone() const;
55 virtual void add_lines(std::list<FilterStatement> &) const;
59 class LinkedColorsCondition: public Condition
71 LinkedColorsCondition(const Colors &);
73 virtual Condition *clone() const;
74 virtual void add_lines(std::list<FilterStatement> &) const;
77 void operator>>(const Msp::LexicalConverter &, LinkedColorsCondition::Colors &);