22 #include "TInterpreter.h"
23 #include "TClassStreamer.h"
54 template <
class T>
class IOHandler :
public TClassStreamer {
72 string err =
"Class:" +
string(m_root->GetName()) +
"> Exception in object I/O";
77 string err =
"Class:" +
string(m_root->GetName()) +
"> Exception in object I/O";
82 virtual void get(TBuffer &b,
void* obj);
84 virtual void put(TBuffer &b,
void* obj);
90 Version_t version = b.ReadVersion(&start, &count, m_root);
91 m_root->ReadBuffer(b, obj, version, start, count);
100 cout <<
"Hit uninitialized smartRef!!!!" <<
endl;
128 cout <<
"IOHandler<SmartRefBase>::onWrite> "
129 <<
"Found invalid smart reference with object "
130 <<
"having no parent."
133 "Found invalid smart reference with object "
134 "having no parent.");
144 m_root->WriteBuffer(b, obj);
161 m_root->WriteBuffer(b, obj);
166 Version_t version = b.ReadVersion(&start, &count, m_root);
167 m_root->ReadBuffer(b, obj, version, start, count);
173 m_root->WriteBuffer(b, obj);
179 b.ReadVersion(&start, &count, m_root);
181 b.CheckByteCount(start, count, m_root);
185 throw runtime_error(
"Writing POOL files is not implemented!");
190 TClass*
c = gROOT->GetClass(cl_name.c_str());
197 log <<
MSG::ERROR <<
"[No ROOT TClass] Failed to install IOHandler for class " << cl_name <<
endmsg;
202 static bool first =
true;
205 gSystem->Load(
"libCintex");
206 gROOT->ProcessLine(
"Cintex::Cintex::Enable()");
207 gROOT->ProcessLine(
"#include <vector>");
208 gInterpreter->EnableAutoLoading();
209 gInterpreter->AutoLoad(
"DataObject");
210 gInterpreter->AutoLoad(
"PoolDbLinkManager");
211 gSystem->Load(
"libGaudiKernelDict");
212 gSystem->Load(
"libGaudiExamplesDict");
215 bool b1 = makeStreamer<SmartRefBase>(
s);
216 bool b2 = makeStreamer<ContainedObject>(
s);
217 bool b3 = makeStreamer<pool::Token>(
s);
218 return b1 && b2 && b3;