ContainedObject.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_CONTAINEDOBJECT_H
2 #define GAUDIKERNEL_CONTAINEDOBJECT_H
3 
4 // Include files
5 #include "GaudiKernel/Kernel.h"
6 #include "GaudiKernel/StreamBuffer.h"
7 #include "GaudiKernel/ObjectContainerBase.h"
8 #include <iostream>
9 
10 // Forward declarations
11 template <class TYPE> class ObjectVector;
12 template <class TYPE> class ObjectList;
13 
14 // Typedefs
17 
18 // Definition of the CLID for this class
19 static const CLID CLID_ContainedObject = 190;
20 
30 
32  friend class ObjectVector<ContainedObject>;
33  friend class ObjectList<ContainedObject>;
34 
35 protected:
37  ContainedObject() = default;
41  virtual ~ContainedObject();
42 
43 public:
45  virtual const CLID& clID() const { return classID(); }
46  static const CLID& classID() { return CLID_ContainedObject; }
47 
49  const ObjectContainerBase* parent () const { return m_parent; }
51  void setParent (ObjectContainerBase* value) { m_parent = value; }
52 
54  virtual long index() const
55  {
56  return m_parent ? m_parent->index(this) : -1;
57  }
59  virtual StreamBuffer& serialize( StreamBuffer& s ) const { return s; }
61  virtual StreamBuffer& serialize( StreamBuffer& s ) { return s; }
63  virtual std::ostream& fillStream( std::ostream& s ) const { return s; }
65  friend std::ostream& operator<< ( std::ostream& s, const ContainedObject& obj ) {
66  return obj.fillStream(s);
67  }
68 
69 private:
71  ObjectContainerBase* m_parent = nullptr;
72 };
73 
74 #endif // GAUDIKERNEL_CONTAINEDOBJECT_H
ObjectVector< ContainedObject > ContainedObjectVector
std::ostream & operator<<(std::ostream &str, const GaudiAlg::ID &id)
Operator overloading for ostream.
Definition: GaudiHistoID.h:134
virtual std::ostream & fillStream(std::ostream &s) const
Fill the output stream (ASCII)
Definition: ObjectList.h:290
#define GAUDI_API
Definition: Kernel.h:107
The stream buffer is a small object collecting object data.
Definition: StreamBuffer.h:40
ObjectVector is one of the basic Gaudi container classes capable of being registered in Data Stores...
ObjectList is one of the basic Gaudi container classes capable of being registered in Data Stores...
virtual long index(const ContainedObject *obj) const
Return distance of a given object from the beginning of its container It corresponds to the "index" (...
Definition: ObjectList.h:264
virtual const CLID & clID() const
Retrieve pointer to class definition structure.
Definition: ObjectList.h:74
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
static const CLID & classID()
Definition: ObjectList.h:77
All classes that their objects may be contained in an LHCb ObjectContainer (e.g.
string s
Definition: gaudirun.py:246
ObjectList< ContainedObject > ContainedObjectList
ObjectContainerBase is the base class for Gaudi container classes.
virtual std::ostream & fillStream(std::ostream &s) const
Fill the output stream (ASCII)