#include "TBranchProxyDescriptor.h"
#include "TBranchProxyClassDescriptor.h"
#include "TClass.h"
#include "TClassEdit.h"
#include "TError.h"
#include "TVirtualStreamerInfo.h"
#include "TVirtualCollectionProxy.h"
ClassImp(ROOT::TBranchProxyClassDescriptor);
namespace ROOT {
void TBranchProxyClassDescriptor::NameToSymbol() {
fRawSymbol = TClassEdit::ShortType(GetName(),2);
fRawSymbol.ReplaceAll(":","_");
fRawSymbol.ReplaceAll("<","_");
fRawSymbol.ReplaceAll(">","_");
fRawSymbol.ReplaceAll(",","Cm");
fRawSymbol.ReplaceAll(" ","");
fRawSymbol.ReplaceAll("*","st");
fRawSymbol.ReplaceAll("&","rf");
if (IsClones())
fRawSymbol.Prepend("TClaPx_");
else if (IsSTL())
fRawSymbol.Prepend("TStlPx_");
else
fRawSymbol.Prepend("TPx_");
if (fRawSymbol.Length() && fRawSymbol[fRawSymbol.Length()-1]=='.')
fRawSymbol.Remove(fRawSymbol.Length()-1);
SetName(fRawSymbol);
}
TBranchProxyClassDescriptor::TBranchProxyClassDescriptor(const char *type,
TVirtualStreamerInfo *info,
const char *branchname,
ELocation isclones,
UInt_t splitlevel,
const TString &containerName) :
TNamed(type,type),
fIsClones(isclones),
fContainerName(containerName),
fIsLeafList(false),
fSplitLevel(splitlevel),
fBranchName(branchname),
fSubBranchPrefix(branchname),
fInfo(info),
fMaxDatamemberType(3)
{
R__ASSERT( strcmp(fInfo->GetName(), type)==0 );
NameToSymbol();
if (fSubBranchPrefix.Length() && fSubBranchPrefix[fSubBranchPrefix.Length()-1]=='.') fSubBranchPrefix.Remove(fSubBranchPrefix.Length()-1);
}
TBranchProxyClassDescriptor::TBranchProxyClassDescriptor(const char *branchname) :
TNamed(branchname,branchname),
fIsClones(kOut),
fContainerName(),
fIsLeafList(true),
fSplitLevel(0),
fBranchName(branchname),
fSubBranchPrefix(branchname),
fInfo(0),
fMaxDatamemberType(3)
{
NameToSymbol();
if (fSubBranchPrefix.Length() && fSubBranchPrefix[fSubBranchPrefix.Length()-1]=='.') fSubBranchPrefix.Remove(fSubBranchPrefix.Length()-1);
}
TBranchProxyClassDescriptor::TBranchProxyClassDescriptor(const char *type, TVirtualStreamerInfo *info,
const char *branchname,
const char *branchPrefix, ELocation isclones,
UInt_t splitlevel,
const TString &containerName) :
TNamed(type,type),
fIsClones(isclones),
fContainerName(containerName),
fIsLeafList(true),
fSplitLevel(splitlevel),
fBranchName(branchname),
fSubBranchPrefix(branchPrefix),
fInfo(info),
fMaxDatamemberType(3)
{
R__ASSERT( strcmp(fInfo->GetName(), type)==0 );
NameToSymbol();
if (fSubBranchPrefix.Length() && fSubBranchPrefix[fSubBranchPrefix.Length()-1]=='.') fSubBranchPrefix.Remove(fSubBranchPrefix.Length()-1);
}
const char* TBranchProxyClassDescriptor::GetBranchName() const
{
return fBranchName.Data();
}
const char* TBranchProxyClassDescriptor::GetSubBranchPrefix() const
{
return fSubBranchPrefix.Data();
}
const char* TBranchProxyClassDescriptor::GetRawSymbol() const
{
return fRawSymbol;
}
UInt_t TBranchProxyClassDescriptor::GetSplitLevel() const {
return fSplitLevel;
}
Bool_t TBranchProxyClassDescriptor::IsEquivalent(const TBranchProxyClassDescriptor* other)
{
if ( !other ) return kFALSE;
if ( strcmp(GetTitle(),other->GetTitle()) ) return kFALSE;
if (fIsClones != other->fIsClones) return kFALSE;
if (fIsClones != kOut) {
if (fContainerName != other->fContainerName) return kFALSE;
}
TBranchProxyDescriptor *desc;
TBranchProxyDescriptor *othdesc;
if ( fListOfBaseProxies.GetSize() != other->fListOfBaseProxies.GetSize() ) return kFALSE;
TIter next(&fListOfBaseProxies);
TIter othnext(&other->fListOfBaseProxies);
while ( (desc=(TBranchProxyDescriptor*)next()) ) {
othdesc=(TBranchProxyDescriptor*)othnext();
if (!desc->IsEquivalent(othdesc,kTRUE) ) return kFALSE;
}
if ( fListOfSubProxies.GetSize() != other->fListOfSubProxies.GetSize() ) return kFALSE;
next = &fListOfSubProxies;
othnext = &(other->fListOfSubProxies);
while ( (desc=(TBranchProxyDescriptor*)next()) ) {
othdesc=(TBranchProxyDescriptor*)othnext();
if (!desc->IsEquivalent(othdesc,kTRUE)) return kFALSE;
if (desc->IsSplit()) {
TString leftname ( desc->GetBranchName() );
TString rightname( othdesc->GetBranchName() );
if (leftname.Index(GetBranchName())==0) leftname.Remove( 0,strlen(GetBranchName()));
if (leftname.Length() && leftname[0]=='.') leftname.Remove(0,1);
if (rightname.Index(other->GetBranchName())==0) rightname.Remove(0,strlen(other->GetBranchName()));
if (rightname.Length() && rightname[0]=='.') rightname.Remove(0,1);
if (leftname != rightname ) return kFALSE;
}
}
return true;
}
void TBranchProxyClassDescriptor::AddDescriptor(TBranchProxyDescriptor *desc, Bool_t isBase)
{
if (desc) {
if (isBase) {
fListOfBaseProxies.Add(desc);
} else {
fListOfSubProxies.Add(desc);
UInt_t len = strlen(desc->GetTypeName());
if ((len+2)>fMaxDatamemberType) fMaxDatamemberType = len+2;
}
}
}
Bool_t TBranchProxyClassDescriptor::IsLoaded() const
{
return IsLoaded(GetTitle());
}
Bool_t TBranchProxyClassDescriptor::IsLoaded(const char *classname)
{
TClass *cl = TClass::GetClass(classname);
while (cl) {
if (cl->IsLoaded()) return kTRUE;
if (!cl->GetCollectionProxy()) return kFALSE;
if (!cl->GetCollectionProxy()->GetValueClass()) return kTRUE;
cl = cl->GetCollectionProxy()->GetValueClass();
}
return kFALSE;
}
Bool_t TBranchProxyClassDescriptor::IsClones() const
{
return fIsClones==kClones || fIsClones==kInsideClones;
}
Bool_t TBranchProxyClassDescriptor::IsSTL() const
{
return fIsClones==kSTL || fIsClones==kInsideSTL;
}
TBranchProxyClassDescriptor::ELocation TBranchProxyClassDescriptor::GetIsClones() const
{
return fIsClones;
}
TString TBranchProxyClassDescriptor::GetContainerName() const
{
return fContainerName;
}
void TBranchProxyClassDescriptor::OutputDecl(FILE *hf, int offset, UInt_t )
{
TBranchProxyDescriptor *desc;
fprintf(hf,"%-*sstruct %s\n", offset," ", GetName() );
if (fListOfBaseProxies.GetSize()) {
fprintf(hf,"%-*s : ", offset," ");
TIter next(&fListOfBaseProxies);
desc = (TBranchProxyDescriptor*)next();
fprintf(hf,"public %s", desc->GetTypeName());
while ( (desc = (TBranchProxyDescriptor*)next()) ) {
fprintf(hf,",\n%-*spublic %s", offset+5," ", desc->GetTypeName());
}
fprintf(hf,"\n");
}
fprintf(hf,"%-*s{\n", offset," ");
fprintf(hf,"%-*s %s(TBranchProxyDirector* director,const char *top,const char *mid=0) :",
offset," ", GetName());
Bool_t wroteFirst = kFALSE;
if (fListOfBaseProxies.GetSize()) {
TIter next(&fListOfBaseProxies);
desc = (TBranchProxyDescriptor*)next();
fprintf(hf,"\n%-*s%-*s(director, top, mid)", offset+6, " ", fMaxDatamemberType,desc->GetTypeName());
wroteFirst = true;
while ( (desc = (TBranchProxyDescriptor*)next()) ) {
fprintf(hf,",\n%-*s%-*s(director, top, mid)", offset+6, " ", fMaxDatamemberType,desc->GetTypeName());
}
}
fprintf(hf,"%s\n%-*s %-*s(top,mid)",wroteFirst?",":"",offset," ",fMaxDatamemberType,"ffPrefix");
wroteFirst = true;
TString objInit = "top, mid";
if ( GetIsClones() == kInsideClones || GetIsClones() == kInsideSTL ) {
if (fListOfSubProxies.GetSize()) {
desc = (TBranchProxyDescriptor*)fListOfSubProxies.At(0);
if (desc && desc->IsSplit()) {
TString main = GetBranchName();
TString sub = desc->GetBranchName();
sub.Remove(0,main.Length()+1);
objInit = "ffPrefix, ";
objInit += "\"";
objInit += sub;
objInit += "\"";
objInit = "top, \"\", mid";
}
}
}
fprintf(hf,"%s\n%-*s %-*s(director, %s)",
",",offset," ",fMaxDatamemberType,"obj",objInit.Data());
TIter next(&fListOfSubProxies);
while ( (desc = (TBranchProxyDescriptor*)next()) ) {
fprintf(hf,",");
desc->OutputInit(hf,offset,fMaxDatamemberType,GetSubBranchPrefix());
}
fprintf(hf,"\n%-*s {};\n",offset," ");
fprintf(hf,"%-*s %s(TBranchProxyDirector* director, TBranchProxy *parent, const char *membername, const char *top=0, const char *mid=0) :",
offset," ", GetName());
wroteFirst = kFALSE;
if (fListOfBaseProxies.GetSize()) {
TIter nextbase(&fListOfBaseProxies);
desc = (TBranchProxyDescriptor*)nextbase();
fprintf(hf,"\n%-*s%-*s(director, parent, membername)", offset+6, " ", fMaxDatamemberType,desc->GetTypeName());
wroteFirst = true;
while ( (desc = (TBranchProxyDescriptor*)nextbase()) ) {
fprintf(hf,",\n%-*s%-*s(director, parent, membername)", offset+6, " ", fMaxDatamemberType,desc->GetTypeName());
}
}
fprintf(hf,"%s\n%-*s %-*s(top,mid)",wroteFirst?",":"",offset," ",fMaxDatamemberType,"ffPrefix");
wroteFirst = true;
if ( true || IsLoaded() || IsClones() || IsSTL() ) {
fprintf(hf,"%s\n%-*s %-*s(director, parent, membername)",
",",offset," ",fMaxDatamemberType,"obj");
}
next.Reset();
while ( (desc = (TBranchProxyDescriptor*)next()) ) {
fprintf(hf,",");
desc->OutputInit(hf,offset,fMaxDatamemberType,GetSubBranchPrefix());
}
fprintf(hf,"\n%-*s {};\n",offset," ");
fprintf(hf,"%-*s%-*s %s;\n", offset+3," ", fMaxDatamemberType, "TBranchProxyHelper", "ffPrefix");
if (IsLoaded()) {
const char *type = GetTitle();
fprintf(hf,"%-*sInjecTBranchProxyInterface();\n", offset+3," ");
if ( IsClones() ) {
fprintf(hf,"%-*sconst %s* operator[](Int_t i) { return obj.At(i); }\n", offset+3," ",type);
fprintf(hf,"%-*sconst %s* operator[](UInt_t i) { return obj.At(i); }\n", offset+3," ",type);
fprintf(hf,"%-*sInt_t GetEntries() { return obj.GetEntries(); }\n",offset+3," ");
fprintf(hf,"%-*sconst TClonesArray* operator->() { return obj.GetPtr(); }\n", offset+3," ");
fprintf(hf,"%-*sTClaObjProxy<%s > obj;\n", offset+3, " ", type);
} else if ( IsSTL() ) {
if (fContainerName.Length() && IsLoaded(fContainerName)) {
fprintf(hf,"%-*sconst %s& At(UInt_t i) {\n",offset+3," ",type);
TClass *stlCl = TClass::GetClass(fContainerName);
TClass *cl = TClass::GetClass(GetTitle());
if (cl->GetMethodWithPrototype(cl->GetName(),"TRootIOCtor*")) {
fprintf(hf,"%-*s static %s default_val((TRootIOCtor*)0);\n",offset+3," ",type);
} else {
fprintf(hf,"%-*s static %s default_val;\n",offset+3," ",type);
}
fprintf(hf,"%-*s if (!obj.Read()) return default_val;\n",offset+3," ");
if (stlCl->GetCollectionProxy()->GetValueClass() == cl) {
fprintf(hf,"%-*s %s *temp = & obj.GetPtr()->at(i);\n",offset+3," ",type);
} else {
fprintf(hf,"%-*s %s *temp = (%s *)( obj.GetProxy()->GetStlStart(i) );\n",offset+3," ",type,type);
}
fprintf(hf,"%-*s if (temp) return *temp; else return default_val;\n",offset+3," ");
fprintf(hf,"%-*s}\n",offset+3," ");
fprintf(hf,"%-*sconst %s& operator[](Int_t i) { return At(i); }\n", offset+3," ",type);
fprintf(hf,"%-*sconst %s& operator[](UInt_t i) { return At(i); }\n", offset+3," ",type);
fprintf(hf,"%-*sInt_t GetEntries() { return obj.GetPtr()->size(); }\n",offset+3," ");
fprintf(hf,"%-*sconst %s* operator->() { return obj.GetPtr(); }\n", offset+3," ",fContainerName.Data());
fprintf(hf,"%-*soperator %s*() { return obj.GetPtr(); }\n", offset+3," ",fContainerName.Data());
fprintf(hf,"%-*sTObjProxy<%s > obj;\n", offset+3, " ", fContainerName.Data());
} else {
fprintf(hf,"%-*sconst %s& operator[](Int_t i) { return obj.At(i); }\n", offset+3," ",type);
fprintf(hf,"%-*sconst %s& operator[](UInt_t i) { return obj.At(i); }\n", offset+3," ",type);
fprintf(hf,"%-*sInt_t GetEntries() { return obj.GetEntries(); }\n",offset+3," ");
fprintf(hf,"%-*sTStlObjProxy<%s > obj;\n", offset+3, " ", type);
}
} else {
fprintf(hf,"%-*sconst %s* operator->() { return obj.GetPtr(); }\n", offset+3," ",type);
fprintf(hf,"%-*sTObjProxy<%s > obj;\n", offset+3, " ", type);
}
} else if ( IsClones()) {
fprintf(hf,"%-*sInjecTBranchProxyInterface();\n", offset+3," ");
fprintf(hf,"%-*sInt_t GetEntries() { return obj.GetEntries(); }\n",offset+3," ");
fprintf(hf,"%-*sconst TClonesArray* operator->() { return obj.GetPtr(); }\n", offset+3," ");
fprintf(hf,"%-*sTClaProxy obj;\n", offset+3," ");
} else if ( IsSTL()) {
fprintf(hf,"%-*sInjecTBranchProxyInterface();\n", offset+3," ");
fprintf(hf,"%-*sInt_t GetEntries() { return obj.GetEntries(); }\n",offset+3," ");
fprintf(hf,"%-*sTStlProxy obj;\n", offset+3," ");
} else {
fprintf(hf,"%-*sInjecTBranchProxyInterface();\n", offset+3," ");
fprintf(hf,"%-*sTBranchProxy obj;\n", offset+3," ");
}
fprintf(hf,"\n");
next.Reset();
while( (desc = ( TBranchProxyDescriptor *)next()) ) {
desc->OutputDecl(hf,offset+3,fMaxDatamemberType);
}
fprintf(hf,"%-*s};\n",offset," ");
}
}
TBranchProxyClassDescriptor.cxx:1 TBranchProxyClassDescriptor.cxx:2 TBranchProxyClassDescriptor.cxx:3 TBranchProxyClassDescriptor.cxx:4 TBranchProxyClassDescriptor.cxx:5 TBranchProxyClassDescriptor.cxx:6 TBranchProxyClassDescriptor.cxx:7 TBranchProxyClassDescriptor.cxx:8 TBranchProxyClassDescriptor.cxx:9 TBranchProxyClassDescriptor.cxx:10 TBranchProxyClassDescriptor.cxx:11 TBranchProxyClassDescriptor.cxx:12 TBranchProxyClassDescriptor.cxx:13 TBranchProxyClassDescriptor.cxx:14 TBranchProxyClassDescriptor.cxx:15 TBranchProxyClassDescriptor.cxx:16 TBranchProxyClassDescriptor.cxx:17 TBranchProxyClassDescriptor.cxx:18 TBranchProxyClassDescriptor.cxx:19 TBranchProxyClassDescriptor.cxx:20 TBranchProxyClassDescriptor.cxx:21 TBranchProxyClassDescriptor.cxx:22 TBranchProxyClassDescriptor.cxx:23 TBranchProxyClassDescriptor.cxx:24 TBranchProxyClassDescriptor.cxx:25 TBranchProxyClassDescriptor.cxx:26 TBranchProxyClassDescriptor.cxx:27 TBranchProxyClassDescriptor.cxx:28 TBranchProxyClassDescriptor.cxx:29 TBranchProxyClassDescriptor.cxx:30 TBranchProxyClassDescriptor.cxx:31 TBranchProxyClassDescriptor.cxx:32 TBranchProxyClassDescriptor.cxx:33 TBranchProxyClassDescriptor.cxx:34 TBranchProxyClassDescriptor.cxx:35 TBranchProxyClassDescriptor.cxx:36 TBranchProxyClassDescriptor.cxx:37 TBranchProxyClassDescriptor.cxx:38 TBranchProxyClassDescriptor.cxx:39 TBranchProxyClassDescriptor.cxx:40 TBranchProxyClassDescriptor.cxx:41 TBranchProxyClassDescriptor.cxx:42 TBranchProxyClassDescriptor.cxx:43 TBranchProxyClassDescriptor.cxx:44 TBranchProxyClassDescriptor.cxx:45 TBranchProxyClassDescriptor.cxx:46 TBranchProxyClassDescriptor.cxx:47 TBranchProxyClassDescriptor.cxx:48 TBranchProxyClassDescriptor.cxx:49 TBranchProxyClassDescriptor.cxx:50 TBranchProxyClassDescriptor.cxx:51 TBranchProxyClassDescriptor.cxx:52 TBranchProxyClassDescriptor.cxx:53 TBranchProxyClassDescriptor.cxx:54 TBranchProxyClassDescriptor.cxx:55 TBranchProxyClassDescriptor.cxx:56 TBranchProxyClassDescriptor.cxx:57 TBranchProxyClassDescriptor.cxx:58 TBranchProxyClassDescriptor.cxx:59 TBranchProxyClassDescriptor.cxx:60 TBranchProxyClassDescriptor.cxx:61 TBranchProxyClassDescriptor.cxx:62 TBranchProxyClassDescriptor.cxx:63 TBranchProxyClassDescriptor.cxx:64 TBranchProxyClassDescriptor.cxx:65 TBranchProxyClassDescriptor.cxx:66 TBranchProxyClassDescriptor.cxx:67 TBranchProxyClassDescriptor.cxx:68 TBranchProxyClassDescriptor.cxx:69 TBranchProxyClassDescriptor.cxx:70 TBranchProxyClassDescriptor.cxx:71 TBranchProxyClassDescriptor.cxx:72 TBranchProxyClassDescriptor.cxx:73 TBranchProxyClassDescriptor.cxx:74 TBranchProxyClassDescriptor.cxx:75 TBranchProxyClassDescriptor.cxx:76 TBranchProxyClassDescriptor.cxx:77 TBranchProxyClassDescriptor.cxx:78 TBranchProxyClassDescriptor.cxx:79 TBranchProxyClassDescriptor.cxx:80 TBranchProxyClassDescriptor.cxx:81 TBranchProxyClassDescriptor.cxx:82 TBranchProxyClassDescriptor.cxx:83 TBranchProxyClassDescriptor.cxx:84 TBranchProxyClassDescriptor.cxx:85 TBranchProxyClassDescriptor.cxx:86 TBranchProxyClassDescriptor.cxx:87 TBranchProxyClassDescriptor.cxx:88 TBranchProxyClassDescriptor.cxx:89 TBranchProxyClassDescriptor.cxx:90 TBranchProxyClassDescriptor.cxx:91 TBranchProxyClassDescriptor.cxx:92 TBranchProxyClassDescriptor.cxx:93 TBranchProxyClassDescriptor.cxx:94 TBranchProxyClassDescriptor.cxx:95 TBranchProxyClassDescriptor.cxx:96 TBranchProxyClassDescriptor.cxx:97 TBranchProxyClassDescriptor.cxx:98 TBranchProxyClassDescriptor.cxx:99 TBranchProxyClassDescriptor.cxx:100 TBranchProxyClassDescriptor.cxx:101 TBranchProxyClassDescriptor.cxx:102 TBranchProxyClassDescriptor.cxx:103 TBranchProxyClassDescriptor.cxx:104 TBranchProxyClassDescriptor.cxx:105 TBranchProxyClassDescriptor.cxx:106 TBranchProxyClassDescriptor.cxx:107 TBranchProxyClassDescriptor.cxx:108 TBranchProxyClassDescriptor.cxx:109 TBranchProxyClassDescriptor.cxx:110 TBranchProxyClassDescriptor.cxx:111 TBranchProxyClassDescriptor.cxx:112 TBranchProxyClassDescriptor.cxx:113 TBranchProxyClassDescriptor.cxx:114 TBranchProxyClassDescriptor.cxx:115 TBranchProxyClassDescriptor.cxx:116 TBranchProxyClassDescriptor.cxx:117 TBranchProxyClassDescriptor.cxx:118 TBranchProxyClassDescriptor.cxx:119 TBranchProxyClassDescriptor.cxx:120 TBranchProxyClassDescriptor.cxx:121 TBranchProxyClassDescriptor.cxx:122 TBranchProxyClassDescriptor.cxx:123 TBranchProxyClassDescriptor.cxx:124 TBranchProxyClassDescriptor.cxx:125 TBranchProxyClassDescriptor.cxx:126 TBranchProxyClassDescriptor.cxx:127 TBranchProxyClassDescriptor.cxx:128 TBranchProxyClassDescriptor.cxx:129 TBranchProxyClassDescriptor.cxx:130 TBranchProxyClassDescriptor.cxx:131 TBranchProxyClassDescriptor.cxx:132 TBranchProxyClassDescriptor.cxx:133 TBranchProxyClassDescriptor.cxx:134 TBranchProxyClassDescriptor.cxx:135 TBranchProxyClassDescriptor.cxx:136 TBranchProxyClassDescriptor.cxx:137 TBranchProxyClassDescriptor.cxx:138 TBranchProxyClassDescriptor.cxx:139 TBranchProxyClassDescriptor.cxx:140 TBranchProxyClassDescriptor.cxx:141 TBranchProxyClassDescriptor.cxx:142 TBranchProxyClassDescriptor.cxx:143 TBranchProxyClassDescriptor.cxx:144 TBranchProxyClassDescriptor.cxx:145 TBranchProxyClassDescriptor.cxx:146 TBranchProxyClassDescriptor.cxx:147 TBranchProxyClassDescriptor.cxx:148 TBranchProxyClassDescriptor.cxx:149 TBranchProxyClassDescriptor.cxx:150 TBranchProxyClassDescriptor.cxx:151 TBranchProxyClassDescriptor.cxx:152 TBranchProxyClassDescriptor.cxx:153 TBranchProxyClassDescriptor.cxx:154 TBranchProxyClassDescriptor.cxx:155 TBranchProxyClassDescriptor.cxx:156 TBranchProxyClassDescriptor.cxx:157 TBranchProxyClassDescriptor.cxx:158 TBranchProxyClassDescriptor.cxx:159 TBranchProxyClassDescriptor.cxx:160 TBranchProxyClassDescriptor.cxx:161 TBranchProxyClassDescriptor.cxx:162 TBranchProxyClassDescriptor.cxx:163 TBranchProxyClassDescriptor.cxx:164 TBranchProxyClassDescriptor.cxx:165 TBranchProxyClassDescriptor.cxx:166 TBranchProxyClassDescriptor.cxx:167 TBranchProxyClassDescriptor.cxx:168 TBranchProxyClassDescriptor.cxx:169 TBranchProxyClassDescriptor.cxx:170 TBranchProxyClassDescriptor.cxx:171 TBranchProxyClassDescriptor.cxx:172 TBranchProxyClassDescriptor.cxx:173 TBranchProxyClassDescriptor.cxx:174 TBranchProxyClassDescriptor.cxx:175 TBranchProxyClassDescriptor.cxx:176 TBranchProxyClassDescriptor.cxx:177 TBranchProxyClassDescriptor.cxx:178 TBranchProxyClassDescriptor.cxx:179 TBranchProxyClassDescriptor.cxx:180 TBranchProxyClassDescriptor.cxx:181 TBranchProxyClassDescriptor.cxx:182 TBranchProxyClassDescriptor.cxx:183 TBranchProxyClassDescriptor.cxx:184 TBranchProxyClassDescriptor.cxx:185 TBranchProxyClassDescriptor.cxx:186 TBranchProxyClassDescriptor.cxx:187 TBranchProxyClassDescriptor.cxx:188 TBranchProxyClassDescriptor.cxx:189 TBranchProxyClassDescriptor.cxx:190 TBranchProxyClassDescriptor.cxx:191 TBranchProxyClassDescriptor.cxx:192 TBranchProxyClassDescriptor.cxx:193 TBranchProxyClassDescriptor.cxx:194 TBranchProxyClassDescriptor.cxx:195 TBranchProxyClassDescriptor.cxx:196 TBranchProxyClassDescriptor.cxx:197 TBranchProxyClassDescriptor.cxx:198 TBranchProxyClassDescriptor.cxx:199 TBranchProxyClassDescriptor.cxx:200 TBranchProxyClassDescriptor.cxx:201 TBranchProxyClassDescriptor.cxx:202 TBranchProxyClassDescriptor.cxx:203 TBranchProxyClassDescriptor.cxx:204 TBranchProxyClassDescriptor.cxx:205 TBranchProxyClassDescriptor.cxx:206 TBranchProxyClassDescriptor.cxx:207 TBranchProxyClassDescriptor.cxx:208 TBranchProxyClassDescriptor.cxx:209 TBranchProxyClassDescriptor.cxx:210 TBranchProxyClassDescriptor.cxx:211 TBranchProxyClassDescriptor.cxx:212 TBranchProxyClassDescriptor.cxx:213 TBranchProxyClassDescriptor.cxx:214 TBranchProxyClassDescriptor.cxx:215 TBranchProxyClassDescriptor.cxx:216 TBranchProxyClassDescriptor.cxx:217 TBranchProxyClassDescriptor.cxx:218 TBranchProxyClassDescriptor.cxx:219 TBranchProxyClassDescriptor.cxx:220 TBranchProxyClassDescriptor.cxx:221 TBranchProxyClassDescriptor.cxx:222 TBranchProxyClassDescriptor.cxx:223 TBranchProxyClassDescriptor.cxx:224 TBranchProxyClassDescriptor.cxx:225 TBranchProxyClassDescriptor.cxx:226 TBranchProxyClassDescriptor.cxx:227 TBranchProxyClassDescriptor.cxx:228 TBranchProxyClassDescriptor.cxx:229 TBranchProxyClassDescriptor.cxx:230 TBranchProxyClassDescriptor.cxx:231 TBranchProxyClassDescriptor.cxx:232 TBranchProxyClassDescriptor.cxx:233 TBranchProxyClassDescriptor.cxx:234 TBranchProxyClassDescriptor.cxx:235 TBranchProxyClassDescriptor.cxx:236 TBranchProxyClassDescriptor.cxx:237 TBranchProxyClassDescriptor.cxx:238 TBranchProxyClassDescriptor.cxx:239 TBranchProxyClassDescriptor.cxx:240 TBranchProxyClassDescriptor.cxx:241 TBranchProxyClassDescriptor.cxx:242 TBranchProxyClassDescriptor.cxx:243 TBranchProxyClassDescriptor.cxx:244 TBranchProxyClassDescriptor.cxx:245 TBranchProxyClassDescriptor.cxx:246 TBranchProxyClassDescriptor.cxx:247 TBranchProxyClassDescriptor.cxx:248 TBranchProxyClassDescriptor.cxx:249 TBranchProxyClassDescriptor.cxx:250 TBranchProxyClassDescriptor.cxx:251 TBranchProxyClassDescriptor.cxx:252 TBranchProxyClassDescriptor.cxx:253 TBranchProxyClassDescriptor.cxx:254 TBranchProxyClassDescriptor.cxx:255 TBranchProxyClassDescriptor.cxx:256 TBranchProxyClassDescriptor.cxx:257 TBranchProxyClassDescriptor.cxx:258 TBranchProxyClassDescriptor.cxx:259 TBranchProxyClassDescriptor.cxx:260 TBranchProxyClassDescriptor.cxx:261 TBranchProxyClassDescriptor.cxx:262 TBranchProxyClassDescriptor.cxx:263 TBranchProxyClassDescriptor.cxx:264 TBranchProxyClassDescriptor.cxx:265 TBranchProxyClassDescriptor.cxx:266 TBranchProxyClassDescriptor.cxx:267 TBranchProxyClassDescriptor.cxx:268 TBranchProxyClassDescriptor.cxx:269 TBranchProxyClassDescriptor.cxx:270 TBranchProxyClassDescriptor.cxx:271 TBranchProxyClassDescriptor.cxx:272 TBranchProxyClassDescriptor.cxx:273 TBranchProxyClassDescriptor.cxx:274 TBranchProxyClassDescriptor.cxx:275 TBranchProxyClassDescriptor.cxx:276 TBranchProxyClassDescriptor.cxx:277 TBranchProxyClassDescriptor.cxx:278 TBranchProxyClassDescriptor.cxx:279 TBranchProxyClassDescriptor.cxx:280 TBranchProxyClassDescriptor.cxx:281 TBranchProxyClassDescriptor.cxx:282 TBranchProxyClassDescriptor.cxx:283 TBranchProxyClassDescriptor.cxx:284 TBranchProxyClassDescriptor.cxx:285 TBranchProxyClassDescriptor.cxx:286 TBranchProxyClassDescriptor.cxx:287 TBranchProxyClassDescriptor.cxx:288 TBranchProxyClassDescriptor.cxx:289 TBranchProxyClassDescriptor.cxx:290 TBranchProxyClassDescriptor.cxx:291 TBranchProxyClassDescriptor.cxx:292 TBranchProxyClassDescriptor.cxx:293 TBranchProxyClassDescriptor.cxx:294 TBranchProxyClassDescriptor.cxx:295 TBranchProxyClassDescriptor.cxx:296 TBranchProxyClassDescriptor.cxx:297 TBranchProxyClassDescriptor.cxx:298 TBranchProxyClassDescriptor.cxx:299 TBranchProxyClassDescriptor.cxx:300 TBranchProxyClassDescriptor.cxx:301 TBranchProxyClassDescriptor.cxx:302 TBranchProxyClassDescriptor.cxx:303 TBranchProxyClassDescriptor.cxx:304 TBranchProxyClassDescriptor.cxx:305 TBranchProxyClassDescriptor.cxx:306 TBranchProxyClassDescriptor.cxx:307 TBranchProxyClassDescriptor.cxx:308 TBranchProxyClassDescriptor.cxx:309 TBranchProxyClassDescriptor.cxx:310 TBranchProxyClassDescriptor.cxx:311 TBranchProxyClassDescriptor.cxx:312 TBranchProxyClassDescriptor.cxx:313 TBranchProxyClassDescriptor.cxx:314 TBranchProxyClassDescriptor.cxx:315 TBranchProxyClassDescriptor.cxx:316 TBranchProxyClassDescriptor.cxx:317 TBranchProxyClassDescriptor.cxx:318 TBranchProxyClassDescriptor.cxx:319 TBranchProxyClassDescriptor.cxx:320 TBranchProxyClassDescriptor.cxx:321 TBranchProxyClassDescriptor.cxx:322 TBranchProxyClassDescriptor.cxx:323 TBranchProxyClassDescriptor.cxx:324 TBranchProxyClassDescriptor.cxx:325 TBranchProxyClassDescriptor.cxx:326 TBranchProxyClassDescriptor.cxx:327 TBranchProxyClassDescriptor.cxx:328 TBranchProxyClassDescriptor.cxx:329 TBranchProxyClassDescriptor.cxx:330 TBranchProxyClassDescriptor.cxx:331 TBranchProxyClassDescriptor.cxx:332 TBranchProxyClassDescriptor.cxx:333 TBranchProxyClassDescriptor.cxx:334 TBranchProxyClassDescriptor.cxx:335 TBranchProxyClassDescriptor.cxx:336 TBranchProxyClassDescriptor.cxx:337 TBranchProxyClassDescriptor.cxx:338 TBranchProxyClassDescriptor.cxx:339 TBranchProxyClassDescriptor.cxx:340 TBranchProxyClassDescriptor.cxx:341 TBranchProxyClassDescriptor.cxx:342 TBranchProxyClassDescriptor.cxx:343 TBranchProxyClassDescriptor.cxx:344 TBranchProxyClassDescriptor.cxx:345 TBranchProxyClassDescriptor.cxx:346 TBranchProxyClassDescriptor.cxx:347 TBranchProxyClassDescriptor.cxx:348 TBranchProxyClassDescriptor.cxx:349 TBranchProxyClassDescriptor.cxx:350 TBranchProxyClassDescriptor.cxx:351 TBranchProxyClassDescriptor.cxx:352 TBranchProxyClassDescriptor.cxx:353 TBranchProxyClassDescriptor.cxx:354 TBranchProxyClassDescriptor.cxx:355 TBranchProxyClassDescriptor.cxx:356 TBranchProxyClassDescriptor.cxx:357 TBranchProxyClassDescriptor.cxx:358 TBranchProxyClassDescriptor.cxx:359 TBranchProxyClassDescriptor.cxx:360 TBranchProxyClassDescriptor.cxx:361 TBranchProxyClassDescriptor.cxx:362 TBranchProxyClassDescriptor.cxx:363 TBranchProxyClassDescriptor.cxx:364 TBranchProxyClassDescriptor.cxx:365 TBranchProxyClassDescriptor.cxx:366 TBranchProxyClassDescriptor.cxx:367 TBranchProxyClassDescriptor.cxx:368 TBranchProxyClassDescriptor.cxx:369 TBranchProxyClassDescriptor.cxx:370 TBranchProxyClassDescriptor.cxx:371 TBranchProxyClassDescriptor.cxx:372 TBranchProxyClassDescriptor.cxx:373 TBranchProxyClassDescriptor.cxx:374 TBranchProxyClassDescriptor.cxx:375 TBranchProxyClassDescriptor.cxx:376 TBranchProxyClassDescriptor.cxx:377 TBranchProxyClassDescriptor.cxx:378 TBranchProxyClassDescriptor.cxx:379 TBranchProxyClassDescriptor.cxx:380 TBranchProxyClassDescriptor.cxx:381 TBranchProxyClassDescriptor.cxx:382 TBranchProxyClassDescriptor.cxx:383 TBranchProxyClassDescriptor.cxx:384 TBranchProxyClassDescriptor.cxx:385 TBranchProxyClassDescriptor.cxx:386 TBranchProxyClassDescriptor.cxx:387 TBranchProxyClassDescriptor.cxx:388 TBranchProxyClassDescriptor.cxx:389 TBranchProxyClassDescriptor.cxx:390 TBranchProxyClassDescriptor.cxx:391 TBranchProxyClassDescriptor.cxx:392 TBranchProxyClassDescriptor.cxx:393 TBranchProxyClassDescriptor.cxx:394 TBranchProxyClassDescriptor.cxx:395 TBranchProxyClassDescriptor.cxx:396 TBranchProxyClassDescriptor.cxx:397 TBranchProxyClassDescriptor.cxx:398 TBranchProxyClassDescriptor.cxx:399 TBranchProxyClassDescriptor.cxx:400 TBranchProxyClassDescriptor.cxx:401 TBranchProxyClassDescriptor.cxx:402 TBranchProxyClassDescriptor.cxx:403 TBranchProxyClassDescriptor.cxx:404 TBranchProxyClassDescriptor.cxx:405 TBranchProxyClassDescriptor.cxx:406 TBranchProxyClassDescriptor.cxx:407 TBranchProxyClassDescriptor.cxx:408 TBranchProxyClassDescriptor.cxx:409 TBranchProxyClassDescriptor.cxx:410 TBranchProxyClassDescriptor.cxx:411 TBranchProxyClassDescriptor.cxx:412 TBranchProxyClassDescriptor.cxx:413 TBranchProxyClassDescriptor.cxx:414 TBranchProxyClassDescriptor.cxx:415 TBranchProxyClassDescriptor.cxx:416 TBranchProxyClassDescriptor.cxx:417 TBranchProxyClassDescriptor.cxx:418 TBranchProxyClassDescriptor.cxx:419 TBranchProxyClassDescriptor.cxx:420 TBranchProxyClassDescriptor.cxx:421 TBranchProxyClassDescriptor.cxx:422 TBranchProxyClassDescriptor.cxx:423 TBranchProxyClassDescriptor.cxx:424 TBranchProxyClassDescriptor.cxx:425 TBranchProxyClassDescriptor.cxx:426 TBranchProxyClassDescriptor.cxx:427 TBranchProxyClassDescriptor.cxx:428 TBranchProxyClassDescriptor.cxx:429 TBranchProxyClassDescriptor.cxx:430 TBranchProxyClassDescriptor.cxx:431 TBranchProxyClassDescriptor.cxx:432 TBranchProxyClassDescriptor.cxx:433 TBranchProxyClassDescriptor.cxx:434 TBranchProxyClassDescriptor.cxx:435 TBranchProxyClassDescriptor.cxx:436 TBranchProxyClassDescriptor.cxx:437 TBranchProxyClassDescriptor.cxx:438 TBranchProxyClassDescriptor.cxx:439 TBranchProxyClassDescriptor.cxx:440 TBranchProxyClassDescriptor.cxx:441 TBranchProxyClassDescriptor.cxx:442 TBranchProxyClassDescriptor.cxx:443 TBranchProxyClassDescriptor.cxx:444 TBranchProxyClassDescriptor.cxx:445 TBranchProxyClassDescriptor.cxx:446 TBranchProxyClassDescriptor.cxx:447 TBranchProxyClassDescriptor.cxx:448 TBranchProxyClassDescriptor.cxx:449 TBranchProxyClassDescriptor.cxx:450 TBranchProxyClassDescriptor.cxx:451 TBranchProxyClassDescriptor.cxx:452 TBranchProxyClassDescriptor.cxx:453 TBranchProxyClassDescriptor.cxx:454 TBranchProxyClassDescriptor.cxx:455 TBranchProxyClassDescriptor.cxx:456 TBranchProxyClassDescriptor.cxx:457