virtual RangeCondition<T> *clone() const;
virtual bool can_merge(const Condition &, const CompoundCondition &) const;
- virtual RangeCondition<T> *merge(const std::vector<Condition *> &, const CompoundCondition &) const;
+ virtual RangeCondition<T> *merge(const std::vector<const Condition *> &, const CompoundCondition &) const;
virtual bool is_viable() const { return min<=max; }
virtual void add_lines(std::list<FilterStatement> &) const;
};
}
template<typename T>
-RangeCondition<T> *RangeCondition<T>::merge(const std::vector<Condition *> &conditions, const CompoundCondition &parent) const
+RangeCondition<T> *RangeCondition<T>::merge(const std::vector<const Condition *> &conditions, const CompoundCondition &parent) const
{
if(conditions.empty())
return 0;
result = new RangeCondition<T>(Traits::get_min(), Traits::get_max());
else
result = new RangeCondition<T>(Traits::get_max(), Traits::get_min());
- for(std::vector<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
+ for(std::vector<const Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
{
- const RangeCondition<T> *c = static_cast<RangeCondition<T> *>(*i);
+ const RangeCondition<T> *c = static_cast<const RangeCondition<T> *>(*i);
if(intersect)
{
result->min = std::max(result->min, c->min);