Vertex(Vertex *parent, SgAsmFunction *func, const OutputValues &outputs): parent(parent), outputs(outputs), id(0) { functions.insert(func); if (parent) { assert(parent->functions.find(func)!=parent->functions.end()); parent->children.insert(this); } }
pair<FunctionId,FunctionPtr> FunctionSet::getRandomFunction(int argumentsNumber) const { Functions argFunctions; Functions::const_iterator it = functions_.begin(); //Rewrite funciton with the same number of arguments as argumentsNumber for(auto it = functions_.begin(); it != functions_.end();) { if(it->second.first == argumentsNumber) argFunctions.insert(make_pair(it->first,it->second)); ++it; } if (argFunctions.size() < 1) { string exception = "Nie ma zadnej funkcji o takiej liczbie argumentow"; throw exception; } it = argFunctions.begin(); std::advance(it, rand() % argFunctions.size() ); return this->conversion(it); }