Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

SmartRefBase.h

Go to the documentation of this file.
00001 //      ====================================================================
00002 //      SmartRefBase.h
00003 //      --------------------------------------------------------------------
00004 //
00005 //      Package   : Gaudi/Kernel
00006 //              Base class for SmartReference objects
00007 //
00008 //      Author    : Markus Frank
00009 //
00010 //      ====================================================================
00011 #ifndef KERNEL_SMARTREFBASE_H
00012 #define KERNEL_SMARTREFBASE_H 1
00013 
00014 // Framework include files
00015 #include "GaudiKernel/StreamBuffer.h"
00016 
00017 class ObjectContainerBase;
00018 class SmartRefBase;
00019 class ContainedObject;
00020 class DataObject;
00021 
00047 class SmartRefBase    {
00048 protected:
00050   mutable long                    m_hintID;
00052   mutable long                    m_linkID;
00054   mutable const DataObject*       m_data;
00056   mutable const ContainedObject*  m_contd;
00057 
00059   const ContainedObject* accessData ( const ContainedObject* typ )   const;
00061   const DataObject* accessData ( const DataObject* typ )   const;
00063   bool isEqual          (const ContainedObject* /* pObj */, const SmartRefBase& c)  const  {
00064     return (m_hintID == c.m_hintID && m_linkID == c.m_linkID && 
00065             m_data   == c.m_data   && m_contd  == c.m_contd);
00066   }
00068   bool isEqual          (const DataObject* /* pObj */, const SmartRefBase& c)  const    {
00069     return m_linkID == c.m_linkID;
00070   }
00072   void writeObject  (const DataObject* pObject, StreamBuffer& s)  const   {
00073     s.addIdentifiedLink(pObject, m_hintID);
00074   }
00076   void writeObject  (const ContainedObject* pObject, StreamBuffer& s)  const    {
00077     s.addContainedLink(pObject, m_hintID, m_linkID);
00078   }
00080   DataObject* readObject   (const DataObject* /* pObject */, StreamBuffer& s)  const   {
00081     DataObject* pObj = 0;
00082     s.getIdentifiedLink(pObj, m_hintID);
00083     return pObj;
00084   }
00086   ContainedObject* readObject(const ContainedObject* /* pObject */, StreamBuffer& s)  const    {
00087     ContainedObject* pObj = 0;
00088     s.getContainedLink(pObj, m_hintID, m_linkID);
00089     return pObj;
00090   }
00091 };
00092 #endif // KERNEL_SMARTREFBASE_H

Generated at Wed Nov 21 12:22:05 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000