00001 // $Id: IAlgManager.h,v 1.7 2008/06/02 14:20:38 marcocle Exp $ 00002 #ifndef GAUDIKERNEL_IALGMANAGER_H 00003 #define GAUDIKERNEL_IALGMANAGER_H 00004 00005 // Include files 00006 #include "GaudiKernel/IInterface.h" 00007 #include <string> 00008 #include <list> 00009 00010 // Forward class declaration 00011 class IService; 00012 class IAlgorithm; 00013 class ISvcLocator; 00014 00015 // Declaration of the interface ID ( interface id, major version, minor version) 00016 static const InterfaceID IID_IAlgManager(14, 4 , 1); 00017 00029 class IAlgManager : virtual public IInterface { 00030 public: 00032 static const InterfaceID& interfaceID() { return IID_IAlgManager; } 00033 00035 virtual StatusCode addAlgorithm( IAlgorithm* alg // Pointer to the Algorithm 00036 ) = 0; 00038 virtual StatusCode removeAlgorithm( IAlgorithm* alg // Pointer to the Algorithm 00039 ) = 0; 00042 virtual StatusCode createAlgorithm( const std::string& algtype, // Algorithm type name 00043 const std::string& algname, // Algorithm name to be assigned 00044 IAlgorithm*& alg, // Returned algorithm 00045 bool managed = false // Flag to indicate if the algorithm is managed 00046 ) = 0; 00048 virtual StatusCode getAlgorithm( const std::string& name, // Algorithm name to be searched 00049 IAlgorithm*& alg // Returned algorithm 00050 ) const = 0; 00052 virtual bool existsAlgorithm( const std::string& name // Algorithm name to be searched 00053 ) const = 0; 00055 virtual std::list<IAlgorithm*>& getAlgorithms( ) const = 0; 00056 00058 virtual StatusCode initializeAlgorithms() = 0; 00059 00061 virtual StatusCode startAlgorithms() = 0; 00062 00064 virtual StatusCode stopAlgorithms() = 0; 00065 00067 virtual StatusCode finalizeAlgorithms() = 0; 00068 00070 virtual StatusCode reinitializeAlgorithms() = 0; 00071 00073 virtual StatusCode restartAlgorithms() = 0; 00074 00075 }; 00076 00077 00078 #endif // GAUDI_IALGMANAGER_H