Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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:92
bool Bool_t
Definition RtypesCore.h:63
const Bool_t kTRUE
Definition RtypesCore.h:91
#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 ...
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...
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.
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.
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