Logo ROOT  
Reference Guide
TListOfEnumsWithLock.cxx
Go to the documentation of this file.
1// @(#)root/cont
2// Author: Bianca-Cristina Cristescu February 2014
3
4/*************************************************************************
5 * Copyright (C) 1995-2013, 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/** \class TListOfEnumsWithLock
13A collection of TEnum objects designed for fast access given a
14DeclId_t and for keep track of TEnum that were described
15unloaded enum.
16*/
17
18#include <forward_list>
19
21#include "TClass.h"
22#include "TExMap.h"
23#include "TEnum.h"
24#include "TGlobal.h"
25#include "TInterpreter.h"
26#include "TVirtualMutex.h"
27
29
30////////////////////////////////////////////////////////////////////////////////
31
34{
35}
36
37////////////////////////////////////////////////////////////////////////////////
38/// Destructor.
39
41{
42}
43
44////////////////////////////////////////////////////////////////////////////////
45/// Add object at the beginning of the list.
46
48{
51}
52
53////////////////////////////////////////////////////////////////////////////////
54/// Add object at the beginning of the list and also store option.
55/// Storing an option is useful when one wants to change the behaviour
56/// of an object a little without having to create a complete new
57/// copy of the object. This feature is used, for example, by the Draw()
58/// method. It allows the same object to be drawn in different ways.
59
61{
63 TListOfEnums::AddFirst(obj, opt);
64}
65
66////////////////////////////////////////////////////////////////////////////////
67/// Add object at the end of the list.
68
70{
73}
74
75////////////////////////////////////////////////////////////////////////////////
76/// Add object at the end of the list and also store option.
77/// Storing an option is useful when one wants to change the behaviour
78/// of an object a little without having to create a complete new
79/// copy of the object. This feature is used, for example, by the Draw()
80/// method. It allows the same object to be drawn in different ways.
81
83{
85 TListOfEnums::AddLast(obj, opt);
86}
87
88////////////////////////////////////////////////////////////////////////////////
89/// Insert object at location idx in the list.
90
92{
94 TListOfEnums::AddAt(obj, idx);
95}
96
97////////////////////////////////////////////////////////////////////////////////
98/// Insert object after object after in the list.
99
101{
103 TListOfEnums::AddAfter(after, obj);
104}
105
106////////////////////////////////////////////////////////////////////////////////
107/// Insert object after object after in the list.
108
110{
112 TListOfEnums::AddAfter(after, obj);
113}
114
115////////////////////////////////////////////////////////////////////////////////
116/// Insert object before object before in the list.
117
119{
121 TListOfEnums::AddBefore(before, obj);
122}
123
124////////////////////////////////////////////////////////////////////////////////
125/// Insert object before object before in the list.
126
128{
130 TListOfEnums::AddBefore(before, obj);
131}
132
133////////////////////////////////////////////////////////////////////////////////
134/// Remove all objects from the list. Does not delete the objects unless
135/// the THashList is the owner (set via SetOwner()).
136
138{
140 TListOfEnums::Clear(option);
141}
142
143////////////////////////////////////////////////////////////////////////////////
144/// Delete all TDataMember object files.
145
147{
149 TListOfEnums::Delete(option);
150}
151
152////////////////////////////////////////////////////////////////////////////////
153/// Specialize FindObject to do search for the
154/// a enum just by name or create it if its not already in the list
155
157{
160 if (!result) {
161
162
164 if (GetClass()) decl = gInterpreter->GetEnum(GetClass(), name);
165 else decl = gInterpreter->GetEnum(nullptr, name);
166 if (decl) result = const_cast<TListOfEnumsWithLock *>(this)->Get(decl, name);
167 }
168 return result;
169}
170
171
172////////////////////////////////////////////////////////////////////////////////
173
175{
177 return TListOfEnums::FindObject(obj);
178}
179
180////////////////////////////////////////////////////////////////////////////////
181/// Return an object from the list of enums *if and only if* is has already
182/// been loaded in the list. This is an internal routine.
183
185{
188}
189
190////////////////////////////////////////////////////////////////////////////////
191/// Remove object from this collection and recursively remove the object
192/// from all other objects (and collections).
193/// This function overrides TCollection::RecursiveRemove that calls
194/// the Remove function. THashList::Remove cannot be called because
195/// it uses the hash value of the hash table. This hash value
196/// is not available anymore when RecursiveRemove is called from
197/// the TObject destructor.
198
200{
201 if (!obj) return;
202
205}
206
207////////////////////////////////////////////////////////////////////////////////
208/// Remove object from the list.
209
211{
213 return TListOfEnums::Remove(obj);
214}
215
216////////////////////////////////////////////////////////////////////////////////
217/// Remove object via its objlink from the list.
218
220{
221 if (!lnk) return nullptr;
222
224 return TListOfEnums::Remove(lnk);
225}
226
227////////////////////////////////////////////////////////////////////////////////
228
230{
232 return new TListOfEnumsWithLockIter(this,dir);
233}
234
235////////////////////////////////////////////////////////////////////////////////
236
238{
240 return TListOfEnums::At(idx);
241}
242
243////////////////////////////////////////////////////////////////////////////////
244
246{
248 return TListOfEnums::After(obj);
249}
250
251////////////////////////////////////////////////////////////////////////////////
252
254{
256 return TListOfEnums::Before(obj);
257}
258
259////////////////////////////////////////////////////////////////////////////////
260
262{
264 return TListOfEnums::First();
265}
266
267////////////////////////////////////////////////////////////////////////////////
268
270{
273}
274
275////////////////////////////////////////////////////////////////////////////////
276
278{
280 return TListOfEnums::GetObjectRef(obj);
281}
282
283////////////////////////////////////////////////////////////////////////////////
284
286{
288 return TListOfEnums::Last();
289}
290
291////////////////////////////////////////////////////////////////////////////////
292
294{
296 return TListOfEnums::LastLink();
297}
298
299
300////////////////////////////////////////////////////////////////////////////////
301
303{
305 return TListOfEnums::GetLast();
306}
307
308////////////////////////////////////////////////////////////////////////////////
309
311{
313 return TListOfEnums::IndexOf(obj);
314}
315
316
317////////////////////////////////////////////////////////////////////////////////
318
320{
322 return TListOfEnums::GetSize();
323}
324
325/** \class TListOfEnumsWithLockIter
326Iterator for TListOfEnumsWithLock.
327*/
328
330
331////////////////////////////////////////////////////////////////////////////////
332
334TListIter(l,dir) {}
335
336////////////////////////////////////////////////////////////////////////////////
337
339{
341 return TListIter::Next();
342}
int Int_t
Definition: RtypesCore.h:45
bool Bool_t
Definition: RtypesCore.h:63
const char Option_t
Definition: RtypesCore.h:66
#define ClassImp(name)
Definition: Rtypes.h:364
char name[80]
Definition: TGX11.cxx:110
R__EXTERN TVirtualMutex * gInterpreterMutex
Definition: TInterpreter.h:44
#define gInterpreter
Definition: TInterpreter.h:562
#define R__LOCKGUARD(mutex)
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:80
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
Definition: TCollection.h:184
The TEnum class implements the enum type.
Definition: TEnum.h:33
TObject * FindObject(const char *name) const
Find object using its name.
Definition: THashList.cxx:262
TDictionary::DeclId_t DeclId_t
Definition: TInterpreter.h:290
Iterator abstract base class.
Definition: TIterator.h:30
Iterator of linked list.
Definition: TList.h:200
TObject * Next()
Return next object in the list. Returns 0 when no more objects in list.
Definition: TList.cxx:1111
Iterator for TListOfEnumsWithLock.
TListOfEnumsWithLockIter(const TListOfEnumsWithLock *l, Bool_t dir=kIterForward)
TObject * Next()
Return next object in the list. Returns 0 when no more objects in list.
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
TObject * Last() const override
Return the last object in the list. Returns 0 when list is empty.
TIterator * MakeIterator(Bool_t dir=kIterForward) const override
Return a list iterator.
TEnum * GetObject(const char *) const override
Return an object from the list of enums if and only if is has already been loaded in the list.
void AddBefore(const TObject *before, TObject *obj) override
Insert object before object before in the list.
TObject * FindObject(const TObject *obj) const override
Find object using its hash value (returned by its Hash() member).
TObjLink * LastLink() const override
Int_t GetSize() const override
Return the capacity of the collection, i.e.
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
void Delete(Option_t *option="") override
Delete all TDataMember object files.
TObject * Before(const TObject *obj) const override
Returns the object before object obj.
void AddFirst(TObject *obj) override
Add object at the beginning of the list.
TObject * Remove(TObject *obj) override
Remove object from the list.
void AddAfter(const TObject *after, TObject *obj) override
Insert object after object after in the list.
Int_t GetLast() const override
Returns index of last object in collection.
void AddAt(TObject *obj, Int_t idx) override
Insert object at location idx in the list.
~TListOfEnumsWithLock() override
Destructor.
void AddLast(TObject *obj) override
Add object at the end of the list.
void Clear(Option_t *option) override
Remove all objects from the list.
TObject ** GetObjectRef(const TObject *obj) const override
Return address of pointer to obj.
TObjLink * FirstLink() const override
TListOfEnumsWithLock(const TListOfEnumsWithLock &)=delete
Int_t IndexOf(const TObject *obj) const override
Return index of object in collection.
void RecursiveRemove(TObject *obj) override
Remove object from this collection and recursively remove the object from all other objects (and coll...
TObject * After(const TObject *obj) const override
Returns the object after object obj.
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
Definition: TListOfEnums.h:33
void AddBefore(const TObject *before, TObject *obj) override
Insert object before object before in the list.
TEnum * Get(DeclId_t id, const char *name)
Return (after creating it if necessary) the TEnum describing the enum corresponding to the Decl 'id'.
void Delete(Option_t *option="") override
Delete all TDataMember object files.
void AddAt(TObject *obj, Int_t idx) override
Insert object at location idx in the list.
void AddAfter(const TObject *after, TObject *obj) override
Insert object after object after in the list.
TClass * GetClass() const
Definition: TListOfEnums.h:62
TObject * Remove(TObject *obj) override
Remove object from the list.
void AddLast(TObject *obj) override
Add object at the end of the list.
void RecursiveRemove(TObject *obj) override
Remove object from this collection and recursively remove the object from all other objects (and coll...
void AddFirst(TObject *obj) override
Add object at the beginning of the list.
void Clear(Option_t *option) override
Remove all objects from the list.
virtual TObject * After(const TObject *obj) const
Returns the object after object obj.
Definition: TList.cxx:330
virtual TObjLink * LastLink() const
Definition: TList.h:111
virtual TObject ** GetObjectRef(const TObject *obj) const
Return address of pointer to obj.
Definition: TList.cxx:671
virtual TObjLink * FirstLink() const
Definition: TList.h:108
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
Definition: TList.cxx:357
virtual TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
Definition: TList.cxx:693
virtual TObject * Before(const TObject *obj) const
Returns the object before object obj.
Definition: TList.cxx:371
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
Definition: TList.cxx:659
Mother of all ROOT objects.
Definition: TObject.h:37
virtual Int_t IndexOf(const TObject *obj) const
Return index of object in collection.
virtual Int_t GetLast() const
Returns index of last object in collection.
auto * l
Definition: textangle.C:4