Logo ROOT  
Reference Guide
TListOfDataMembers.h
Go to the documentation of this file.
1 // @(#)root/cont
2 // Author: Philippe Canal Aug 2013
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 #ifndef ROOT_TListOfDataMembers
13 #define ROOT_TListOfDataMembers
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TListOfDataMembers //
18 // //
19 // A collection of TDataMember objects designed for fast access given a //
20 // DeclId_t and for keep track of TDataMember that were described //
21 // unloaded member. //
22 // //
23 //////////////////////////////////////////////////////////////////////////
24 
25 #include "THashList.h"
26 
27 #include "TDictionary.h"
28 
29 class TExMap;
30 class TDataMember;
31 
33 {
34 private:
35  TClass *fClass; //! Context of this list. Not owned.
36 
37  TExMap *fIds; //! Map from DeclId_t to TDataMember*
38  THashList *fUnloaded; //! Holder of TDataMember for unloaded DataMembers.
39  Bool_t fIsLoaded; //! Mark whether Load was executed.
40  ULong64_t fLastLoadMarker; //! Represent interpreter state when we last did a full load.
41 
42  TListOfDataMembers(const TListOfDataMembers&); // not implemented
43  TListOfDataMembers& operator=(const TListOfDataMembers&); // not implemented
44 
45  void MapObject(TObject *obj);
46  void UnmapObject(TObject *obj);
47 
48 public:
50 
51  TListOfDataMembers(TClass *cl = 0);
52  // construct from a generic collection of data members objects
53  template<class DataMemberList>
54  TListOfDataMembers(DataMemberList & dmlist) :
55  fClass(0),fIds(0),fUnloaded(0),
57  {
58  for (auto * dataMember : dmlist)
59  Add(dataMember);
60  }
61 
63 
64  virtual void Clear(Option_t *option);
65  virtual void Delete(Option_t *option="");
66 
68  virtual TObject *FindObject(const char *name) const;
69 
70  TDictionary *Find(DeclId_t id) const;
72  TDictionary *Get(DataMemberInfo_t *info, bool skipChecks=kFALSE);
73 
74  Bool_t IsLoaded() const { return fIsLoaded; }
75  void AddFirst(TObject *obj);
76  void AddFirst(TObject *obj, Option_t *opt);
77  void AddLast(TObject *obj);
78  void AddLast(TObject *obj, Option_t *opt);
79  void AddAt(TObject *obj, Int_t idx);
80  void AddAfter(const TObject *after, TObject *obj);
81  void AddAfter(TObjLink *after, TObject *obj);
82  void AddBefore(const TObject *before, TObject *obj);
83  void AddBefore(TObjLink *before, TObject *obj);
84 
85  TClass *GetClass() const { return fClass; }
86  void SetClass(TClass* cl) { fClass = cl; }
87  void Update(TDictionary *member);
88 
89  void RecursiveRemove(TObject *obj);
90  TObject *Remove(TObject *obj);
91  TObject *Remove(TObjLink *lnk);
92 
93  void Load();
94  void Unload();
95  void Unload(TDictionary *member);
96 
97  ClassDef(TListOfDataMembers,2); // List of TDataMembers for a class
98 };
99 
100 #endif // ROOT_TListOfDataMembers
kTRUE
const Bool_t kTRUE
Definition: RtypesCore.h:91
TListOfDataMembers::AddAt
void AddAt(TObject *obj, Int_t idx)
Insert object at location idx in the list.
Definition: TListOfDataMembers.cxx:122
TListOfDataMembers::Clear
virtual void Clear(Option_t *option)
Remove all objects from the list.
Definition: TListOfDataMembers.cxx:168
TListOfDataMembers::AddBefore
void AddBefore(const TObject *before, TObject *obj)
Insert object before object before in the list.
Definition: TListOfDataMembers.cxx:149
TListOfDataMembers::fUnloaded
THashList * fUnloaded
Map from DeclId_t to TDataMember*.
Definition: TListOfDataMembers.h:38
TListOfDataMembers::fClass
TClass * fClass
Definition: TListOfDataMembers.h:35
Int_t
int Int_t
Definition: RtypesCore.h:45
TDataMember
Definition: TDataMember.h:31
TListOfDataMembers::DeclId_t
TDictionary::DeclId_t DeclId_t
Definition: TListOfDataMembers.h:49
TListOfDataMembers::Delete
virtual void Delete(Option_t *option="")
Delete all TDataMember object files.
Definition: TListOfDataMembers.cxx:179
TListOfDataMembers::operator=
TListOfDataMembers & operator=(const TListOfDataMembers &)
TDictionary::DeclId_t
const typedef void * DeclId_t
Definition: TDictionary.h:209
bool
TListOfDataMembers::FindObject
virtual TObject * FindObject(const char *name) const
Specialize FindObject to do search for the a data member just by name or create it if its not already...
Definition: TListOfDataMembers.cxx:190
TListOfDataMembers::TListOfDataMembers
TListOfDataMembers(const TListOfDataMembers &)
Represent interpreter state when we last did a full load.
TDictionary.h
TListOfDataMembers::AddLast
void AddLast(TObject *obj)
Add object at the end of the list.
Definition: TListOfDataMembers.cxx:100
TListOfDataMembers::Unload
void Unload()
Mark 'all func' as being unloaded.
Definition: TListOfDataMembers.cxx:551
TListOfDataMembers::UnmapObject
void UnmapObject(TObject *obj)
Remove a pair<id, object> from the map of data members and their ids.
Definition: TListOfDataMembers.cxx:331
Option_t
const typedef char Option_t
Definition: RtypesCore.h:66
TListOfDataMembers
Definition: TListOfDataMembers.h:32
TListOfDataMembers::RecursiveRemove
void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
Definition: TListOfDataMembers.cxx:362
TListOfDataMembers::AddFirst
void AddFirst(TObject *obj)
Add object at the beginning of the list.
Definition: TListOfDataMembers.cxx:78
TListOfDataMembers::Find
TDictionary * Find(DeclId_t id) const
Return (after creating it if necessary) the TDataMember describing the data member corresponding to t...
Definition: TListOfDataMembers.cxx:213
THashList
Definition: THashList.h:34
TListOfDataMembers::fLastLoadMarker
ULong64_t fLastLoadMarker
Mark whether Load was executed.
Definition: TListOfDataMembers.h:40
THashList::FindObject
TObject * FindObject(const char *name) const
Find object using its name.
Definition: THashList.cxx:262
TListOfDataMembers::IsLoaded
Bool_t IsLoaded() const
Definition: TListOfDataMembers.h:74
TListOfDataMembers::GetClass
TClass * GetClass() const
Definition: TListOfDataMembers.h:85
kFALSE
const Bool_t kFALSE
Definition: RtypesCore.h:92
TListOfDataMembers::MapObject
void MapObject(TObject *obj)
Add a pair<id, object> to the map of data members and their ids.
Definition: TListOfDataMembers.cxx:58
TListOfDataMembers::fIds
TExMap * fIds
Context of this list. Not owned.
Definition: TListOfDataMembers.h:37
TListOfDataMembers::AddAfter
void AddAfter(const TObject *after, TObject *obj)
Insert object after object after in the list.
Definition: TListOfDataMembers.cxx:131
TDictionary
Definition: TDictionary.h:162
THashList.h
ULong64_t
unsigned long long ULong64_t
Definition: RtypesCore.h:74
TListOfDataMembers::Load
void Load()
Load all the DataMembers known to the interpreter for the scope 'fClass' into this collection.
Definition: TListOfDataMembers.cxx:408
TListOfDataMembers::Remove
TObject * Remove(TObject *obj)
Remove object from the list.
Definition: TListOfDataMembers.cxx:375
TListOfDataMembers::Get
TDictionary * Get(DeclId_t id)
Return (after creating it if necessary) the TDataMember describing the data member corresponding to t...
Definition: TListOfDataMembers.cxx:224
TClass
Definition: TClass.h:80
TList::Add
virtual void Add(TObject *obj)
Definition: TList.h:87
TObject
Definition: TObject.h:37
ClassDef
#define ClassDef(name, id)
Definition: Rtypes.h:325
name
char name[80]
Definition: TGX11.cxx:110
TExMap
Definition: TExMap.h:33
TListOfDataMembers::~TListOfDataMembers
~TListOfDataMembers()
Destructor.
Definition: TListOfDataMembers.cxx:47
TListOfDataMembers::fIsLoaded
Bool_t fIsLoaded
Holder of TDataMember for unloaded DataMembers.
Definition: TListOfDataMembers.h:39
TListOfDataMembers::Update
void Update(TDictionary *member)
Move the member or data member to the expect set of list.
Definition: TListOfDataMembers.cxx:506
TListOfDataMembers::SetClass
void SetClass(TClass *cl)
Definition: TListOfDataMembers.h:86
TListOfDataMembers::TListOfDataMembers
TListOfDataMembers(DataMemberList &dmlist)
Definition: TListOfDataMembers.h:54