6 #include <msp/strings/format.h>
9 class CompoundCondition;
10 class FilterStatement;
17 virtual ~Condition() { }
19 virtual Condition *clone() const = 0;
20 virtual bool can_merge(const Condition &, const CompoundCondition &) const { return false; }
21 virtual void add_lines(std::list<FilterStatement> &) const = 0;
22 virtual void add_merged_lines(const std::list<Condition *> &, const CompoundCondition &, std::list<FilterStatement> &) const { }
26 class CompoundCondition: public Condition
29 std::list<Condition *> conditions;
32 virtual ~CompoundCondition();
35 void clone_to(CompoundCondition &) const;
38 void add(Condition *);
42 class AndCondition: public CompoundCondition
45 virtual Condition *clone() const;
46 virtual void add_lines(std::list<FilterStatement> &) const;
50 class OrCondition: public CompoundCondition
53 virtual Condition *clone() const;
54 virtual void add_lines(std::list<FilterStatement> &) const;
58 class LinkedColorsCondition: public Condition
70 LinkedColorsCondition(const Colors &);
72 virtual Condition *clone() const;
73 virtual void add_lines(std::list<FilterStatement> &) const;
76 void operator>>(const Msp::LexicalConverter &, LinkedColorsCondition::Colors &);