00001 // $Id: IChronoSvc.h,v 1.3 2008/05/13 12:36:54 marcocle Exp $ 00002 // ============================================================================ 00003 #ifndef GAUDIKERNEL_ICHRONOSVC_H 00004 #define GAUDIKERNEL_ICHRONOSVC_H 1 00005 // ============================================================================ 00006 // Include files 00007 // ============================================================================ 00008 // STD&STL 00009 // ============================================================================ 00010 #include <string> 00011 // ============================================================================ 00012 // GaudiKernel 00013 // ============================================================================ 00014 #include "GaudiKernel/IInterface.h" 00015 // ============================================================================ 00016 // forward declaration 00017 // ============================================================================ 00018 class ChronoEntity ; 00019 // ============================================================================ 00033 class IChronoSvc : virtual public IInterface 00034 { 00035 public: 00036 // ========================================================================== 00038 typedef std::string ChronoTag ; 00040 //typedef longlong ChronoTime ; 00041 typedef double ChronoTime ; 00042 // ========================================================================== 00043 public: 00044 // ========================================================================== 00045 // status of Chrono objects 00046 enum ChronoStatus 00047 { 00048 UNKNOWN = 0 , 00049 RUNNING , 00050 STOPPED 00051 }; 00052 // types of Chrono objects 00053 enum ChronoType 00054 { 00055 USER = 0 , 00056 KERNEL , 00057 ELAPSED 00058 } ; 00059 // ========================================================================== 00060 public: 00061 // ========================================================================== 00066 virtual ChronoEntity* chronoStart ( const ChronoTag& t ) = 0; 00067 // ========================================================================== 00072 virtual const ChronoEntity* chronoStop ( const ChronoTag& t ) = 0; 00073 // ========================================================================== 00079 virtual ChronoTime chronoDelta ( const ChronoTag& t , ChronoType f ) = 0 ; 00080 // ========================================================================== 00085 virtual void chronoPrint ( const ChronoTag& t ) = 0; 00086 // ========================================================================== 00091 virtual ChronoStatus chronoStatus ( const ChronoTag& t ) = 0; 00092 // ========================================================================== 00097 virtual const ChronoEntity* chrono ( const ChronoTag& t ) const = 0 ; 00098 // ========================================================================== 00099 public: 00100 // ========================================================================== 00102 static const InterfaceID& interfaceID() ; 00103 // ========================================================================== 00104 protected: 00105 // ========================================================================== 00106 // protected and virtual destructor 00107 virtual ~IChronoSvc(); 00108 // ========================================================================== 00109 }; 00110 // ============================================================================ 00111 // The END 00112 // ============================================================================ 00113 #endif // GAUDIKERNEL_ICHRONOSVC_H 00114 // ============================================================================