00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef BaseEvent_ITemporal_H
00016 #define BaseEvent_ITemporal_H 1
00017
00018
00019 #include "Context/TimeStamp.h"
00020 #include "GaudiKernel/boost_allocator.h"
00021 #include <ostream>
00022
00023
00024
00025 namespace DayaBay
00026 {
00027
00028
00029
00039 class ITemporal
00040 {
00041 public:
00042
00044 ITemporal() {}
00045
00047 virtual ~ITemporal() {}
00048
00050 virtual std::ostream& fillStream(std::ostream& s) const;
00051
00053 virtual const TimeStamp& earliest() const = 0;
00054
00056 virtual const TimeStamp& latest() const = 0;
00057
00059 virtual void setEarliest(const TimeStamp& ts) = 0;
00060
00062 virtual void setLatest(const TimeStamp& ts) = 0;
00063
00064
00065 #ifndef GOD_NOALLOC
00067 static void* operator new ( size_t size )
00068 {
00069 return ( sizeof(ITemporal) == size ?
00070 boost::singleton_pool<ITemporal, sizeof(ITemporal)>::malloc() :
00071 ::operator new(size) );
00072 }
00073
00077 static void* operator new ( size_t size, void* pObj )
00078 {
00079 return ::operator new (size,pObj);
00080 }
00081
00083 static void operator delete ( void* p )
00084 {
00085 boost::singleton_pool<ITemporal, sizeof(ITemporal)>::is_from(p) ?
00086 boost::singleton_pool<ITemporal, sizeof(ITemporal)>::free(p) :
00087 ::operator delete(p);
00088 }
00089
00092 static void operator delete ( void* p, void* pObj )
00093 {
00094 ::operator delete (p, pObj);
00095 }
00096 #endif
00097 protected:
00098
00099 private:
00100
00101 };
00102
00103 inline std::ostream& operator<< (std::ostream& str, const ITemporal& obj)
00104 {
00105 return obj.fillStream(str);
00106 }
00107
00108 }
00109
00110
00111
00112
00113
00114
00115
00116 inline std::ostream& DayaBay::ITemporal::fillStream(std::ostream& s) const
00117 {
00118 return s;
00119 }
00120
00121
00122
00123 #endif