FitAlgorithmMap.cpp

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 std::string name) const throw(Sct::InvalidArgument) {
00016   if (algMap.count(name) == 0) {
00017     std::cout << "Known names for algorithms" << endl;
00018     for (map<std::string, shared_ptr<FitAlgorithm> >::const_iterator i=algMap.begin();
00019      i!=algMap.end(); ++i){
00020       std::cout << "[" << (*i).first << "] " << endl;
00021     }
00022     Sct::InvalidArgumentError iae("No map for ConfigurationVariable: " + name, __FILE__, __LINE__ );
00023     iae.setSeverity(MRS_DIAGNOSTIC);    
00024     throw iae;  
00025   }
00026   return *(*algMap.find(name)).second;
00027 }
00028     
00029 bool FitAlgorithmMap::setAlgorithm(string variableName, auto_ptr<FitAlgorithm> alg) throw() {
00030     algMap[variableName] = shared_ptr<FitAlgorithm>(alg);
00031     return true;
00032 }
00033 
00034 std::list<std::string> FitAlgorithmMap::listAlgorithms() const{
00035    std::list<std::string> alg_list;
00036    for (map<std::string, shared_ptr<FitAlgorithm> >::const_iterator i=algMap.begin();
00037         i!=algMap.end(); ++i){
00038       alg_list.push_back((*i).first); 
00039    }
00040    return alg_list;
00041 }
00042 
00043 }

Generated on Mon Feb 6 14:01:20 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6