void OptimizationAlgorithmFactory::unregisterSolver(AbstractOptimizationAlgorithmCreator* c) { const string& name = c->property().name; CreatorList::iterator foundIt = findSolver(name); if (foundIt != _creator.end()) { delete *foundIt; _creator.erase(foundIt); } }
OptimizationAlgorithm* OptimizationAlgorithmFactory::construct(const std::string& name, OptimizationAlgorithmProperty& solverProperty) const { CreatorList::const_iterator foundIt = findSolver(name); if (foundIt != _creator.end()) { solverProperty = (*foundIt)->property(); return (*foundIt)->construct(); } cerr << "SOLVER FACTORY WARNING: Unable to create solver " << name << endl; return 0; }
void OptimizationAlgorithmFactory::registerSolver(AbstractOptimizationAlgorithmCreator* c) { const string& name = c->property().name; CreatorList::iterator foundIt = findSolver(name); if (foundIt != _creator.end()) { _creator.erase(foundIt); cerr << "SOLVER FACTORY WARNING: Overwriting Solver creator " << name << endl; assert(0); } _creator.push_back(c); }