]> git.tdb.fi Git - poefilter.git/commitdiff
Use covariant return type for Condition::clone
authorMikko Rasa <tdb@tdb.fi>
Wed, 15 Aug 2018 20:59:20 +0000 (23:59 +0300)
committerMikko Rasa <tdb@tdb.fi>
Wed, 15 Aug 2018 21:01:25 +0000 (00:01 +0300)
source/choicecondition.h
source/condition.cpp
source/condition.h
source/rangecondition.h

index 6e2954dbf04790ea6ebfb1a3530463880dcf2b93..170af0e0634a27c4615eb6d5b35e1db8c6168601 100644 (file)
@@ -17,7 +17,7 @@ private:
 public:
        ChoiceCondition(Type);
 
-       virtual Condition *clone() const;
+       virtual ChoiceCondition<T> *clone() const;
        virtual bool can_merge(const Condition &, const CompoundCondition &) const;
        virtual void add_lines(std::list<FilterStatement> &) const;
        virtual void add_merged_lines(const std::vector<Condition *> &, const CompoundCondition &, std::list<FilterStatement> &) const;
@@ -48,9 +48,9 @@ ChoiceCondition<T>::ChoiceCondition(Type v):
 { }
 
 template<typename T>
-Condition *ChoiceCondition<T>::clone() const
+ChoiceCondition<T> *ChoiceCondition<T>::clone() const
 {
-       return new ChoiceCondition<T>(values);
+       return new ChoiceCondition<T>(value);
 }
 
 template<typename T>
index 9ff02aa322db9f93bbf8ce6f623a1471666d51cd..be5a29f4d11df67cf5785a5938514574701d48b4 100644 (file)
@@ -22,7 +22,7 @@ void CompoundCondition::add(Condition *cond)
 }
 
 
-Condition *AndCondition::clone() const
+AndCondition *AndCondition::clone() const
 {
        AndCondition *result = new AndCondition;
        clone_to(*result);
@@ -36,7 +36,7 @@ void AndCondition::add_lines(list<FilterStatement> &st) const
 }
 
 
-Condition *OrCondition::clone() const
+OrCondition *OrCondition::clone() const
 {
        OrCondition *result = new OrCondition;
        clone_to(*result);
@@ -69,7 +69,7 @@ LinkedColorsCondition::LinkedColorsCondition(const Colors &c):
        colors(c)
 { }
 
-Condition *LinkedColorsCondition::clone() const
+LinkedColorsCondition *LinkedColorsCondition::clone() const
 {
        return new LinkedColorsCondition(colors);
 }
index 90c844e07c7b562d34782bede8daf871c57269e9..53f2a8a8268be8e0248f76d41a1032b8a89516b7 100644 (file)
@@ -43,7 +43,7 @@ public:
 class AndCondition: public CompoundCondition
 {
 public:
-       virtual Condition *clone() const;
+       virtual AndCondition *clone() const;
        virtual void add_lines(std::list<FilterStatement> &) const;
 };
 
@@ -51,7 +51,7 @@ public:
 class OrCondition: public CompoundCondition
 {
 public:
-       virtual Condition *clone() const;
+       virtual OrCondition *clone() const;
        virtual void add_lines(std::list<FilterStatement> &) const;
 };
 
@@ -70,7 +70,7 @@ private:
 public:
        LinkedColorsCondition(const Colors &);
 
-       virtual Condition *clone() const;
+       virtual LinkedColorsCondition *clone() const;
        virtual void add_lines(std::list<FilterStatement> &) const;
 };
 
index c107287919f2fe69140fe347ed54c659ad74bdc6..0d939948aa117554cf9155a03f836513196dc1ca 100644 (file)
@@ -19,7 +19,7 @@ public:
        RangeCondition(Type);
        RangeCondition(Type, Type);
 
-       virtual Condition *clone() const;
+       virtual RangeCondition<T> *clone() const;
        virtual void add_lines(std::list<FilterStatement> &) const;
 };
 
@@ -125,7 +125,7 @@ RangeCondition<T>::RangeCondition(Type n, Type x):
 { }
 
 template<typename T>
-Condition *RangeCondition<T>::clone() const
+RangeCondition<T> *RangeCondition<T>::clone() const
 {
        return new RangeCondition<T>(min, max);
 }