60 const char *branchname,
66 fContainerName(containerName),
68 fSplitLevel(splitlevel),
69 fBranchName(branchname),
70 fSubBranchPrefix(branchname),
82 TNamed(branchname,branchname),
87 fBranchName(branchname),
88 fSubBranchPrefix(branchname),
99 const char *branchname,
100 const char *branchPrefix,
ELocation isclones,
102 const TString &containerName) :
105 fContainerName(containerName),
107 fSplitLevel(splitlevel),
108 fBranchName(branchname),
109 fSubBranchPrefix(branchPrefix),
111 fMaxDatamemberType(3)
148 if ( !other )
return kFALSE;
182 if (leftname.
Length() && leftname[0]==
'.') leftname.
Remove(0,1);
184 if (rightname.
Length() && rightname[0]==
'.') rightname.
Remove(0,1);
185 if (leftname != rightname )
return kFALSE;
257 fprintf(hf,
"%-*sstruct %s\n", offset,
" ",
GetName() );
260 fprintf(hf,
"%-*s : ", offset,
" ");
268 fprintf(hf,
",\n%-*spublic %s", offset+5,
" ", desc->
GetTypeName());
273 fprintf(hf,
"%-*s{\n", offset,
" ");
277 fprintf(hf,
"%-*s %s(TBranchProxyDirector* director,const char *top,const char *mid=0) :",
295 fprintf(hf,
"%s\n%-*s %-*s(top,mid)",wroteFirst?
",":
"",offset,
" ",
fMaxDatamemberType,
"ffPrefix");
312 objInit =
"ffPrefix, ";
317 objInit =
"top, \"\", mid";
322 fprintf(hf,
"%s\n%-*s %-*s(director, %s)",
330 fprintf(hf,
"\n%-*s {};\n",offset,
" ");
334 fprintf(hf,
"%-*s %s(TBranchProxyDirector* director, TBranchProxy *parent, const char *membername, const char *top=0, const char *mid=0) :",
349 fprintf(hf,
",\n%-*s%-*s(director, parent, membername, top, mid)", offset+6,
" ",
fMaxDatamemberType,desc->
GetTypeName());
353 fprintf(hf,
"%s\n%-*s %-*s(top,mid)",wroteFirst?
",":
"",offset,
" ",
fMaxDatamemberType,
"ffPrefix");
357 fprintf(hf,
"%s\n%-*s %-*s(director, parent, membername, top, mid)",
366 fprintf(hf,
"\n%-*s {};\n",offset,
" ");
370 fprintf(hf,
"%-*s%-*s %s;\n", offset+3,
" ",
fMaxDatamemberType,
"ROOT::Internal::TBranchProxyHelper",
"ffPrefix");
376 fprintf(hf,
"%-*sInjecTBranchProxyInterface();\n", offset+3,
" ");
379 fprintf(hf,
"%-*sconst %s* operator[](Int_t i) { return obj.At(i); }\n", offset+3,
" ",
type);
380 fprintf(hf,
"%-*sconst %s* operator[](UInt_t i) { return obj.At(i); }\n", offset+3,
" ",
type);
381 fprintf(hf,
"%-*sInt_t GetEntries() { return obj.GetEntries(); }\n",offset+3,
" ");
382 fprintf(hf,
"%-*sconst TClonesArray* operator->() { return obj.GetPtr(); }\n", offset+3,
" ");
383 fprintf(hf,
"%-*sTClaObjProxy<%s > obj;\n", offset+3,
" ",
type);
384 }
else if (
IsSTL() ) {
386 fprintf(hf,
"%-*sconst %s& At(UInt_t i) {\n",offset+3,
" ",
type);
390 fprintf(hf,
"%-*s static %s default_val((TRootIOCtor*)0);\n",offset+3,
" ",
type);
392 fprintf(hf,
"%-*s static %s default_val;\n",offset+3,
" ",
type);
394 fprintf(hf,
"%-*s if (!obj.Read()) return default_val;\n",offset+3,
" ");
396 fprintf(hf,
"%-*s %s *temp = & obj.GetPtr()->at(i);\n",offset+3,
" ",
type);
398 fprintf(hf,
"%-*s %s *temp = (%s *)( obj.GetProxy()->GetStlStart(i) );\n",offset+3,
" ",
type,
type);
402 fprintf(hf,
"%-*s if (temp) return *temp; else return default_val;\n",offset+3,
" ");
403 fprintf(hf,
"%-*s}\n",offset+3,
" ");
405 fprintf(hf,
"%-*sconst %s& operator[](Int_t i) { return At(i); }\n", offset+3,
" ",
type);
406 fprintf(hf,
"%-*sconst %s& operator[](UInt_t i) { return At(i); }\n", offset+3,
" ",
type);
407 fprintf(hf,
"%-*sInt_t GetEntries() { return obj.GetPtr()->size(); }\n",offset+3,
" ");
408 fprintf(hf,
"%-*sconst %s* operator->() { return obj.GetPtr(); }\n", offset+3,
" ",
fContainerName.
Data());
409 fprintf(hf,
"%-*soperator %s*() { return obj.GetPtr(); }\n", offset+3,
" ",
fContainerName.
Data());
412 fprintf(hf,
"%-*sconst %s& operator[](Int_t i) { return obj.At(i); }\n", offset+3,
" ",
type);
413 fprintf(hf,
"%-*sconst %s& operator[](UInt_t i) { return obj.At(i); }\n", offset+3,
" ",
type);
414 fprintf(hf,
"%-*sInt_t GetEntries() { return obj.GetEntries(); }\n",offset+3,
" ");
415 fprintf(hf,
"%-*sTStlObjProxy<%s > obj;\n", offset+3,
" ",
type);
418 fprintf(hf,
"%-*sconst %s* operator->() { return obj.GetPtr(); }\n", offset+3,
" ",
type);
419 fprintf(hf,
"%-*sTObjProxy<%s > obj;\n", offset+3,
" ",
type);
424 fprintf(hf,
"%-*sInjecTBranchProxyInterface();\n", offset+3,
" ");
425 fprintf(hf,
"%-*sInt_t GetEntries() { return obj.GetEntries(); }\n",offset+3,
" ");
426 fprintf(hf,
"%-*sconst TClonesArray* operator->() { return obj.GetPtr(); }\n", offset+3,
" ");
427 fprintf(hf,
"%-*sTClaProxy obj;\n", offset+3,
" ");
429 }
else if (
IsSTL()) {
431 fprintf(hf,
"%-*sInjecTBranchProxyInterface();\n", offset+3,
" ");
432 fprintf(hf,
"%-*sInt_t GetEntries() { return obj.GetEntries(); }\n",offset+3,
" ");
434 fprintf(hf,
"%-*sTStlProxy obj;\n", offset+3,
" ");
438 fprintf(hf,
"%-*sInjecTBranchProxyInterface();\n", offset+3,
" ");
439 fprintf(hf,
"%-*sTBranchProxy obj;\n", offset+3,
" ");
449 fprintf(hf,
"%-*s};\n",offset,
" ");
const char * GetBranchName() const
const char * GetRawSymbol() const
const char * GetSubBranchPrefix() const
ELocation GetIsClones() const
TBranchProxyClassDescriptor(const TBranchProxyClassDescriptor &b)
void AddDescriptor(TBranchProxyDescriptor *desc, Bool_t isBase)
void OutputDecl(FILE *hf, int offset, UInt_t)
virtual Bool_t IsEquivalent(const TBranchProxyClassDescriptor *other)
UInt_t GetSplitLevel() const
TString GetContainerName() const
UInt_t fMaxDatamemberType
TVirtualStreamerInfo * fInfo
void OutputDecl(FILE *hf, int offset, UInt_t maxVarname)
const char * GetBranchName()
const char * GetTypeName()
void OutputInit(FILE *hf, int offset, UInt_t maxVarname, const char *prefix)
Bool_t IsEquivalent(const TBranchProxyDescriptor *other, Bool_t inClass=kFALSE)
TClass instances represent classes, structs and namespaces in the ROOT type system.
TMethod * GetMethodWithPrototype(const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Find the method with a given prototype.
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
virtual void Add(TObject *obj)
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
The TNamed class is the base class for all named ROOT classes.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
TString & Prepend(const char *cs)
TString & Remove(Ssiz_t pos)
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual TClass * GetValueClass() const =0
Abstract Interface class describing Streamer information for one class.
int main(int argc, char **argv)
std::string ShortType(const char *typeDesc, int mode)
Return the absolute type of typeDesc.