Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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; //pointer to a class attribute map
171 ULong64_t fUpdatingTransactionCount; //!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 {
219 };
222
223 typedef const void *DeclId_t;
224 ClassDef(TDictionary,2) //Interface to dictionary
225};
226
227#endif
long Long_t
Definition RtypesCore.h:54
unsigned long long ULong64_t
Definition RtypesCore.h:81
#define ClassDef(name, id)
Definition Rtypes.h:325
EFunctionProperty
@ kIsDestructor
@ kIsConversion
@ kIsTemplateSpec
@ kIsInlined
@ kIsConstructor
@ kIsOperator
EClassProperty
@ kClassHasExplicitCtor
@ kClassHasAssignOpr
@ kClassHasImplicitCtor
@ kClassHasDefaultCtor
@ kClassIsValid
@ kClassIsAbstract
@ kClassHasVirtual
@ kClassHasCtor
@ kClassHasExplicitDtor
@ kClassHasImplicitDtor
@ kClassHasDtor
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
@ kParaRef
@ kParaNormal
@ kParaRefP2P
@ kParaReference
@ kParaP2P
@ kParaP2P2P
@ kParaRefP2P2P
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...
virtual Long_t Property() const =0
TDictAttributeMap * fAttributeMap
static bool WantsRegularMembers(EMemberSelection sel)
TDictAttributeMap * GetAttributeMap() const
TDictionary(const char *name)
ULong64_t fUpdatingTransactionCount
Bool_t UpdateInterpreterStateMarker()
the Cling ID of the transaction that last updated the object
EMemberSelection
Kinds of members to include in lists.
static bool WantsUsingDecls(EMemberSelection sel)
TDictionary & operator=(const TDictionary &other)
static TDictionary * GetDictionary(const char *name)
Retrieve the type (class, fundamental type, typedef etc) named "name".
const void * DeclId_t
void CreateAttributeMap()
virtual ~TDictionary()
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...
@ 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
@ kExactMatch
@ kConversionMatch