Logo ROOT  
Reference Guide
TDictionary.h
Go to the documentation of this file.
1// @(#)root/meta:$Id$
2// Author: Fons Rademakers 20/06/96
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
13#ifndef ROOT_TDictionary
14#define ROOT_TDictionary
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TDictionary //
19// //
20// This class defines an abstract interface that must be implemented //
21// by all classes that contain dictionary information. //
22// //
23// The dictionary is defined by the followling classes: //
24// TDataType (typedef definitions) //
25// TGlobal (global variables) //
26// TFunction (global functions) //
27// TClass (classes) //
28// TBaseClass (base classes) //
29// TDataMember (class datamembers) //
30// TMethod (class methods) //
31// TMethodArg (method arguments) //
32// //
33// All the above classes implement the TDictionary abstract interface //
34// (note: the indentation shows aggregation not inheritance). //
35// The ROOT dictionary system provides a very extensive RTTI //
36// environment that facilitates a.o. object inspectors, object I/O, //
37// ROOT Trees, etc. Most of the type information is provided by the //
38// CINT C++ interpreter. //
39// //
40// TMethodCall (method call environment) //
41// //
42//////////////////////////////////////////////////////////////////////////
43
44#include "TNamed.h"
45
46#include "ESTLType.h"
47
48// The following are opaque type and are never really declared
49// The specific implementation of TInterpreter will cast the
50// value of pointer to this types to the correct type (possibly
51// distinct from these)
52class CallFunc_t;
53class ClassInfo_t;
54class BaseClassInfo_t;
55class DataMemberInfo_t;
56class FuncTempInfo_t;
57class MethodInfo_t;
58class MethodArgInfo_t;
59class MethodArgInfo_t;
60class TypeInfo_t;
61class TypedefInfo_t;
63
65 kIsClass = 0x00000001,
66 kIsStruct = 0x00000002,
67 kIsUnion = 0x00000004,
68 kIsEnum = 0x00000008,
69 kIsTypedef = 0x00000010,
70 kIsFundamental = 0x00000020,
71 kIsAbstract = 0x00000040,
72 kIsVirtual = 0x00000080,
73 kIsPureVirtual = 0x00000100,
74 kIsUnionMember = 0x00000100,
75 kIsPublic = 0x00000200,
76 kIsProtected = 0x00000400,
77 kIsPrivate = 0x00000800,
78 kIsPointer = 0x00001000,
79 kIsArray = 0x00002000,
80 kIsStatic = 0x00004000,
81 kIsDefault = 0x00008000,
82 kIsReference = 0x00010000,
83 kIsDirectInherit = 0x00020000,
84 kIsCCompiled = 0x00040000,
87 // 0x00080000 is available
88 kIsConstant = 0x00100000,
89 kIsVirtualBase = 0x00200000,
90 kIsConstPointer = 0x00400000,
91 kIsScopedEnum = 0x00800000,
92 // 0x01000000 is available
93 kIsConstexpr = 0x02000000,
94 kIsExplicit = 0x04000000,
95 kIsNamespace = 0x08000000,
96 kIsConstMethod = 0x10000000,
97 kIsUsing = 0x20000000,
98 kIsDefinedInStd = 0x40000000
99 // 0x80000000 is available
101
103/* The following are already defined
104 in EProperty and 'could' be part of this enums */
105/*
106 kIsAbstract = 0x00000040,
107 kIsVirtual = 0x00000080,
108 kIsPureVirtual = 0x00000100,
109 kIsPublic = 0x00000200,
110 kIsProtected = 0x00000400,
111 kIsPrivate = 0x00000800,
112 kIsStatic = 0x00004000,
113 kIsDefault = 0x00008000,
114 kIsConstexpr = 0x02000000
115 kIsExplicit = 0x04000000,
116 kIsConstMethod = 0x10000000,
117*/
118/* The following are already defined
119 in EProperty and related to the type of the return value */
120/*
121 kIsConstant = 0x00100000,
122 kIsPointer = 0x00001000,
123 kIsArray = 0x00002000,
124 kIsReference = 0x00010000,
125 kIsConstPointer = 0x00400000,
126*/
127 kIsConstructor = 0x00000001,
128 kIsConversion = 0x00000002,
129 kIsDestructor = 0x00000004,
130 kIsOperator = 0x00000008,
131 kIsInlined = 0x00000010,
132 kIsTemplateSpec= 0x00000020
134
136 kClassIsValid = 0x00000001,
139 kClassHasCtor = 0x00000030,
141 kClassHasAssignOpr = 0x00000080,
144 kClassHasDtor = 0x00000300,
145 kClassHasVirtual = 0x00001000,
146 kClassIsAbstract = 0x00002000
148
150 kParaNormal = 0, // not used
152 kParaP2P = 2, // not used
153 kParaP2P2P = 3, // not used
154 kParaRef = 100,
155 kParaRefP2P = 102, // not used
156 kParaRefP2P2P = 103 // not used
158
159namespace ROOT {
163 };
164}
165
166
167class TDictionary : public TNamed {
168
169private:
170 TDictAttributeMap *fAttributeMap{nullptr}; //pointer to a class attribute map
171 ULong64_t fUpdatingTransactionCount{0}; //!the Cling ID of the transaction that last updated the object
172
173protected:
175
176public:
179 TDictionary(const TDictionary& dict);
180 virtual ~TDictionary();
181
182 TDictionary& operator=(const TDictionary& other);
183
184 void CreateAttributeMap();
186 {
187 //Get the TDictAttributeMap pointer to be able to add attribute
188 //pairs key-value to the TClass.
189
190 return fAttributeMap;
191 }
192 virtual Long_t Property() const = 0;
193 static TDictionary* GetDictionary(const char* name);
194 static TDictionary* GetDictionary(const std::type_info &typeinfo);
195
196 // Type of STL container (returned by IsSTLContainer).
197 enum ESTLType {
212 };
213
214 /// Kinds of members to include in lists.
215 enum class EMemberSelection {
216 kNoUsingDecls,
217 kOnlyUsingDecls,
218 kAlsoUsingDecls
219 };
222
223 typedef const void *DeclId_t;
224 ClassDefOverride(TDictionary,2) //Interface to dictionary
225};
226
227#endif
bool Bool_t
Definition: RtypesCore.h:63
long Long_t
Definition: RtypesCore.h:54
unsigned long long ULong64_t
Definition: RtypesCore.h:81
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
EFunctionProperty
Definition: TDictionary.h:102
@ kIsDestructor
Definition: TDictionary.h:129
@ kIsConversion
Definition: TDictionary.h:128
@ kIsTemplateSpec
Definition: TDictionary.h:132
@ kIsInlined
Definition: TDictionary.h:131
@ kIsConstructor
Definition: TDictionary.h:127
@ kIsOperator
Definition: TDictionary.h:130
EClassProperty
Definition: TDictionary.h:135
@ kClassHasExplicitCtor
Definition: TDictionary.h:137
@ kClassHasAssignOpr
Definition: TDictionary.h:141
@ kClassHasImplicitCtor
Definition: TDictionary.h:138
@ kClassHasDefaultCtor
Definition: TDictionary.h:140
@ kClassIsValid
Definition: TDictionary.h:136
@ kClassIsAbstract
Definition: TDictionary.h:146
@ kClassHasVirtual
Definition: TDictionary.h:145
@ kClassHasCtor
Definition: TDictionary.h:139
@ kClassHasExplicitDtor
Definition: TDictionary.h:142
@ kClassHasImplicitDtor
Definition: TDictionary.h:143
@ kClassHasDtor
Definition: TDictionary.h:144
EProperty
Definition: TDictionary.h:64
@ kIsPublic
Definition: TDictionary.h:75
@ kIsCPPCompiled
Definition: TDictionary.h:85
@ kIsUnionMember
Definition: TDictionary.h:74
@ kIsDefault
Definition: TDictionary.h:81
@ kIsConstexpr
Definition: TDictionary.h:93
@ kIsCCompiled
Definition: TDictionary.h:84
@ kIsPointer
Definition: TDictionary.h:78
@ kIsScopedEnum
Definition: TDictionary.h:91
@ kIsConstant
Definition: TDictionary.h:88
@ kIsConstMethod
Definition: TDictionary.h:96
@ kIsClass
Definition: TDictionary.h:65
@ kIsReference
Definition: TDictionary.h:82
@ kIsEnum
Definition: TDictionary.h:68
@ kIsPrivate
Definition: TDictionary.h:77
@ kIsConstPointer
Definition: TDictionary.h:90
@ kIsFundamental
Definition: TDictionary.h:70
@ kIsCompiled
Definition: TDictionary.h:86
@ kIsAbstract
Definition: TDictionary.h:71
@ kIsUsing
Definition: TDictionary.h:97
@ kIsArray
Definition: TDictionary.h:79
@ kIsStatic
Definition: TDictionary.h:80
@ kIsExplicit
Definition: TDictionary.h:94
@ kIsStruct
Definition: TDictionary.h:66
@ kIsProtected
Definition: TDictionary.h:76
@ kIsVirtual
Definition: TDictionary.h:72
@ kIsUnion
Definition: TDictionary.h:67
@ kIsPureVirtual
Definition: TDictionary.h:73
@ kIsNamespace
Definition: TDictionary.h:95
@ kIsVirtualBase
Definition: TDictionary.h:89
@ kIsTypedef
Definition: TDictionary.h:69
@ kIsDefinedInStd
Definition: TDictionary.h:98
@ kIsDirectInherit
Definition: TDictionary.h:83
ERefTypeValues
Definition: TDictionary.h:149
@ kParaRef
Definition: TDictionary.h:154
@ kParaNormal
Definition: TDictionary.h:150
@ kParaRefP2P
Definition: TDictionary.h:155
@ kParaReference
Definition: TDictionary.h:151
@ kParaP2P
Definition: TDictionary.h:152
@ kParaP2P2P
Definition: TDictionary.h:153
@ kParaRefP2P2P
Definition: TDictionary.h:156
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t sel
char name[80]
Definition: TGX11.cxx:110
The ROOT object has a list of properties which are stored and retrieved using TDictAttributeMap.
This class defines an abstract interface that must be implemented by all classes that contain diction...
Definition: TDictionary.h:167
virtual Long_t Property() const =0
TDictAttributeMap * fAttributeMap
Definition: TDictionary.h:170
static bool WantsRegularMembers(EMemberSelection sel)
Definition: TDictionary.h:220
TDictAttributeMap * GetAttributeMap() const
Definition: TDictionary.h:185
TDictionary(const char *name)
Definition: TDictionary.h:178
ULong64_t fUpdatingTransactionCount
Definition: TDictionary.h:171
Bool_t UpdateInterpreterStateMarker()
the Cling ID of the transaction that last updated the object
@ kUnorderedMultimap
Definition: TDictionary.h:210
@ kUnorderedMultiset
Definition: TDictionary.h:208
EMemberSelection
Kinds of members to include in lists.
Definition: TDictionary.h:215
static bool WantsUsingDecls(EMemberSelection sel)
Definition: TDictionary.h:221
TDictionary & operator=(const TDictionary &other)
Definition: TDictionary.cxx:62
static TDictionary * GetDictionary(const char *name)
Retrieve the type (class, fundamental type, typedef etc) named "name".
Definition: TDictionary.cxx:89
const void * DeclId_t
Definition: TDictionary.h:223
void CreateAttributeMap()
Definition: TDictionary.cxx:75
virtual ~TDictionary()
Definition: TDictionary.cxx:56
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
@ kSTLbitset
Definition: ESTLType.h:37
@ kSTLmap
Definition: ESTLType.h:33
@ kSTLunorderedmultiset
Definition: ESTLType.h:43
@ kSTLset
Definition: ESTLType.h:35
@ kSTLmultiset
Definition: ESTLType.h:36
@ kSTLdeque
Definition: ESTLType.h:32
@ kSTLvector
Definition: ESTLType.h:30
@ kSTLunorderedmultimap
Definition: ESTLType.h:45
@ kSTLunorderedset
Definition: ESTLType.h:42
@ kSTLlist
Definition: ESTLType.h:31
@ kSTLforwardlist
Definition: ESTLType.h:41
@ kSTLunorderedmap
Definition: ESTLType.h:44
@ kNotSTL
Definition: ESTLType.h:29
@ kSTLmultimap
Definition: ESTLType.h:34
EFunctionMatchMode
Definition: TDictionary.h:160
@ kExactMatch
Definition: TDictionary.h:161
@ kConversionMatch
Definition: TDictionary.h:162