| The Gaudi Framework v32r1 (f65d50dc)

SmartRefBase.h
Go to the documentation of this file.
1 // ====================================================================
2 // SmartRefBase.h
3 // --------------------------------------------------------------------
4 //
5 // Package : Gaudi/Kernel
6 // Base class for SmartReference objects
7 //
8 // Author : Markus Frank
9 //
10 // ====================================================================
11 #ifndef KERNEL_SMARTREFBASE_H
12 #define KERNEL_SMARTREFBASE_H 1
13
14 // Framework include files
15 #include "GaudiKernel/StreamBuffer.h"
16
17 class ObjectContainerBase;
18 class SmartRefBase;
19 class ContainedObject;
20 class DataObject;
21
47 class GAUDI_API SmartRefBase {
48 public:
50 mutable long m_hintID;
52 mutable long m_linkID;
54 mutable const DataObject* m_data;
56 mutable const ContainedObject* m_contd;
57
58 mutable long m_type;
59
60 enum { DATAOBJECT, CONTAINEDOBJECT };
61
63 const ContainedObject* accessData( const ContainedObject* typ ) const;
65 const DataObject* accessData( const DataObject* typ ) const;
66
68 bool isEqualEx( const DataObject* pObj, const SmartRefBase& c ) const;
70 bool isEqualEx( const ContainedObject* pObj, const SmartRefBase& c ) const;
72 bool isEqual( const ContainedObject* /* pObj */, const SmartRefBase& c ) const {
73 return ( m_hintID == c.m_hintID && m_linkID == c.m_linkID && m_data == c.m_data && m_contd == c.m_contd );
74 }
76 bool isEqual( const DataObject* /* pObj */, const SmartRefBase& c ) const {
77 return m_linkID == c.m_linkID && m_data == c.m_data;
78 }
80 void writeObject( const DataObject* pObject, StreamBuffer& s ) const { s.addIdentifiedLink( pObject, m_hintID ); }
82 void writeObject( const ContainedObject* pObject, StreamBuffer& s ) const {
83 s.addContainedLink( pObject, m_hintID, m_linkID );
84 }
86 DataObject* readObject( const DataObject* /* pObject */, StreamBuffer& s ) const {
87 DataObject* pObj = 0;
88 s.getIdentifiedLink( pObj, m_hintID );
89 return pObj;
90 }
92 ContainedObject* readObject( const ContainedObject* /* pObject */, StreamBuffer& s ) const {
93 ContainedObject* pObj = 0;
94 s.getContainedLink( pObj, m_hintID, m_linkID );
95 return pObj;
96 }
97 void setObjectType( const ContainedObject* /* pobj */ ) const { m_type = CONTAINEDOBJECT; }
98 void setObjectType( const DataObject* /* pobj */ ) const { m_type = DATAOBJECT; }
99
101 const std::string& path() const;
102
103 public:
104 int objectType() const { return m_type; }
106 void set( DataObject* pObj, long hint_id, long link_id );
107 };
108 #endif // KERNEL_SMARTREFBASE_H
SmartRefBase::readObject
DataObject * readObject(const DataObject *, StreamBuffer &s) const
Input streamer for DataObject like references.
Definition: SmartRefBase.h:86
gaudirun.c
c
Definition: gaudirun.py:487
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
SmartRefBase::m_data
const DataObject * m_data
Object data: Pointer to the identifiable object the link originates.
Definition: SmartRefBase.h:54
StreamBuffer
The stream buffer is a small object collecting object data.
Definition: StreamBuffer.h:41
SmartRefBase::m_hintID
long m_hintID
Object data: ID of the link hint to the identifiable object.
Definition: SmartRefBase.h:50
SmartRefBase::readObject
ContainedObject * readObject(const ContainedObject *, StreamBuffer &s) const
Output streamer for ContainedObject like references.
Definition: SmartRefBase.h:92
SmartRefBase
User example objects: SmartRefBase.
Definition: SmartRefBase.h:47
SmartRefBase::DATAOBJECT
Definition: SmartRefBase.h:60
StreamBuffer.h
std::string
STL class.
SmartRefBase::isEqual
bool isEqual(const DataObject *, const SmartRefBase &c) const
Equality operator for DataObject like references.
Definition: SmartRefBase.h:76
SmartRefBase::m_contd
const ContainedObject * m_contd
Object data: Pointer to the Contained object (if applicable)
Definition: SmartRefBase.h:56
SmartRefBase::isEqual
bool isEqual(const ContainedObject *, const SmartRefBase &c) const
Equality operator for ContainedObject like references.
Definition: SmartRefBase.h:72
SmartRefBase::m_linkID
long m_linkID
Object data: ID of the object within the identifiable container (if any)
Definition: SmartRefBase.h:52
SmartRefBase::objectType
int objectType() const
Definition: SmartRefBase.h:104
ContainedObject
All classes that their objects may be contained in an LHCb ObjectContainer (e.g.
Definition: ContainedObject.h:31
SmartRefBase::m_type
long m_type
Definition: SmartRefBase.h:58
SmartRefBase::writeObject
void writeObject(const DataObject *pObject, StreamBuffer &s) const
Output streamer for DataObject like references.
Definition: SmartRefBase.h:80
gaudirun.s
string s
Definition: gaudirun.py:316
ObjectContainerBase
ObjectContainerBase is the base class for Gaudi container classes.
Definition: ObjectContainerBase.h:19
GAUDI_API
#define GAUDI_API
Definition: Kernel.h:71
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
SmartRefBase::setObjectType
void setObjectType(const DataObject *) const
Definition: SmartRefBase.h:98
SmartRefBase::setObjectType
void setObjectType(const ContainedObject *) const
Definition: SmartRefBase.h:97
SmartRefBase::writeObject
void writeObject(const ContainedObject *pObject, StreamBuffer &s) const
Output streamer for ContainedObject like references.
Definition: SmartRefBase.h:82