00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef BaseEvent_RegistrationSequence_H
00016 #define BaseEvent_RegistrationSequence_H 1
00017
00018
00019 #include "Event/TemporalDataObject.h"
00020 #include "DybKernel/IRegistrationSequence.h"
00021 #include "GaudiKernel/boost_allocator.h"
00022 #include <vector>
00023 #include <ostream>
00024
00025
00026
00027 namespace DayaBay
00028 {
00029
00030
00031
00032
00033 static const CLID CLID_RegistrationSequence = 51103;
00034
00035
00036 namespace RegistrationSequenceLocation {
00037 static const std::string& Default = "/Event/RegistrationSequence";
00038 }
00039
00040
00050 class RegistrationSequence: public TemporalDataObject, virtual public IRegistrationSequence
00051 {
00052 public:
00053
00055 static const std::string& defaultLocation() { return RegistrationSequenceLocation::Default; }
00056 virtual const std::string& defLoc() const { return RegistrationSequenceLocation::Default; }
00057
00059 typedef IRegistrationSequence::Registration Registration;
00061 typedef IRegistrationSequence::Registrations Registrations;
00063 typedef IRegistrationSequence::size_type size_type;
00064
00066 RegistrationSequence();
00067
00069 virtual ~RegistrationSequence();
00070
00071
00072 virtual const CLID& clID() const;
00073 static const CLID& classID();
00074
00076 virtual bool empty() const;
00077
00079 virtual size_type size() const;
00080
00082 virtual const Registrations& registrations() const;
00083
00085 virtual Registrations registration(const std::string& path) const;
00086
00088 virtual Registration* registration(const DataObject* dobj) const;
00089
00091 void insert(IRegistry* registry,
00092 DataObject* object,
00093 bool marked);
00094
00096 void setRegistrations(Registrations* value);
00097
00099 std::ostream& fillStream(std::ostream& s) const;
00100
00101
00102 #ifndef GOD_NOALLOC
00104 static void* operator new ( size_t size )
00105 {
00106 return ( sizeof(RegistrationSequence) == size ?
00107 boost::singleton_pool<RegistrationSequence, sizeof(RegistrationSequence)>::malloc() :
00108 ::operator new(size) );
00109 }
00110
00114 static void* operator new ( size_t size, void* pObj )
00115 {
00116 return ::operator new (size,pObj);
00117 }
00118
00120 static void operator delete ( void* p )
00121 {
00122 boost::singleton_pool<RegistrationSequence, sizeof(RegistrationSequence)>::is_from(p) ?
00123 boost::singleton_pool<RegistrationSequence, sizeof(RegistrationSequence)>::free(p) :
00124 ::operator delete(p);
00125 }
00126
00129 static void operator delete ( void* p, void* pObj )
00130 {
00131 ::operator delete (p, pObj);
00132 }
00133 #endif
00134 protected:
00135
00136 private:
00137
00138 Registrations* m_registrations;
00139
00140 };
00141
00142 inline std::ostream& operator<< (std::ostream& str, const RegistrationSequence& obj)
00143 {
00144 return obj.fillStream(str);
00145 }
00146
00147 }
00148
00149
00150
00151
00152
00153
00154
00155 inline const CLID& DayaBay::RegistrationSequence::clID() const
00156 {
00157 return DayaBay::RegistrationSequence::classID();
00158 }
00159
00160 inline const CLID& DayaBay::RegistrationSequence::classID()
00161 {
00162 return CLID_RegistrationSequence;
00163 }
00164
00165
00166 #endif