Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
RootObjAddress.h
Go to the documentation of this file.
1 #ifndef ROOTHISTCNV_ROOTOBJADDRESS_H
2 #define ROOTHISTCNV_ROOTOBJADDRESS_H 1
3 
5 #include "boost/utility/string_ref.hpp"
6 
7 class TObject;
8 
9 namespace RootHistCnv {
10 
11  class RootObjAddress : public IOpaqueAddress {
12 
13  protected:
14  unsigned long m_refCount = 0;
16  long m_svcType = 0;
18  CLID m_clID = 0;
22  unsigned long m_ipar[2] = {0xFFFFFFFF, 0xFFFFFFFF};
24  IRegistry* m_pRegistry = nullptr;
26  TObject* m_tObj = nullptr;
27 
28  public:
30  RootObjAddress() = default;
31 
33  : IOpaqueAddress( copy )
34  , m_refCount( 0 )
35  , m_svcType( copy.m_svcType )
36  , m_clID( copy.m_clID )
37  , m_pRegistry( copy.m_pRegistry )
38  , m_tObj( copy.m_tObj ) {
39  m_par[0] = copy.m_par[0];
40  m_par[1] = copy.m_par[1];
41  m_ipar[0] = copy.m_ipar[0];
42  m_ipar[1] = copy.m_ipar[1];
43  }
44 
46  RootObjAddress( long svc, const CLID& clid, boost::string_ref p1 = {}, boost::string_ref p2 = {},
47  unsigned long ip1 = 0, unsigned long ip2 = 0, TObject* tObj = nullptr )
48  : m_svcType( svc ), m_clID( clid ), m_tObj( tObj ) {
49  m_par[0] = p1.to_string();
50  m_par[1] = p2.to_string();
51  m_ipar[0] = ip1;
52  m_ipar[1] = ip2;
53  }
54 
56  unsigned long addRef() override { return ++m_refCount; }
57 
58  unsigned long release() override {
59  int cnt = --m_refCount;
60  if ( 0 == cnt ) delete this;
61  return cnt;
62  }
64  IRegistry* registry() const override { return m_pRegistry; }
66  void setRegistry( IRegistry* pRegistry ) override { m_pRegistry = pRegistry; }
68  const CLID& clID() const override { return m_clID; }
70  virtual void setClID( const CLID& clid ) { m_clID = clid; }
72  long svcType() const override { return m_svcType; }
74  virtual void setSvcType( long typ ) { m_svcType = typ; }
76  const std::string* par() const override { return m_par; }
78  const unsigned long* ipar() const override { return m_ipar; }
79 
81  virtual TObject* tObj() const { return m_tObj; }
82  };
83 } // namespace RootHistCnv
84 
85 #endif
const unsigned long * ipar() const override
Retrieve integer parameters.
unsigned long release() override
release reference to object
IRegistry * m_pRegistry
Pointer to corresponding directory.
virtual void setClID(const CLID &clid)
Access : Set class ID of the link.
unsigned long m_ipar[2]
Integer parameters to be accessed.
std::string m_par[2]
String parameters to be accessed.
void setRegistry(IRegistry *pRegistry) override
Set pointer to directory.
STL class.
long svcType() const override
Access : retrieve the storage type of the class id.
const std::string * par() const override
Retrieve string parameters.
virtual void setSvcType(long typ)
Access : set the storage type of the class id.
IRegistry * registry() const override
Pointer to directory.
RootObjAddress(const RootObjAddress &copy)
RootObjAddress()=default
Dummy constructor.
virtual TObject * tObj() const
Retrieve TObject* ptr.
RootObjAddress(long svc, const CLID &clid, boost::string_ref p1={}, boost::string_ref p2={}, unsigned long ip1=0, unsigned long ip2=0, TObject *tObj=nullptr)
Standard Constructor.
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
TObject * m_tObj
Pointer to TObject.
const CLID & clID() const override
Access : Retrieve class ID of the link.
long m_svcType
Storage type.
unsigned long addRef() override
Add reference to object.
Opaque address interface definition.