12 #ifndef ROOT_TBranchBrowsable
13 #define ROOT_TBranchBrowsable
27 class TStreamerElement;
29 class TVirtualBranchBrowsable:
public TNamed {
35 typedef Int_t (*MethodCreateListOfBrowsables_t)
36 (TList&,
const TBranch* branch,
const TVirtualBranchBrowsable* parent);
38 ~TVirtualBranchBrowsable();
40 void Browse(TBrowser *b);
41 const char *GetIconName()
const {
43 if (IsFolder())
return "TBranchElement-folder";
44 else return "TBranchElement-leaf";
46 void GetScope(TString & scope)
const;
47 Bool_t IsFolder()
const {
49 return (GetLeaves() && GetLeaves()->GetSize()); }
51 static Int_t FillListOfBrowsables(TList& list,
const TBranch* branch,
52 const TVirtualBranchBrowsable* parent=0);
54 const TBranch* GetBranch()
const {
57 const TVirtualBranchBrowsable* GetParent()
const {
60 TClass* GetClassType()
const {
63 Bool_t TypeIsPointer()
const {
65 return fTypeIsPointer; }
66 TList* GetLeaves()
const;
72 TVirtualBranchBrowsable(
const TBranch* b, TClass* type, Bool_t typeIsPointer,
73 const TVirtualBranchBrowsable* parent=0);
74 static TClass* GetCollectionContainedType(
const TBranch* b,
75 const TVirtualBranchBrowsable* parent, TClass* &contained);
76 static std::list<MethodCreateListOfBrowsables_t>& GetRegisteredGenerators();
77 static void RegisterGenerator(MethodCreateListOfBrowsables_t generator);
78 static void UnregisterGenerator(MethodCreateListOfBrowsables_t generator);
79 void SetType(TClass* type) {
82 void SetTypeIsPointer(Bool_t set=kTRUE) {
87 static void RegisterDefaultGenerators();
88 const TBranch *fBranch;
89 const TVirtualBranchBrowsable *fParent;
92 Bool_t fTypeIsPointer;
93 static std::list<MethodCreateListOfBrowsables_t> fgGenerators;
94 static Bool_t fgGeneratorsSet;
95 ClassDef(TVirtualBranchBrowsable, 0);
99 class TMethodBrowsable:
public TVirtualBranchBrowsable {
101 ~TMethodBrowsable() {};
103 static Int_t GetBrowsables(TList& list,
const TBranch* branch,
104 const TVirtualBranchBrowsable* parent=0);
105 const char *GetIconName()
const {
107 if (IsFolder())
return "TMethodBrowsable-branch";
108 return "TMethodBrowsable-leaf";}
109 static Bool_t IsMethodBrowsable(
const TMethod* m);
110 static void Register();
111 static void Unregister();
114 static void GetBrowsableMethodsForClass(TClass* cl, TList& list);
115 TMethodBrowsable(
const TBranch* branch, TMethod* m,
116 const TVirtualBranchBrowsable* parent=0);
120 ClassDef(TMethodBrowsable,0);
124 class TNonSplitBrowsable:
public TVirtualBranchBrowsable {
126 ~TNonSplitBrowsable() {}
128 static Int_t GetBrowsables(TList& list,
const TBranch* branch,
129 const TVirtualBranchBrowsable* parent=0);
130 static void Register();
131 static void Unregister();
134 TNonSplitBrowsable(
const TStreamerElement* element,
const TBranch* branch,
135 const TVirtualBranchBrowsable* parent=0);
138 ClassDef(TNonSplitBrowsable, 0);
142 class TCollectionPropertyBrowsable:
public TVirtualBranchBrowsable {
144 ~TCollectionPropertyBrowsable() {}
146 void Browse(TBrowser *b);
147 static Int_t GetBrowsables(TList& list,
const TBranch* branch,
148 const TVirtualBranchBrowsable* parent=0);
149 const char* GetDraw()
const {
151 return fDraw.Data(); }
152 static void Register();
153 static void Unregister();
156 TCollectionPropertyBrowsable(
const char* name,
const char* title,
157 const char* draw,
const TBranch* branch,
const TVirtualBranchBrowsable* parent=0):
158 TVirtualBranchBrowsable(branch, 0, kFALSE, parent), fDraw(draw) {
161 SetNameTitle(name, title);
166 ClassDef(TCollectionPropertyBrowsable, 0);
169 class TCollectionMethodBrowsable:
public TMethodBrowsable {
171 ~TCollectionMethodBrowsable() {};
173 static Int_t GetBrowsables(TList& list,
const TBranch* branch,
174 const TVirtualBranchBrowsable* parent=0);
175 static void Register();
176 static void Unregister();
179 TCollectionMethodBrowsable(
const TBranch* branch, TMethod* m,
180 const TVirtualBranchBrowsable* parent=0);
182 ClassDef(TCollectionMethodBrowsable,0);
185 #endif // defined ROOT_TBranchBrowsable