00001 #ifndef __GAUDI_INTERFACES_ITIME_H__
00002 #define __GAUDI_INTERFACES_ITIME_H__
00003
00004 #include <iostream>
00005 #include "GaudiKernel/Kernel.h"
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 class ITime
00027 {
00028 public:
00029
00030
00031
00032
00033
00034
00035 typedef longlong AbsoluteTime;
00036 typedef double DimensionedTime;
00037
00038
00039
00040 public:
00041
00042
00043
00044 virtual AbsoluteTime absoluteTime () const = 0;
00045
00046
00047 virtual DimensionedTime seconds () const = 0;
00048
00049
00050 virtual DimensionedTime minutes () const = 0;
00051
00052
00053 virtual DimensionedTime hours () const = 0;
00054
00055
00056 virtual DimensionedTime days () const = 0;
00057
00058
00059
00060 virtual bool operator==( const ITime& ) const = 0;
00061 virtual bool operator!=( const ITime& ) const = 0;
00062 virtual bool operator<=( const ITime& ) const = 0;
00063 virtual bool operator>=( const ITime& ) const = 0;
00064 virtual bool operator< ( const ITime& ) const = 0;
00065 virtual bool operator> ( const ITime& ) const = 0;
00066
00067
00068 virtual ITime& operator+=( const ITime& ) = 0 ;
00069
00070
00071 virtual ITime& operator-=( const ITime& ) = 0 ;
00072
00073 virtual std::ostream& printOut( std::ostream& ) const = 0;
00074
00075
00076 virtual ~ITime(){};
00077
00078 };
00079
00080
00081
00082
00083
00084 inline std::ostream& operator<<(std::ostream& os , const ITime& time )
00085 { return time.printOut(os); }
00086
00087
00088
00089
00090
00091 #endif // __GAUDI_INTERFACES_ITIME_H__