]> git.tdb.fi Git - poefilter.git/blobdiff - source/rangecondition.h
Use covariant return type for Condition::clone
[poefilter.git] / source / rangecondition.h
index d4cc19a7889e460351506628d37c0b89bfdd8a4f..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;
 };
 
@@ -112,26 +112,26 @@ struct LinkedSocketsTraits
 typedef RangeCondition<LinkedSocketsTraits> LinkedSocketsCondition;
 
 
-template<typename Traits>
-RangeCondition<Traits>::RangeCondition(Type v):
+template<typename T>
+RangeCondition<T>::RangeCondition(Type v):
        min(v),
        max(v)
 { }
 
-template<typename Traits>
-RangeCondition<Traits>::RangeCondition(Type n, Type x):
+template<typename T>
+RangeCondition<T>::RangeCondition(Type n, Type x):
        min(n),
        max(x)
 { }
 
-template<typename Traits>
-Condition *RangeCondition<Traits>::clone() const
+template<typename T>
+RangeCondition<T> *RangeCondition<T>::clone() const
 {
-       return new RangeCondition<Traits>(min, max);
+       return new RangeCondition<T>(min, max);
 }
 
-template<typename Traits>
-void RangeCondition<Traits>::add_lines(std::list<FilterStatement> &st) const
+template<typename T>
+void RangeCondition<T>::add_lines(std::list<FilterStatement> &st) const
 {
        const char *keyword = Traits::get_keyword();
        if(min==max)