|
inlib
1.2.0
|


Public Member Functions | |
| virtual void * | cast (const std::string &a_class) const |
| virtual bool | stream (buffer &a_buffer) |
| virtual bool | read_leaves (buffer &a_buffer) |
| virtual bool | find_entry (uint32 a_entry, uint32 &a_nbytes) |
| branch_element (ifile &a_file, ifac &a_fac) | |
| virtual | ~branch_element () |
| const std::string & | class_name () const |
| int | type () const |
| int | streamer_type () const |
| int | id () const |
| iro * | object () |
Static Public Member Functions | |
| static const std::string & | s_class () |
Protected Member Functions | |
| branch_element (const branch_element &a_from) | |
| branch_element & | operator= (const branch_element &) |
Protected Attributes | |
| iro * | m_obj |
| std::string | fClassName |
| int | fClassVersion |
| int | fID |
| int | fType |
| int | fStreamerType |
Definition at line 12 of file branch_element.
Definition at line 267 of file branch_element.
: branch(a_file,a_fac) ,m_obj(0) ,fClassVersion(0) ,fID(0) ,fType(0) ,fStreamerType(-1) {}
| virtual inlib::rroot::branch_element::~branch_element | ( | ) | [inline, virtual] |
Definition at line 276 of file branch_element.
{delete m_obj;}
| inlib::rroot::branch_element::branch_element | ( | const branch_element & | a_from | ) | [inline, protected] |
Definition at line 278 of file branch_element.
:iro(a_from),branch(a_from){}
| virtual void* inlib::rroot::branch_element::cast | ( | const std::string & | a_class | ) | const [inline, virtual] |
Reimplemented from inlib::rroot::branch.
Definition at line 19 of file branch_element.
{
if(void* p = inlib::cmp_cast<branch_element>(this,a_class)) {return p;}
else return branch::cast(a_class);
}
| const std::string& inlib::rroot::branch_element::class_name | ( | ) | const [inline] |
Definition at line 282 of file branch_element.
{return fClassName;}
| virtual bool inlib::rroot::branch_element::find_entry | ( | uint32 | a_entry, |
| uint32 & | a_nbytes | ||
| ) | [inline, virtual] |
Reimplemented from inlib::rroot::branch.
Definition at line 246 of file branch_element.
{
//The below line will call the upper read_leaves.
if(!branch::find_entry(a_entry,a_nbytes)) return false;
if(m_branches.size()) {
//if(!m_obj) {
// m_obj = m_fac.create(fClassName);
// if(!m_obj) return false;
//}
std::vector<branch*>::iterator it;
for(it=m_branches.begin();it!=m_branches.end();++it) {
uint32 n;
if(!(*it)->find_entry(a_entry,n)) return false;
a_nbytes += n;
}
}
return true;
}
| int inlib::rroot::branch_element::id | ( | ) | const [inline] |
Definition at line 285 of file branch_element.
{return fID;}
| iro* inlib::rroot::branch_element::object | ( | ) | [inline] |
Definition at line 286 of file branch_element.
{return m_obj;}
| branch_element& inlib::rroot::branch_element::operator= | ( | const branch_element & | ) | [inline, protected] |
Definition at line 280 of file branch_element.
{return *this;}
| virtual bool inlib::rroot::branch_element::read_leaves | ( | buffer & | a_buffer | ) | [inline, virtual] |
STL container /////////////////////////////////////
TClonesArray container ////////////////////////////
Reimplemented from inlib::rroot::branch.
Definition at line 80 of file branch_element.
{
if(fType==4) {
// STL container master branch (has only the number of elements).
//from v4-00-01
int n;
if(!a_buffer.read(n)) return false;
//fNdata = n;
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName
<< " : type " << fType << " not treated."
<< std::endl;
return false;
} else if(fType==41) {
// STL container sub-branch (contains the elements).
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName
<< " : type " << fType << " not treated."
<< std::endl;
return false;
} else if(fType==3) {
// TClonesArray master branch (has only the number of elements).
//from v4-00-01
int n;
if(!a_buffer.read(n)) return false;
//fNdata = n;
//TClonesArray *clones = (TClonesArray*)fObject;
//if (!clones) return;
//if (clones->IsZombie()) return;
//clones->Clear();
//clones->ExpandCreateFast(fNdata);
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName
<< " : type " << fType << " not treated."
<< std::endl;
return false;
} else if(fType==31) {
// TClonesArray sub-branch (contains the elements).
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName
<< " : type " << fType << " not treated."
<< std::endl;
return false;
} else if(fType<=2) {
// branch in split mode
//from v4-00-01
//if (fBranchCount) fNdata = (Int_t)fBranchCount->GetValue(0,0);
//else fNdata = 1;
//if (!fInfo) return;
//fInfo->ReadBuffer(b,fObject,fID);
//if (fStreamerType == 6) fNdata = (Int_t)GetValue(0,0);
//from 3.0.06
//if (fID >= 0) {
// fInfo->ReadBuffer(b,fAddress,fID);
//} else if (fID == -1) { // top level branch in non split mode
// char **ppointer = (char**)fAddress;
// fInfo->ReadBuffer(b,*ppointer,fID);
//}
//m_out << "inlib::rroot::branch_element::read_leaves :"
// << " name " << m_name << " ref_cls " << fClassName << " :"
// << " type " << fType << " with ID " << fID << "."
// << " and then ?"
// << std::endl;
// read object ?
if(!m_obj) {
ifac::args args;
m_obj = m_fac.create(fClassName,args);
if(!m_obj) return false;
}
if(!m_obj->stream(a_buffer)){
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName << " :"
<< " obj stream failed."
<< std::endl;
return false;
}
//m_out << "inlib::rroot::branch_element::read_leaves :"
// << " name " << m_name << " ref_cls " << fClassName << " :"
// << " obj streamed."
// << std::endl;
return true;
/*
} else if(fType==0) {
if(fID>=0) {
// branch in split mode
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName << " :"
<< " type 0 with ID " << fID << "."
<< std::endl;
return true;
} else if(fID==-1) {
// top level branch in non split mode
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName << " :"
<< " type 0 with ID " << fID
<< " : fill object."
<< std::endl;
if(!m_obj) {
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName << " :"
<< " m_obj is null."
<< std::endl;
return false;
}
if(!m_obj->stream(a_buffer)){
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName << " :"
<< " obj stream failed."
<< std::endl;
return false;
}
return true;
} else {
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName << " :"
<< " type 0 with ID " << fID << " not treated."
<< std::endl;
return false;
}
//LHCb files :
} else if(fType==1) {
// parent branch is a base class branch.
// Ok, and then ?
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName << " :"
<< " type " << fType << " with ID " << fID << "."
<< std::endl;
return true;
*/
} else {
m_out << "inlib::rroot::branch_element::read_leaves :"
<< " name " << m_name << " ref_cls " << fClassName << " :"
<< " type " << fType << " with ID " << fID << "."
<< " unknown case."
<< std::endl;
return false;
}
}
| static const std::string& inlib::rroot::branch_element::s_class | ( | ) | [inline, static] |
Reimplemented from inlib::rroot::branch.
Definition at line 14 of file branch_element.
{
static const std::string s_v("inlib::rroot::branch_element");
return s_v;
}
| virtual bool inlib::rroot::branch_element::stream | ( | buffer & | a_buffer | ) | [inline, virtual] |
Reimplemented from inlib::rroot::branch.
Definition at line 23 of file branch_element.
{
short v;
unsigned int s, c;
if(!a_buffer.read_version(v,s,c)) return false;
if(!branch::stream(a_buffer)) return false;
if(v<=7) {
if(!a_buffer.read(fClassName)) return false;
if(!a_buffer.read(fClassVersion)) return false;
if(!a_buffer.read(fID)) return false;
if(!a_buffer.read(fType)) return false;
if(!a_buffer.read(fStreamerType)) return false;
} else { //v>=8
if(!a_buffer.read(fClassName)) return false;
std::string fParentName;
if(!a_buffer.read(fParentName)) return false;
std::string fCloneName;
if(!a_buffer.read(fCloneName)) return false;
int dummy_int;
if(!a_buffer.read(dummy_int)) return false; //fCheckSum
if(!a_buffer.read(dummy_int)) return false; //fClassVersion
if(!a_buffer.read(fID)) return false;
if(!a_buffer.read(fType)) return false;
if(!a_buffer.read(fStreamerType)) return false;
if(!a_buffer.read(dummy_int)) return false; //fMaximum
//TBranchElement* fBranchCount;
{ifac::args args;
iro* obj;
if(!a_buffer.read_object(m_fac,args,obj)) {
m_out << "inlib::rroot::base_element::stream : "
<< "can't read fAliases."
<< std::endl;
return false;
}
delete obj;}
//TBranchElement* fBranchCount2;
{ifac::args args;
iro* obj;
if(!a_buffer.read_object(m_fac,args,obj)) {
m_out << "inlib::rroot::base_element::stream : "
<< "can't read fAliases."
<< std::endl;
return false;
}
delete obj;}
}
if(!a_buffer.check_byte_count(s,c,"TBranchElement")) return false;
return true;
}
| int inlib::rroot::branch_element::streamer_type | ( | ) | const [inline] |
Definition at line 284 of file branch_element.
{return fStreamerType;}
| int inlib::rroot::branch_element::type | ( | ) | const [inline] |
Definition at line 283 of file branch_element.
{return fType;}
std::string inlib::rroot::branch_element::fClassName [protected] |
Definition at line 290 of file branch_element.
int inlib::rroot::branch_element::fClassVersion [protected] |
Definition at line 291 of file branch_element.
int inlib::rroot::branch_element::fID [protected] |
Definition at line 292 of file branch_element.
int inlib::rroot::branch_element::fStreamerType [protected] |
Definition at line 294 of file branch_element.
int inlib::rroot::branch_element::fType [protected] |
Definition at line 293 of file branch_element.
iro* inlib::rroot::branch_element::m_obj [protected] |
Definition at line 288 of file branch_element.
1.7.5.1