Logo ROOT  
Reference Guide
TBranchBrowsable.h
Go to the documentation of this file.
1// @(#)root/tree:$Id$
2// Author: Axel Naumann 14/10/2004
3
4/*************************************************************************
5 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TBranchBrowsable
13#define ROOT_TBranchBrowsable
14
15#include "TNamed.h"
16
17#include "TList.h"
18
19#include <list>
20
21class TMethod;
22class TBowser;
23class TClass;
24class TBranch;
25class TBranchElement;
26class TString;
28
30public:
31
32 // these methods are registered in RegisterGenerator, and
33 // called to create the list of browsables. See e.g.
34 // TMethodBrowsable::Register
36 (TList &, const TBranch *branch, const TVirtualBranchBrowsable *parent);
37
39
40 void Browse(TBrowser *b) override;
41
42 /** return icon shown when browsing a TVirtualBranchBrowsable */
43 const char* GetIconName() const override
44 {
45 if (IsFolder())
46 return "TBranchElement-folder";
47 else
48 return "TBranchElement-leaf";
49 }
50
51 void GetScope(TString &scope) const;
52
53 /** check whether we have sub-elements */
54 Bool_t IsFolder() const override { return (GetLeaves() && GetLeaves()->GetSize()); }
55
56 static Int_t FillListOfBrowsables(TList &list, const TBranch *branch,
57 const TVirtualBranchBrowsable *parent = nullptr);
58
59 /** return the parent branch (might be many levels up) */
60 const TBranch* GetBranch() const { return fBranch; }
61
62 /** return the parent TVirtualBranchBrowsable */
63 const TVirtualBranchBrowsable* GetParent() const { return fParent; }
64
65 /** return the type of this browsable object */
66 TClass *GetClassType() const { return fClass; }
67
68 /** return whether the type of this browsable object is a pointer */
70
71 TList *GetLeaves() const;
72
73 // static void Register() has to be implemented for all derived classes!
74 // static void Unregister() has to be implemented for all derived classes!
75
76protected:
77 TVirtualBranchBrowsable(const TBranch *b, TClass *type, Bool_t typeIsPointer,
78 const TVirtualBranchBrowsable *parent = nullptr);
80 const TVirtualBranchBrowsable *parent, TClass *&contained);
81 static std::list<MethodCreateListOfBrowsables_t>& GetRegisteredGenerators();
84 /** sets the type of this browsable object */
86
87 /** sets whether the type of this browsable object is a pointer */
89
90private:
91 static void RegisterDefaultGenerators();
92 const TBranch *fBranch{nullptr}; ///< pointer to the branch element representing the top object
93 const TVirtualBranchBrowsable *fParent{nullptr}; ///< parent method if this method is member of a returned class
94 TList *fLeaves{nullptr}; ///< pointer to leaves
95 TClass *fClass{nullptr}; ///< pointer to TClass representing our type (i.e. return type for methods), 0 if basic type
96 Bool_t fTypeIsPointer{kFALSE}; ///< return type is pointer to class
97 static std::list<MethodCreateListOfBrowsables_t> fgGenerators; ///< list of MethodCreateListOfBrowsables_t called by CreateListOfBrowsables
98 static Bool_t fgGeneratorsSet; ///< have we set the generators yet? empty is not good enough - user might have removed them
99 ClassDefOverride(TVirtualBranchBrowsable, 0); ///< Base class for helper objects used for browsing
100};
101
102
104public:
106
107 static Int_t GetBrowsables(TList &list, const TBranch *branch,
108 const TVirtualBranchBrowsable *parent = nullptr);
109
110 /** return our special icons */
111 const char* GetIconName() const override
112 {
113 if (IsFolder())
114 return "TMethodBrowsable-branch";
115 return "TMethodBrowsable-leaf";
116 }
117 static Bool_t IsMethodBrowsable(const TMethod *m);
118 static void Register();
119 static void Unregister();
120
121protected:
122 static void GetBrowsableMethodsForClass(TClass *cl, TList &list);
123 TMethodBrowsable(const TBranch *branch, TMethod *m,
124 const TVirtualBranchBrowsable *parent = nullptr);
125
126private:
127 TMethod *fMethod{nullptr}; // pointer to a method
128 ClassDefOverride(TMethodBrowsable,0); // Helper object to browse methods
129};
130
131
133public:
135
136 static Int_t GetBrowsables(TList &list, const TBranch *branch,
137 const TVirtualBranchBrowsable *parent = nullptr);
138 static void Register();
139 static void Unregister();
140
141protected:
142 TNonSplitBrowsable(const TStreamerElement *element, const TBranch *branch,
143 const TVirtualBranchBrowsable *parent = nullptr);
144
145private:
146 ClassDef(TNonSplitBrowsable, 0); // Helper object to browse unsplit objects
147};
148
149
151public:
153
154 void Browse(TBrowser *b) override;
155 static Int_t GetBrowsables(TList &list, const TBranch *branch,
156 const TVirtualBranchBrowsable *parent = nullptr);
157 /** return the string passed to TTree::Draw */
158 const char *GetDraw() const { return fDraw.Data(); }
159 static void Register();
160 static void Unregister();
161
162protected:
163 /** constructor, which sets the name and title according to the parameters
164 * (and thus differently than our base class TVirtualBranchBrowsable) */
165 TCollectionPropertyBrowsable(const char *name, const char *title,
166 const char *draw, const TBranch *branch,
167 const TVirtualBranchBrowsable *parent = nullptr) :
168 TVirtualBranchBrowsable(branch, 0, kFALSE, parent), fDraw(draw)
169 {
170 SetNameTitle(name, title);
171 }
172
173private:
174 TString fDraw; // string to send to TTree::Draw(), NOT by GetScope()!
175 ClassDefOverride(TCollectionPropertyBrowsable, 0); // Helper object to add browsable collection properties
176};
177
179public:
181
182 static Int_t GetBrowsables(TList &list, const TBranch *branch,
183 const TVirtualBranchBrowsable *parent = nullptr);
184 static void Register();
185 static void Unregister();
186
187protected:
189 const TVirtualBranchBrowsable* parent = nullptr);
190
191 ClassDef(TCollectionMethodBrowsable,0); // Helper object to browse a collection's methods
192};
193
194#endif // defined ROOT_TBranchBrowsable
#define b(i)
Definition: RSha256.hxx:100
int Int_t
Definition: RtypesCore.h:45
const Bool_t kFALSE
Definition: RtypesCore.h:101
bool Bool_t
Definition: RtypesCore.h:63
const Bool_t kTRUE
Definition: RtypesCore.h:100
#define ClassDef(name, id)
Definition: Rtypes.h:325
char name[80]
Definition: TGX11.cxx:110
int type
Definition: TGX11.cxx:121
A Branch for the case of an object.
A TTree is a list of TBranches.
Definition: TBranch.h:89
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:80
TCollectionMethodBrowsable extends TCollectionPropertyBrowsable by showing all methods of the collect...
static void Register()
Wrapper for the registration method.
static Int_t GetBrowsables(TList &list, const TBranch *branch, const TVirtualBranchBrowsable *parent=nullptr)
This methods fills list with TMethodBrowsables for the branch's or parent's collection class and its ...
TCollectionMethodBrowsable(const TBranch *branch, TMethod *m, const TVirtualBranchBrowsable *parent=nullptr)
Constructor, see TMethodBrowsable's constructor.
static void Unregister()
Wrapper for the registration method.
A tiny browser helper object (and its generator) for adding a virtual (as in "not actually part of th...
static void Register()
Wrapper for the registration method.
TCollectionPropertyBrowsable(const char *name, const char *title, const char *draw, const TBranch *branch, const TVirtualBranchBrowsable *parent=nullptr)
constructor, which sets the name and title according to the parameters (and thus differently than our...
static Int_t GetBrowsables(TList &list, const TBranch *branch, const TVirtualBranchBrowsable *parent=nullptr)
If the element to browse (given by either parent of branch) contains a collection (TClonesArray or so...
static void Unregister()
Wrapper for the registration method.
ClassDefOverride(TCollectionPropertyBrowsable, 0)
const char * GetDraw() const
return the string passed to TTree::Draw
void Browse(TBrowser *b) override
Browses a TCollectionPropertyBrowsable.
A doubly linked list.
Definition: TList.h:44
This helper object allows the browsing of methods of objects stored in branches.
static Int_t GetBrowsables(TList &list, const TBranch *branch, const TVirtualBranchBrowsable *parent=nullptr)
This methods fills list with TMethodBrowsables for the branch's or parent's class and its base classe...
static void GetBrowsableMethodsForClass(TClass *cl, TList &list)
Given a class, this methods fills list with TMethodBrowsables for the class and its base classes,...
static Bool_t IsMethodBrowsable(const TMethod *m)
A TMethod is browsable if it is const, public and not pure virtual, if does not have any parameter wi...
TMethodBrowsable(const TBranch *branch, TMethod *m, const TVirtualBranchBrowsable *parent=nullptr)
Constructor.
static void Unregister()
Wrapper for the registration method.
static void Register()
Wrapper for the registration method.
ClassDefOverride(TMethodBrowsable, 0)
const char * GetIconName() const override
return our special icons
Each ROOT class (see TClass) has a linked list of methods.
Definition: TMethod.h:38
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
virtual void SetNameTitle(const char *name, const char *title)
Set all the TNamed parameters (name and title).
Definition: TNamed.cxx:154
Allows a TBrowser to browse non-split branches as if they were split.
TNonSplitBrowsable(const TStreamerElement *element, const TBranch *branch, const TVirtualBranchBrowsable *parent=nullptr)
Constructor.
static Int_t GetBrowsables(TList &list, const TBranch *branch, const TVirtualBranchBrowsable *parent=nullptr)
Given either a branch "branch" or a "parent" TVirtualBranchBrowsable, we fill "list" with objects of ...
static void Unregister()
Wrapper for the registration method.
static void Register()
Wrapper for the registration method.
Basic string class.
Definition: TString.h:136
const char * Data() const
Definition: TString.h:369
TVirtualBranchBrowsable is a base class (not really abstract, but useless by itself) for helper objec...
void SetType(TClass *type)
sets the type of this browsable object
const TBranch * fBranch
pointer to the branch element representing the top object
const TBranch * GetBranch() const
return the parent branch (might be many levels up)
static TClass * GetCollectionContainedType(const TBranch *b, const TVirtualBranchBrowsable *parent, TClass *&contained)
Check whether the branch (or the parent) contains a collection.
Bool_t IsFolder() const override
check whether we have sub-elements
~TVirtualBranchBrowsable()
Destructor. Delete our leaves.
const TVirtualBranchBrowsable * GetParent() const
return the parent TVirtualBranchBrowsable
TList * GetLeaves() const
Return list of leaves. If not set up yet we'll create them.
static void RegisterGenerator(MethodCreateListOfBrowsables_t generator)
Adds a generator to be called when browsing branches.
void GetScope(TString &scope) const
Returns the full name for TTree::Draw to draw *this.
TVirtualBranchBrowsable(const TBranch *b, TClass *type, Bool_t typeIsPointer, const TVirtualBranchBrowsable *parent=nullptr)
Constructor setting all members according to parameters.
static std::list< MethodCreateListOfBrowsables_t > fgGenerators
list of MethodCreateListOfBrowsables_t called by CreateListOfBrowsables
ClassDefOverride(TVirtualBranchBrowsable, 0)
Base class for helper objects used for browsing.
void SetTypeIsPointer(Bool_t set=kTRUE)
sets whether the type of this browsable object is a pointer
const char * GetIconName() const override
return icon shown when browsing a TVirtualBranchBrowsable
TList * fLeaves
pointer to leaves
Bool_t TypeIsPointer() const
return whether the type of this browsable object is a pointer
static Int_t FillListOfBrowsables(TList &list, const TBranch *branch, const TVirtualBranchBrowsable *parent=nullptr)
Askes all registered generators to fill their browsables into the list.
void Browse(TBrowser *b) override
Calls TTree::Draw on the method if return type is not a class; otherwise expands returned object's "f...
Bool_t fTypeIsPointer
return type is pointer to class
static std::list< MethodCreateListOfBrowsables_t > & GetRegisteredGenerators()
returns the list of registered generator methods
Int_t(* MethodCreateListOfBrowsables_t)(TList &, const TBranch *branch, const TVirtualBranchBrowsable *parent)
static void UnregisterGenerator(MethodCreateListOfBrowsables_t generator)
Removes a generator from the list of generators to be called when browsing branches.
static void RegisterDefaultGenerators()
Adds the default generators.
static Bool_t fgGeneratorsSet
have we set the generators yet? empty is not good enough - user might have removed them
const TVirtualBranchBrowsable * fParent
parent method if this method is member of a returned class
TClass * fClass
pointer to TClass representing our type (i.e. return type for methods), 0 if basic type
TClass * GetClassType() const
return the type of this browsable object
auto * m
Definition: textangle.C:8