Logo ROOT  
Reference Guide
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
25class TClass;
26
27
28class TViewPubDataMembers : public TList {
29
30protected:
31 TList fClasses; // list of the all the (base) classes for which we list methods.
32
33private:
36
37public:
38 TViewPubDataMembers(TClass *cl = nullptr);
39 virtual ~TViewPubDataMembers();
40
41 TObject *FindObject(const char *name) const override;
42 TObject *FindObject(const TObject *obj) const override;
43
44 TObject *At(Int_t idx) const override;
45 virtual const TList *GetListOfClasses() const { return &fClasses; }
46 Int_t GetSize() const override;
47 TIterator *MakeIterator(Bool_t dir = kIterForward) const override;
48
49 void Load();
50
51 // All the following routines are explicitly disallow/unsupported for
52 // a view
53protected:
54 void Clear(Option_t *option="") override;
55 void Delete(Option_t *option="") override;
56
57 void AddFirst(TObject *obj) override;
58 void AddFirst(TObject *obj, Option_t *opt) override;
59 void AddLast(TObject *obj) override;
60 void AddLast(TObject *obj, Option_t *opt) override;
61 void AddAt(TObject *obj, Int_t idx) override;
62 void AddAfter(const TObject *after, TObject *obj) override;
63 void AddAfter(TObjLink *after, TObject *obj) override;
64 void AddBefore(const TObject *before, TObject *obj) override;
65 void AddBefore(TObjLink *before, TObject *obj) override;
66
67 TObject *After(const TObject *obj) const override;
68 TObject *Before(const TObject *obj) const override;
69 TObject *First() const override;
70 TObjLink *FirstLink() const override;
71 TObject **GetObjectRef(const TObject *obj) const override;
72 TObject *Last() const override;
73 TObjLink *LastLink() const override;
74
75 void RecursiveRemove(TObject *obj) override;
76 TObject *Remove(TObject *obj) override;
77 TObject *Remove(TObjLink *lnk) override;
78
79public:
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. ` //
94// //
95//////////////////////////////////////////////////////////////////////////
97public:
98 using iterator_category = std::bidirectional_iterator_tag;
100 using difference_type = std::ptrdiff_t;
101 using pointer = const TObject **;
102 using reference = const TObject *&;
103
104protected:
105 const TList *fView; //View we are iterating over.
106 TIter fClassIter; //iterator over the classes
107 TIter fIter; //iterator over the members of the current class
108 Bool_t fStarted; //iteration started
109 Bool_t fDirection; //iteration direction
110
112
113public:
117 TIterator &operator=(const TIterator &rhs) override;
119
120 const TCollection *GetCollection() const override { return fView; }
121 TObject *Next() override;
122 void Reset() override;
123 Bool_t operator!=(const TIterator &aIter) const override;
124 Bool_t operator!=(const TViewPubDataMembersIter &aIter) const;
125 TObject *operator*() const override { return *fIter; }
126
127 // ClassDefInline does not yet support non default constructible classes
128 // ClassDefInline(TViewPubDataMembersIter,0)
129};
130
131#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40600
132#pragma GCC diagnostic pop
133#endif
134
135#endif // ROOT_TViewPubDataMembers
bool Bool_t
Definition: RtypesCore.h:63
int Int_t
Definition: RtypesCore.h:45
const Bool_t kFALSE
Definition: RtypesCore.h:101
const char Option_t
Definition: RtypesCore.h:66
#define ClassDefInlineOverride(name, id)
Definition: Rtypes.h:351
const Bool_t kIterForward
Definition: TCollection.h:42
Option_t Option_t option
char name[80]
Definition: TGX11.cxx:110
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:80
Collection abstract base class.
Definition: TCollection.h:65
Iterator abstract base class.
Definition: TIterator.h:30
A doubly linked list.
Definition: TList.h:44
Mother of all ROOT objects.
Definition: TObject.h:37
Iterator of over the view's content.
TObject * Next() override
Return next object in the list. Returns 0 when no more objects in list.
TObject * operator*() const override
Return current object or nullptr.
void Reset() override
Reset list iterator.
const TCollection * GetCollection() const override
std::bidirectional_iterator_tag iterator_category
Bool_t operator!=(const TIterator &aIter) const override
This operator compares two TIterator objects.
TIterator & operator=(const TIterator &rhs) override
Overridden assignment operator.
View implementing the TList interface and giving access all the TDictionary describing public data me...
TObjLink * FirstLink() const override
FirstLink is not allowed in this class.
TObject * Last() const override
Last is not allowed in this class.
void Load()
Load all the DataMembers known to the interpreter for the scope 'fClass' and all its bases classes.
virtual const TList * GetListOfClasses() const
TObject * First() const override
First is not allowed in this class.
Int_t GetSize() const override
Return the total number of public data members(currently loaded in the list of DataMembers) in this c...
void Delete(Option_t *option="") override
Delete is not allowed in this class.
TObject ** GetObjectRef(const TObject *obj) const override
GetObjectRef is not allowed in this class.
TViewPubDataMembers & operator=(const TViewPubDataMembers &)=delete
void AddBefore(const TObject *before, TObject *obj) override
AddBefore is not allowed in this class.
TViewPubDataMembers(const TViewPubDataMembers &)=delete
void AddFirst(TObject *obj) override
AddFirst is not allowed in this class.
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
void AddLast(TObject *obj) override
AddLast is not allowed in this class.
void AddAfter(const TObject *after, TObject *obj) override
AddAfter is not allowed in this class.
TObject * Remove(TObject *obj) override
Remove is not allowed in this class.
TObject * Before(const TObject *obj) const override
Before is not allowed in this class.
void Clear(Option_t *option="") override
Clear is not allowed in this class.
void RecursiveRemove(TObject *obj) override
RecursiveRemove is not allowed in this class.
TIterator * MakeIterator(Bool_t dir=kIterForward) const override
Return a list iterator.
void AddAt(TObject *obj, Int_t idx) override
AddAt is not allowed in this class.
TObjLink * LastLink() const override
LastLink is not allowed in this class.
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
TObject * After(const TObject *obj) const override
After is not allowed in this class.
virtual ~TViewPubDataMembers()
Default destructor.
auto * l
Definition: textangle.C:4