]> git.tdb.fi Git - poefilter.git/blobdiff - source/choicecondition.h
Add equality comparison for conditions
[poefilter.git] / source / choicecondition.h
index 9792f64c42f012963933b794ca09cba09acee6c7..5673d3f7a65ffe83129ef23273e78656af35a283 100644 (file)
@@ -20,6 +20,7 @@ public:
        ChoiceCondition(const std::vector<Type> &);
 
        virtual ChoiceCondition<T> *clone() const;
+       virtual bool equals(const Condition &) const;
        virtual bool can_merge(const Condition &, const CompoundCondition &) const;
        virtual ChoiceCondition<T> *merge(const std::vector<const Condition *> &, const CompoundCondition &) const;
        virtual void add_lines(std::list<FilterStatement> &) const;
@@ -61,6 +62,20 @@ ChoiceCondition<T> *ChoiceCondition<T>::clone() const
        return new ChoiceCondition<T>(values);
 }
 
+template<typename T>
+bool ChoiceCondition<T>::equals(const Condition &other) const
+{
+       const ChoiceCondition<T> *other_choice = dynamic_cast<const ChoiceCondition<T> *>(&other);
+       if(!other_choice || values.size()!=other_choice->values.size())
+               return false;
+
+       for(unsigned i=0; i<values.size(); ++i)
+               if(values[i]!=other_choice->values[i])
+                       return false;
+
+       return true;
+}
+
 template<typename T>
 bool ChoiceCondition<T>::can_merge(const Condition &other, const CompoundCondition &parent) const
 {