- std::string line = Traits::get_keyword();
- for(std::vector<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
- line += Msp::format(" \"%s\"", static_cast<const ChoiceCondition<Traits> *>(*i)->value);
- FilterStatement::add_line(st, line);
+ ChoiceCondition<T> *result = new ChoiceCondition<T>(std::vector<Type>());
+ for(std::vector<const Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
+ {
+ const std::vector<Type> &v = static_cast<const ChoiceCondition<T> *>(*i)->values;
+ for(typename std::vector<Type>::const_iterator j=v.begin(); j!=v.end(); ++j)
+ if(Msp::find(result->values, *j)==result->values.end())
+ result->values.push_back(*j);
+ }
+ return result;