00001 #include "AnalysisAlgorithmMap.h" 00002 #include "AnalysisAlgorithm.h" 00003 #include "CalibrationController/IS/TestData.h" 00004 00005 namespace SctAnalysis { 00006 00007 AnalysisAlgorithmMap& AnalysisAlgorithmMap::instance() { 00008 static AnalysisAlgorithmMap* instance = new AnalysisAlgorithmMap(); 00009 return *instance; 00010 } 00011 00012 shared_ptr <AnalysisAlgorithm> AnalysisAlgorithmMap::getAlgorithm(const TestData& testData, const string& moduleName) const throw(Sct::InvalidArgument) { 00013 if (algMap.count(testData.testName) == 0) { 00014 Sct::InvalidArgumentError iae("No map for Test: " + testData.testName, __FILE__, __LINE__); 00015 iae.setSeverity(MRS_DIAGNOSTIC); 00016 throw iae; 00017 } 00018 return (*algMap.find(testData.testName)).second->clone(testData, moduleName); 00019 } 00020 00021 bool AnalysisAlgorithmMap::setAlgorithm(const string testName, auto_ptr<AnalysisAlgorithm> alg) throw() { 00022 algMap[testName] = shared_ptr<AnalysisAlgorithm>(alg); 00023 return true; 00024 } 00025 00026 00027 }