#include "create_combinations.h" #include #include #include #include #include #include #include #include #include #include QString to_q_str(const string &s) { return s.c_str(); } void add_deactivation(QString &s){ s+=deactivate.c_str(); } void add_remaining_combis(const vector &c, const arglist &part1, std::vector &l){ const int C=(int)c.size(); for(int i=0;i activation(i); l.push_back(part1); for(int p=0;p create_combinations( ){ DEFINE_COMPLEX; (void)C; vector c=complex; create_args(&c[0],&c[0]+c.size()); vector s(simple,simple+S); create_args(&s[0],&s[0]+s.size()); // cout << "-- complex: --" << endl; //copy(c.begin(),c.end(),ostream_iterator(cout,"\n")); //cout << "-- simple: --" << endl; //copy(s.begin(),s.end(),ostream_iterator(cout,"\n")); std::vector l; // create full compilation l.push_back(arglist()); std::transform(s.begin(),s.end(),back_inserter(l.back()),to_q_str); std::transform(c.begin(),c.end(),back_inserter(l.back()),to_q_str); // create empty compilation l.push_back(arglist()); std::transform(s.begin(),s.end(),back_inserter(l.back()),to_q_str); std::transform(c.begin(),c.end(),back_inserter(l.back()),to_q_str); for(arglist::iterator it=l.back().begin();it != l.back().end(); ++it){ (*it)+=deactivate.c_str(); } // create complex combinations with all simples arglist part1; std::transform(s.begin(),s.end(),back_inserter(part1),to_q_str); add_remaining_combis(c,part1,l); // create complex combinations with none of the simples for_each(part1.begin(),part1.end(),add_deactivation); add_remaining_combis(c,part1,l); // create each simple one on alone for(int i=0;i