00001 #include "FitAlgorithmMap.h"
00002 #include "FitAlgorithm.h"
00003 #include "SctData/ConfigurationVariable.h"
00004
00005 #include <iostream>
00006 using namespace std;
00007
00008 namespace SctFitter {
00009
00010 FitAlgorithmMap& FitAlgorithmMap::instance() {
00011 static FitAlgorithmMap* map = new FitAlgorithmMap();
00012 return *map;
00013 }
00014
00015 const FitAlgorithm& FitAlgorithmMap::getAlgorithm(const ConfigurationVariable& variable) const throw(Sct::InvalidArgument) {
00016 if (algMap.count(variable.getVariableName()) == 0) {
00017 Sct::InvalidArgumentError iae("No map for ConfigurationVariable: " + variable.getVariableName(), __FILE__, __LINE__ );
00018 iae.setSeverity(MRS_DIAGNOSTIC);
00019 throw iae;
00020 }
00021 return *(*algMap.find(variable.getVariableName())).second;
00022 }
00023
00024 bool FitAlgorithmMap::setAlgorithm(string variableName, auto_ptr<FitAlgorithm> alg) throw() {
00025 algMap[variableName] = shared_ptr<FitAlgorithm>(alg);
00026 return true;
00027 }
00028
00029 }