00001 #ifndef ROOTHISTCNV_ROOTOBJADDRESS_H
00002 #define ROOTHISTCNV_ROOTOBJADDRESS_H 1
00003
00004 #include "GaudiKernel/IOpaqueAddress.h"
00005
00006 class TObject;
00007
00008 namespace RootHistCnv {
00009
00010 class RootObjAddress: public IOpaqueAddress {
00011
00012
00013 protected:
00014
00015 unsigned long m_refCount;
00017 long m_svcType;
00019 CLID m_clID;
00021 std::string m_par[2];
00023 unsigned long m_ipar[2];
00025 IRegistry* m_pRegistry;
00027 TObject* m_tObj;
00028
00029 public:
00030
00032 RootObjAddress()
00033 : m_refCount(0),
00034 m_svcType(0),
00035 m_clID(0),
00036 m_pRegistry(0),
00037 m_tObj(0)
00038 {
00039 m_ipar[0]=m_ipar[1]=0xFFFFFFFF;
00040 }
00041
00042 RootObjAddress(const RootObjAddress& copy)
00043 : IOpaqueAddress(copy),
00044 m_refCount(0),
00045 m_svcType(copy.m_svcType),
00046 m_clID(copy.m_clID),
00047 m_pRegistry(copy.m_pRegistry),
00048 m_tObj(copy.m_tObj)
00049 {
00050 m_par[0] = copy.m_par[0];
00051 m_par[1] = copy.m_par[1];
00052 m_ipar[0] = copy.m_ipar[0];
00053 m_ipar[1] = copy.m_ipar[1];
00054 }
00055
00057 RootObjAddress( long svc,
00058 const CLID& clid,
00059 const std::string& p1="",
00060 const std::string& p2="",
00061 unsigned long ip1=0,
00062 unsigned long ip2=0,
00063 TObject* tObj=0 )
00064 : m_refCount(0),
00065 m_svcType(svc),
00066 m_clID(clid),
00067 m_pRegistry(0),
00068 m_tObj(tObj)
00069 {
00070 m_par[0] = p1;
00071 m_par[1] = p2;
00072 m_ipar[0] = ip1;
00073 m_ipar[1] = ip2;
00074 }
00075
00077 virtual ~RootObjAddress() {
00078 }
00079
00081 virtual unsigned long addRef () {
00082 return ++m_refCount;
00083 }
00084
00085 virtual unsigned long release () {
00086 int cnt = --m_refCount;
00087 if ( 0 == cnt ) {
00088 delete this;
00089 }
00090 return cnt;
00091 }
00093 virtual IRegistry* registry() const {
00094 return m_pRegistry;
00095 }
00097 virtual void setRegistry(IRegistry* pRegistry) {
00098 m_pRegistry = pRegistry;
00099 }
00101 virtual const CLID& clID() const {
00102 return m_clID;
00103 }
00105 virtual void setClID(const CLID& clid) {
00106 m_clID = clid;
00107 }
00109 virtual long svcType() const {
00110 return m_svcType;
00111 }
00113 virtual void setSvcType(long typ) {
00114 m_svcType = typ;
00115 }
00117 virtual const std::string* par() const {
00118 return m_par;
00119 }
00121 virtual const unsigned long* ipar() const {
00122 return m_ipar;
00123 }
00124
00126 virtual TObject* tObj() const {
00127 return m_tObj;
00128 }
00129
00130 };
00131 };
00132
00133 #endif