#include "TFriendProxyDescriptor.h"
#include "TBranchProxyDescriptor.h"
#include "TList.h"
ClassImp(ROOT::TFriendProxyDescriptor);
namespace ROOT {
TFriendProxyDescriptor::TFriendProxyDescriptor(const char *treename,
const char *aliasname,
Int_t index) :
TNamed(treename,aliasname),
fDuplicate(kFALSE),
fIndex(index)
{
}
Bool_t TFriendProxyDescriptor::IsEquivalent(const TFriendProxyDescriptor *other)
{
if ( !other ) return kFALSE;
if ( strcmp(GetName(),other->GetName()) ) return kFALSE;
TBranchProxyDescriptor *desc;
TBranchProxyDescriptor *othdesc;
if ( fListOfTopProxies.GetSize() != other->fListOfTopProxies.GetSize() ) return kFALSE;
TIter next(&fListOfTopProxies);
TIter othnext(&other->fListOfTopProxies);
while ( (desc=(TBranchProxyDescriptor*)next()) ) {
othdesc=(TBranchProxyDescriptor*)othnext();
if (!desc->IsEquivalent(othdesc) ) return kFALSE;
}
return kTRUE;
}
void TFriendProxyDescriptor::OutputClassDecl(FILE *hf, int offset, UInt_t maxVarname)
{
fprintf(hf,"%-*sstruct TFriendPx_%s : public TFriendProxy {\n", offset," ", GetName() );
fprintf(hf,"%-*s TFriendPx_%s(TBranchProxyDirector *director,TTree *tree,Int_t index) :\n",
offset," ", GetName() );
fprintf(hf,"%-*s %-*s(director,tree,index)",offset," ",maxVarname,"TFriendProxy");
TBranchProxyDescriptor *data;
TIter next = &fListOfTopProxies;
while ( (data = (TBranchProxyDescriptor*)next()) ) {
fprintf(hf,",\n%-*s %-*s(&fDirector,\"%s\")",
offset," ",maxVarname, data->GetDataName(), data->GetBranchName());
}
fprintf(hf,"\n%-*s { }\n",offset," ");
fprintf(hf, "\n%-*s // Proxy for each of the branches and leaves of the tree\n",offset," ");
next.Reset();
while ( (data = (TBranchProxyDescriptor*)next()) ) {
data->OutputDecl(hf, offset+3, maxVarname);
}
fprintf(hf,"%-*s};\n",offset," ");
}
void TFriendProxyDescriptor::OutputDecl(FILE *hf, int offset, UInt_t maxVarname)
{
TString typeName = "TFriendPx_";
typeName += GetName();
fprintf(hf,"%-*s%-*s %s;\n",
offset," ",maxVarname,typeName.Data(),GetTitle());
}
}
TFriendProxyDescriptor.cxx:1 TFriendProxyDescriptor.cxx:2 TFriendProxyDescriptor.cxx:3 TFriendProxyDescriptor.cxx:4 TFriendProxyDescriptor.cxx:5 TFriendProxyDescriptor.cxx:6 TFriendProxyDescriptor.cxx:7 TFriendProxyDescriptor.cxx:8 TFriendProxyDescriptor.cxx:9 TFriendProxyDescriptor.cxx:10 TFriendProxyDescriptor.cxx:11 TFriendProxyDescriptor.cxx:12 TFriendProxyDescriptor.cxx:13 TFriendProxyDescriptor.cxx:14 TFriendProxyDescriptor.cxx:15 TFriendProxyDescriptor.cxx:16 TFriendProxyDescriptor.cxx:17 TFriendProxyDescriptor.cxx:18 TFriendProxyDescriptor.cxx:19 TFriendProxyDescriptor.cxx:20 TFriendProxyDescriptor.cxx:21 TFriendProxyDescriptor.cxx:22 TFriendProxyDescriptor.cxx:23 TFriendProxyDescriptor.cxx:24 TFriendProxyDescriptor.cxx:25 TFriendProxyDescriptor.cxx:26 TFriendProxyDescriptor.cxx:27 TFriendProxyDescriptor.cxx:28 TFriendProxyDescriptor.cxx:29 TFriendProxyDescriptor.cxx:30 TFriendProxyDescriptor.cxx:31 TFriendProxyDescriptor.cxx:32 TFriendProxyDescriptor.cxx:33 TFriendProxyDescriptor.cxx:34 TFriendProxyDescriptor.cxx:35 TFriendProxyDescriptor.cxx:36 TFriendProxyDescriptor.cxx:37 TFriendProxyDescriptor.cxx:38 TFriendProxyDescriptor.cxx:39 TFriendProxyDescriptor.cxx:40 TFriendProxyDescriptor.cxx:41 TFriendProxyDescriptor.cxx:42 TFriendProxyDescriptor.cxx:43 TFriendProxyDescriptor.cxx:44 TFriendProxyDescriptor.cxx:45 TFriendProxyDescriptor.cxx:46 TFriendProxyDescriptor.cxx:47 TFriendProxyDescriptor.cxx:48 TFriendProxyDescriptor.cxx:49 TFriendProxyDescriptor.cxx:50 TFriendProxyDescriptor.cxx:51 TFriendProxyDescriptor.cxx:52 TFriendProxyDescriptor.cxx:53 TFriendProxyDescriptor.cxx:54 TFriendProxyDescriptor.cxx:55 TFriendProxyDescriptor.cxx:56 TFriendProxyDescriptor.cxx:57 TFriendProxyDescriptor.cxx:58 TFriendProxyDescriptor.cxx:59 TFriendProxyDescriptor.cxx:60 TFriendProxyDescriptor.cxx:61 TFriendProxyDescriptor.cxx:62 TFriendProxyDescriptor.cxx:63 TFriendProxyDescriptor.cxx:64 TFriendProxyDescriptor.cxx:65 TFriendProxyDescriptor.cxx:66 TFriendProxyDescriptor.cxx:67 TFriendProxyDescriptor.cxx:68 TFriendProxyDescriptor.cxx:69 TFriendProxyDescriptor.cxx:70 TFriendProxyDescriptor.cxx:71 TFriendProxyDescriptor.cxx:72 TFriendProxyDescriptor.cxx:73 TFriendProxyDescriptor.cxx:74 TFriendProxyDescriptor.cxx:75 TFriendProxyDescriptor.cxx:76 TFriendProxyDescriptor.cxx:77 TFriendProxyDescriptor.cxx:78 TFriendProxyDescriptor.cxx:79 TFriendProxyDescriptor.cxx:80 TFriendProxyDescriptor.cxx:81 TFriendProxyDescriptor.cxx:82 TFriendProxyDescriptor.cxx:83 TFriendProxyDescriptor.cxx:84 TFriendProxyDescriptor.cxx:85 TFriendProxyDescriptor.cxx:86 TFriendProxyDescriptor.cxx:87 TFriendProxyDescriptor.cxx:88 TFriendProxyDescriptor.cxx:89 TFriendProxyDescriptor.cxx:90 TFriendProxyDescriptor.cxx:91 TFriendProxyDescriptor.cxx:92 TFriendProxyDescriptor.cxx:93 TFriendProxyDescriptor.cxx:94 TFriendProxyDescriptor.cxx:95 TFriendProxyDescriptor.cxx:96