Logo ROOT   6.10/00
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TViewPubDataMembers.h
Go to the documentation of this file.
1 // @(#)root/meta:$Id$
2 // Author: Philippe Canal October 2013
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, 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_TViewPubDataMembers
13 #define ROOT_TViewPubDataMembers
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TViewPubDataMembers //
18 // //
19 // //
20 // //
21 //////////////////////////////////////////////////////////////////////////
22 
23 #include "TList.h"
24 
25 class TClass;
26 
27 
28 class TViewPubDataMembers : public TList {
29 
30 protected:
31  TList fClasses; // list of the all the (base) classes for which we list methods.
32 
33 private:
34  TViewPubDataMembers(const TViewPubDataMembers&); // not implemented
35  TViewPubDataMembers& operator=(const TViewPubDataMembers&); // not implemented
36 
37 public:
38  TViewPubDataMembers(TClass *cl = 0);
39  virtual ~TViewPubDataMembers();
40 
41  TObject *FindObject(const char *name) const;
42  TObject *FindObject(const TObject *obj) const;
43 
44  virtual TObject *At(Int_t idx) const;
45  virtual const TList *GetListOfClasses() const { return &fClasses; }
46  virtual Int_t GetSize() const;
47  virtual TIterator *MakeIterator(Bool_t dir = kIterForward) const;
48 
49  void Load();
50 
51  // All the following routines are explicitly disallow/unsupported for
52  // a view
53 protected:
54  void Clear(Option_t *option="");
55  void Delete(Option_t *option="");
56 
57  void AddFirst(TObject *obj);
58  void AddFirst(TObject *obj, Option_t *opt);
59  void AddLast(TObject *obj);
60  void AddLast(TObject *obj, Option_t *opt);
61  void AddAt(TObject *obj, Int_t idx);
62  void AddAfter(const TObject *after, TObject *obj);
63  void AddAfter(TObjLink *after, TObject *obj);
64  void AddBefore(const TObject *before, TObject *obj);
65  void AddBefore(TObjLink *before, TObject *obj);
66 
67  virtual TObject *After(const TObject *obj) const;
68  virtual TObject *Before(const TObject *obj) const;
69  virtual TObject *First() const;
70  virtual TObjLink *FirstLink() const;
71  virtual TObject **GetObjectRef(const TObject *obj) const;
72  virtual TObject *Last() const;
73  virtual TObjLink *LastLink() const;
74 
75  void RecursiveRemove(TObject *obj);
76  TObject *Remove(TObject *obj);
77  TObject *Remove(TObjLink *lnk);
78 
79 public:
80  // ClassDef(THashList,0) //Doubly linked list with hashtable for lookup
81 };
82 
83 // Preventing warnings with -Weffc++ in GCC since it is a false positive for the TListIter destructor.
84 #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40600
85 #pragma GCC diagnostic push
86 #pragma GCC diagnostic ignored "-Weffc++"
87 #endif
88 
89 //////////////////////////////////////////////////////////////////////////
90 // //
91 // TViewPubDataMembersIter //
92 // //
93 // Iterator of view of linked list. `1234 //
94 // //
95 //////////////////////////////////////////////////////////////////////////
97 public std::iterator<std::bidirectional_iterator_tag,
98 TObject*, std::ptrdiff_t,
99 const TObject**, const TObject*&>
100 {
101 protected:
102  const TList *fView; //View we are iterating over.
103  TIter fClassIter; //iterator over the classes
104  TIter fIter; //iterator over the members of the current class
105  Bool_t fStarted; //iteration started
106  Bool_t fDirection; //iteration direction
107 
109 
110 public:
114  TIterator &operator=(const TIterator &rhs);
116 
117  const TCollection *GetCollection() const { return fView; }
118  TObject *Next();
119  void Reset();
120  Bool_t operator!=(const TIterator &aIter) const;
121  Bool_t operator!=(const TViewPubDataMembersIter &aIter) const;
122  TObject *operator*() const { return *fIter; }
123 
124  // ClassDef(TViewPubDataMembersIter,0) //Linked list iterator
125 };
126 
127 #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40600
128 #pragma GCC diagnostic pop
129 #endif
130 
131 #endif // ROOT_TViewPubDataMembers
virtual TIterator * MakeIterator(Bool_t dir=kIterForward) const
Return a list iterator.
virtual TObjLink * FirstLink() const
FirstLink is not allowed in this class.
virtual TObject * Before(const TObject *obj) const
Before is not allowed in this class.
void AddLast(TObject *obj)
AddLast is not allowed in this class.
virtual TObject ** GetObjectRef(const TObject *obj) const
GetObjectRef is not allowed in this class.
TObject * Next()
Return next object in the list. Returns 0 when no more objects in list.
const char Option_t
Definition: RtypesCore.h:62
virtual TObject * First() const
First is not allowed in this class.
const TCollection * GetCollection() const
virtual ~TViewPubDataMembers()
Default destructor.
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TViewPubDataMembers(const TViewPubDataMembers &)
Iterator abstract base class.
Definition: TIterator.h:30
TObject * FindObject(const char *name) const
Find an object in this list using its name.
Bool_t operator!=(const TIterator &aIter) const
This operator compares two TIterator objects.
TObject * Remove(TObject *obj)
Remove is not allowed in this class.
void AddBefore(const TObject *before, TObject *obj)
AddBefore is not allowed in this class.
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
const Bool_t kIterForward
Definition: TCollection.h:37
void AddFirst(TObject *obj)
AddFirst is not allowed in this class.
Iterator of over the view&#39;s content.
A doubly linked list.
Definition: TList.h:43
View implementing the TList interface and giving access all the TDictionary describing public data me...
void RecursiveRemove(TObject *obj)
RecursiveRemove is not allowed in this class.
TObject * operator*() const
Return current object or nullptr.
void Delete(Option_t *option="")
Delete is not allowed in this class.
virtual TObjLink * LastLink() const
LastLink is not allowed in this class.
Collection abstract base class.
Definition: TCollection.h:42
TLine * l
Definition: textangle.C:4
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:71
TViewPubDataMembers & operator=(const TViewPubDataMembers &)
void Reset()
Reset list iterator.
const Bool_t kFALSE
Definition: RtypesCore.h:92
void AddAfter(const TObject *after, TObject *obj)
AddAfter is not allowed in this class.
void AddAt(TObject *obj, Int_t idx)
AddAt is not allowed in this class.
virtual TObject * After(const TObject *obj) const
After is not allowed in this class.
virtual TObject * Last() const
Last is not allowed in this class.
Mother of all ROOT objects.
Definition: TObject.h:37
void Clear(Option_t *option="")
Clear is not allowed in this class.
virtual Int_t GetSize() const
Return the total number of public data members(currently loaded in the list of DataMembers) in this c...
void Load()
Load all the DataMembers known to the interpreter for the scope &#39;fClass&#39; and all its bases classes...
char name[80]
Definition: TGX11.cxx:109
TIterator & operator=(const TIterator &rhs)
Overridden assignment operator.
virtual const TList * GetListOfClasses() const