The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
GaudiRoot::IOHandler< T > Class Template Reference
Inheritance diagram for GaudiRoot::IOHandler< T >:
Collaboration diagram for GaudiRoot::IOHandler< T >:

Public Member Functions

 IOHandler (TClass *c)
 Initializing constructor.
 
void operator() (TBuffer &b, void *obj) override
 ROOT I/O callback.
 
virtual void get (TBuffer &b, void *obj)
 Callback for reading the object.
 
virtual void put (TBuffer &b, void *obj)
 Callback for writing the object.
 
void get (TBuffer &b, void *obj)
 
void put (TBuffer &b, void *obj)
 
void get (TBuffer &b, void *obj)
 
void put (TBuffer &b, void *obj)
 
void get (TBuffer &b, void *obj)
 
void put (TBuffer &, void *)
 

Protected Attributes

TClass * m_root
 ROOT persistent class description.
 

Detailed Description

template<class T>
class GaudiRoot::IOHandler< T >

Definition at line 64 of file RootIOHandler.cpp.

Constructor & Destructor Documentation

◆ IOHandler()

template<class T>
GaudiRoot::IOHandler< T >::IOHandler ( TClass * c)
inline

Initializing constructor.

Definition at line 71 of file RootIOHandler.cpp.

71: m_root( c ) {}
TClass * m_root
ROOT persistent class description.

Member Function Documentation

◆ get() [1/4]

template<class T>
virtual void GaudiRoot::IOHandler< T >::get ( TBuffer & b,
void * obj )
virtual

Callback for reading the object.

◆ get() [2/4]

void GaudiRoot::IOHandler< SmartRefBase >::get ( TBuffer & b,
void * obj )

Definition at line 95 of file RootIOHandler.cpp.

95 {
96 RefAccessor r( obj );
98 Version_t version = b.ReadVersion( &start, &count, m_root );
99 m_root->ReadBuffer( b, obj, version, start, count );
100 switch ( r.Base->objectType() ) {
102 ( *r.ObjectRef )( Gaudi::getCurrentDataObject() );
103 break;
105 ( *r.ContainedRef )( Gaudi::getCurrentDataObject() );
106 break;
107 default:
108 cout << "Hit uninitialized smartRef!!!!" << endl;
109 break;
110 }
111 }

◆ get() [3/4]

void GaudiRoot::IOHandler< ContainedObject >::get ( TBuffer & b,
void * obj )

Definition at line 171 of file RootIOHandler.cpp.

171 {
173 Version_t version = b.ReadVersion( &start, &count, m_root );
174 m_root->ReadBuffer( b, obj, version, start, count );
177 }

◆ get() [4/4]

void GaudiRoot::IOHandler< pool::Token >::get ( TBuffer & b,
void * obj )

Definition at line 185 of file RootIOHandler.cpp.

185 {
188 b.ReadVersion( &start, &count, m_root );
189 b.ReadFastArray( &t->m_oid.first, 2 );
190 b.CheckByteCount( start, count, m_root );
191 }

◆ operator()()

template<class T>
void GaudiRoot::IOHandler< T >::operator() ( TBuffer & b,
void * obj )
inlineoverride

ROOT I/O callback.

Definition at line 73 of file RootIOHandler.cpp.

73 {
74 try {
75 if ( b.IsReading() )
76 get( b, obj );
77 else
78 put( b, obj );
79 } catch ( const exception& e ) {
80 string err = "Class:" + string( m_root->GetName() ) + "> Exception in object I/O";
81 err += e.what();
82 throw runtime_error( err );
83 } catch ( ... ) {
84 string err = "Class:" + string( m_root->GetName() ) + "> Exception in object I/O";
85 throw runtime_error( err );
86 }
87 }
virtual void get(TBuffer &b, void *obj)
Callback for reading the object.
virtual void put(TBuffer &b, void *obj)
Callback for writing the object.

◆ put() [1/4]

void GaudiRoot::IOHandler< pool::Token >::put ( TBuffer & ,
void *  )

Definition at line 194 of file RootIOHandler.cpp.

194 {
195 throw runtime_error( "Writing POOL files is not implemented!" );
196 }

◆ put() [2/4]

template<class T>
virtual void GaudiRoot::IOHandler< T >::put ( TBuffer & b,
void * obj )
virtual

Callback for writing the object.

◆ put() [3/4]

void GaudiRoot::IOHandler< SmartRefBase >::put ( TBuffer & b,
void * obj )

Definition at line 114 of file RootIOHandler.cpp.

114 {
115 RefAccessor r( obj );
117 DataObject * curr, *pDO;
118 int hint, link;
119
121 pDO = r.ObjectRef->data();
122 hint = r.ObjectRef->hintID();
123 link = r.ObjectRef->linkID();
124 if ( pDO ) {
125 switch ( r.Base->objectType() ) {
127 p = r.ContainedRef->data();
128 if ( p ) {
129 const ObjectContainerBase* parent = p->parent();
130 if ( parent ) {
131 link = p->index();
132 pDO = const_cast<ObjectContainerBase*>( parent );
133 break;
134 }
135 }
136 pDO = nullptr;
137 cout << "IOHandler<SmartRefBase>::onWrite> "
138 << "Found invalid smart reference with object "
139 << "having no parent." << endl;
140 throw runtime_error( "IOHandler<SmartRefBase>::onWrite> "
141 "Found invalid smart reference with object "
142 "having no parent." );
143 break;
146 break;
147 default:
148 break;
149 }
150 if ( pDO == last_link_object ) {
151 r.Base->set( curr, last_link_hint, link );
152 m_root->WriteBuffer( b, obj );
153 return;
154 } else if ( pDO ) {
155 LinkManager* mgr = curr->linkMgr();
156 IRegistry* reg = pDO->registry();
157 if ( reg && mgr ) {
158 hint = mgr->addLink( reg->identifier(), pDO );
161 }
162 } else {
164 }
165 }
166 r.Base->set( curr, hint, link );
167 m_root->WriteBuffer( b, obj );
168 }
GAUDI_API DataObject * getCurrentDataObject()

◆ put() [4/4]

void GaudiRoot::IOHandler< ContainedObject >::put ( TBuffer & b,
void * obj )

Definition at line 180 of file RootIOHandler.cpp.

180 {
181 m_root->WriteBuffer( b, obj );
182 }

Member Data Documentation

◆ m_root

template<class T>
TClass* GaudiRoot::IOHandler< T >::m_root
protected

ROOT persistent class description.

Definition at line 67 of file RootIOHandler.cpp.


The documentation for this class was generated from the following file: