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
133
135 kClassIsValid = 0x00000001,
138 kClassHasCtor = 0x00000030,
140 kClassHasAssignOpr = 0x00000080,
143 kClassHasDtor = 0x00000300,
144 kClassHasVirtual = 0x00001000,
145 kClassIsAbstract = 0x00002000
147
149 kParaNormal = 0, // not used
151 kParaP2P = 2, // not used
152 kParaP2P2P = 3, // not used
153 kParaRef = 100,
154 kParaRefP2P = 102, // not used
155 kParaRefP2P2P = 103 // not used
157
158namespace ROOT {
162 };
163}
164
165
166class TDictionary : public TNamed {
167
168private:
169 TDictAttributeMap *fAttributeMap; //pointer to a class attribute map
170 ULong64_t fUpdatingTransactionCount; //!the Cling ID of the transaction that last updated the object
171
172protected:
174
175public:
178 TDictionary(const TDictionary& dict);
179 virtual ~TDictionary();
180
181 TDictionary& operator=(const TDictionary& other);
182
183 void CreateAttributeMap();
185 {
186 //Get the TDictAttributeMap pointer to be able to add attribute
187 //pairs key-value to the TClass.
188
189 return fAttributeMap;
190 }
191 virtual Long_t Property() const = 0;
192 static TDictionary* GetDictionary(const char* name);
193 static TDictionary* GetDictionary(const std::type_info &typeinfo);
194
195 // Type of STL container (returned by IsSTLContainer).
196 enum ESTLType {
211 };
212
213 /// Kinds of members to include in lists.
214 enum class EMemberSelection {
215 kNoUsingDecls,
216 kOnlyUsingDecls,
217 kAlsoUsingDecls
218 };
221
222 typedef const void *DeclId_t;
223 ClassDef(TDictionary,2) //Interface to dictionary
224};
225
226#endif
long Long_t
Definition: RtypesCore.h:52
unsigned long long ULong64_t
Definition: RtypesCore.h:72
#define ClassDef(name, id)
Definition: Rtypes.h:322
EFunctionProperty
Definition: TDictionary.h:102
@ kIsDestructor
Definition: TDictionary.h:129
@ kIsConversion
Definition: TDictionary.h:128
@ kIsInlined
Definition: TDictionary.h:131
@ kIsConstructor
Definition: TDictionary.h:127
@ kIsOperator
Definition: TDictionary.h:130
EClassProperty
Definition: TDictionary.h:134
@ kClassHasExplicitCtor
Definition: TDictionary.h:136
@ kClassHasAssignOpr
Definition: TDictionary.h:140
@ kClassHasImplicitCtor
Definition: TDictionary.h:137
@ kClassHasDefaultCtor
Definition: TDictionary.h:139
@ kClassIsValid
Definition: TDictionary.h:135
@ kClassIsAbstract
Definition: TDictionary.h:145
@ kClassHasVirtual
Definition: TDictionary.h:144
@ kClassHasCtor
Definition: TDictionary.h:138
@ kClassHasExplicitDtor
Definition: TDictionary.h:141
@ kClassHasImplicitDtor
Definition: TDictionary.h:142
@ kClassHasDtor
Definition: TDictionary.h:143
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:148
@ kParaRef
Definition: TDictionary.h:153
@ kParaNormal
Definition: TDictionary.h:149
@ kParaRefP2P
Definition: TDictionary.h:154
@ kParaReference
Definition: TDictionary.h:150
@ kParaP2P
Definition: TDictionary.h:151
@ kParaP2P2P
Definition: TDictionary.h:152
@ kParaRefP2P2P
Definition: TDictionary.h:155
char name[80]
Definition: TGX11.cxx:109
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:166
virtual Long_t Property() const =0
TDictAttributeMap * fAttributeMap
Definition: TDictionary.h:169
static bool WantsRegularMembers(EMemberSelection sel)
Definition: TDictionary.h:219
TDictAttributeMap * GetAttributeMap() const
Definition: TDictionary.h:184
TDictionary(const char *name)
Definition: TDictionary.h:177
ULong64_t fUpdatingTransactionCount
Definition: TDictionary.h:170
Bool_t UpdateInterpreterStateMarker()
the Cling ID of the transaction that last updated the object
@ kUnorderedMultimap
Definition: TDictionary.h:209
@ kUnorderedMultiset
Definition: TDictionary.h:207
EMemberSelection
Kinds of members to include in lists.
Definition: TDictionary.h:214
static bool WantsUsingDecls(EMemberSelection sel)
Definition: TDictionary.h:220
TDictionary & operator=(const TDictionary &other)
Definition: TDictionary.cxx:62
static TDictionary * GetDictionary(const char *name)
Definition: TDictionary.cxx:84
const void * DeclId_t
Definition: TDictionary.h:222
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
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Definition: StringConv.hxx:21
@ 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:159
@ kExactMatch
Definition: TDictionary.h:160
@ kConversionMatch
Definition: TDictionary.h:161