00001 // $Id: IAlgTool.h,v 1.7 2008/06/02 14:20:38 marcocle Exp $ 00002 #ifndef GAUDIKERNEL_IALGTOOL_H 00003 #define GAUDIKERNEL_IALGTOOL_H 00004 00005 // Include files 00006 #include "GaudiKernel/INamedInterface.h" 00007 #include "GaudiKernel/StateMachine.h" 00008 #include <string> 00009 00010 // Forward declarations 00011 class IAlgorithm; 00012 00013 // Declaration of the interface ID ( interface id, major version, minor version) 00014 static const InterfaceID IID_IAlgTool("IAlgTool", 2 , 1); 00015 00026 class IAlgTool : virtual public INamedInterface { 00027 public: 00028 00030 static const InterfaceID& interfaceID() { return IID_IAlgTool; } 00031 00033 virtual const std::string& type() const = 0; 00034 00038 virtual const IInterface* parent() const = 0; 00039 00040 // --- Methods from IStateful --- 00043 virtual StatusCode configure() = 0; 00044 00047 virtual StatusCode initialize() = 0; 00048 00051 virtual StatusCode start() = 0; 00052 00055 virtual StatusCode stop() = 0; 00056 00059 virtual StatusCode finalize() = 0; 00060 00063 virtual StatusCode terminate() = 0; 00064 00065 00068 virtual StatusCode reinitialize() = 0; 00069 00072 virtual StatusCode restart() = 0; 00073 00076 virtual Gaudi::StateMachine::State FSMState() const = 0; 00077 00082 virtual StatusCode sysInitialize() = 0; 00083 00088 virtual StatusCode sysStart() = 0; 00089 00094 virtual StatusCode sysStop() = 0; 00095 00100 virtual StatusCode sysFinalize() = 0; 00101 00106 virtual StatusCode sysReinitialize() = 0; 00107 00112 virtual StatusCode sysRestart() = 0; 00113 00117 virtual unsigned long refCount() const = 0; 00118 }; 00119 00120 #endif // GAUDIKERNEL_IALGTOOL_H