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 kIsPublic = 0x00000200,
75 kIsProtected = 0x00000400,
76 kIsPrivate = 0x00000800,
77 kIsPointer = 0x00001000,
78 kIsArray = 0x00002000,
79 kIsStatic = 0x00004000,
80 kIsDefault = 0x00008000,
81 kIsReference = 0x00010000,
82 kIsDirectInherit = 0x00020000,
83 kIsCCompiled = 0x00040000,
86 kIsConstant = 0x00100000,
87 kIsVirtualBase = 0x00200000,
88 kIsConstPointer = 0x00400000,
89 kIsScopedEnum = 0x00800000,
90 kIsConstexpr = 0x02000000,
91 kIsExplicit = 0x04000000,
92 kIsNamespace = 0x08000000,
93 kIsConstMethod = 0x10000000,
94 kIsUsingVariable = 0x20000000,
95 kIsDefinedInStd = 0x40000000
96};
97
99/* The following are already defined
100 in EProperty and 'could' be part of this enums */
101/*
102 kIsAbstract = 0x00000040,
103 kIsVirtual = 0x00000080,
104 kIsPureVirtual = 0x00000100,
105 kIsPublic = 0x00000200,
106 kIsProtected = 0x00000400,
107 kIsPrivate = 0x00000800,
108 kIsStatic = 0x00004000,
109 kIsDefault = 0x00008000,
110 kIsConstexpr = 0x02000000
111 kIsExplicit = 0x04000000,
112 kIsConstMethod = 0x10000000,
113*/
114/* The following are already defined
115 in EProperty and related to the type of the return value */
116/*
117 kIsConstant = 0x00100000,
118 kIsPointer = 0x00001000,
119 kIsArray = 0x00002000,
120 kIsReference = 0x00010000,
121 kIsConstPointer = 0x00400000,
122*/
123 kIsConstructor = 0x00000001,
124 kIsConversion = 0x00000002,
125 kIsDestructor = 0x00000004,
126 kIsOperator = 0x00000008,
127 kIsInlined = 0x00000010
129
131 kClassIsValid = 0x00000001,
134 kClassHasCtor = 0x00000030,
136 kClassHasAssignOpr = 0x00000080,
139 kClassHasDtor = 0x00000300,
140 kClassHasVirtual = 0x00001000,
141 kClassIsAbstract = 0x00002000
143
145 kParaNormal = 0, // not used
147 kParaP2P = 2, // not used
148 kParaP2P2P = 3, // not used
149 kParaRef = 100,
150 kParaRefP2P = 102, // not used
151 kParaRefP2P2P = 103 // not used
153
154namespace ROOT {
158 };
159}
160
161
162class TDictionary : public TNamed {
163
164private:
165 TDictAttributeMap *fAttributeMap; //pointer to a class attribute map
166 ULong64_t fUpdatingTransactionCount; //!the Cling ID of the transaction that last updated the object
167
168protected:
170
171public:
174 TDictionary(const TDictionary& dict);
175 virtual ~TDictionary();
176
177 TDictionary& operator=(const TDictionary& other);
178
179 void CreateAttributeMap();
181 {
182 //Get the TDictAttributeMap pointer to be able to add attribute
183 //pairs key-value to the TClass.
184
185 return fAttributeMap;
186 }
187 virtual Long_t Property() const = 0;
188 static TDictionary* GetDictionary(const char* name);
189 static TDictionary* GetDictionary(const std::type_info &typeinfo);
190
191 // Type of STL container (returned by IsSTLContainer).
192 enum ESTLType {
207 };
208
209 typedef const void *DeclId_t;
210 ClassDef(TDictionary,2) //Interface to dictionary
211};
212
213#endif
long Long_t
Definition: RtypesCore.h:50
bool Bool_t
Definition: RtypesCore.h:59
unsigned long long ULong64_t
Definition: RtypesCore.h:70
#define ClassDef(name, id)
Definition: Rtypes.h:326
EFunctionProperty
Definition: TDictionary.h:98
@ kIsDestructor
Definition: TDictionary.h:125
@ kIsConversion
Definition: TDictionary.h:124
@ kIsInlined
Definition: TDictionary.h:127
@ kIsConstructor
Definition: TDictionary.h:123
@ kIsOperator
Definition: TDictionary.h:126
EClassProperty
Definition: TDictionary.h:130
@ kClassHasExplicitCtor
Definition: TDictionary.h:132
@ kClassHasAssignOpr
Definition: TDictionary.h:136
@ kClassHasImplicitCtor
Definition: TDictionary.h:133
@ kClassHasDefaultCtor
Definition: TDictionary.h:135
@ kClassIsValid
Definition: TDictionary.h:131
@ kClassIsAbstract
Definition: TDictionary.h:141
@ kClassHasVirtual
Definition: TDictionary.h:140
@ kClassHasCtor
Definition: TDictionary.h:134
@ kClassHasExplicitDtor
Definition: TDictionary.h:137
@ kClassHasImplicitDtor
Definition: TDictionary.h:138
@ kClassHasDtor
Definition: TDictionary.h:139
EProperty
Definition: TDictionary.h:64
@ kIsPublic
Definition: TDictionary.h:74
@ kIsCPPCompiled
Definition: TDictionary.h:84
@ kIsDefault
Definition: TDictionary.h:80
@ kIsConstexpr
Definition: TDictionary.h:90
@ kIsCCompiled
Definition: TDictionary.h:83
@ kIsPointer
Definition: TDictionary.h:77
@ kIsScopedEnum
Definition: TDictionary.h:89
@ kIsConstant
Definition: TDictionary.h:86
@ kIsConstMethod
Definition: TDictionary.h:93
@ kIsClass
Definition: TDictionary.h:65
@ kIsReference
Definition: TDictionary.h:81
@ kIsEnum
Definition: TDictionary.h:68
@ kIsPrivate
Definition: TDictionary.h:76
@ kIsConstPointer
Definition: TDictionary.h:88
@ kIsFundamental
Definition: TDictionary.h:70
@ kIsCompiled
Definition: TDictionary.h:85
@ kIsAbstract
Definition: TDictionary.h:71
@ kIsArray
Definition: TDictionary.h:78
@ kIsStatic
Definition: TDictionary.h:79
@ kIsExplicit
Definition: TDictionary.h:91
@ kIsStruct
Definition: TDictionary.h:66
@ kIsProtected
Definition: TDictionary.h:75
@ kIsVirtual
Definition: TDictionary.h:72
@ kIsUnion
Definition: TDictionary.h:67
@ kIsPureVirtual
Definition: TDictionary.h:73
@ kIsNamespace
Definition: TDictionary.h:92
@ kIsUsingVariable
Definition: TDictionary.h:94
@ kIsVirtualBase
Definition: TDictionary.h:87
@ kIsTypedef
Definition: TDictionary.h:69
@ kIsDefinedInStd
Definition: TDictionary.h:95
@ kIsDirectInherit
Definition: TDictionary.h:82
ERefTypeValues
Definition: TDictionary.h:144
@ kParaRef
Definition: TDictionary.h:149
@ kParaNormal
Definition: TDictionary.h:145
@ kParaRefP2P
Definition: TDictionary.h:150
@ kParaReference
Definition: TDictionary.h:146
@ kParaP2P
Definition: TDictionary.h:147
@ kParaP2P2P
Definition: TDictionary.h:148
@ kParaRefP2P2P
Definition: TDictionary.h:151
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:162
virtual Long_t Property() const =0
TDictAttributeMap * fAttributeMap
Definition: TDictionary.h:165
TDictAttributeMap * GetAttributeMap() const
Definition: TDictionary.h:180
TDictionary(const char *name)
Definition: TDictionary.h:173
ULong64_t fUpdatingTransactionCount
Definition: TDictionary.h:166
Bool_t UpdateInterpreterStateMarker()
the Cling ID of the transaction that last updated the object
@ kUnorderedMultimap
Definition: TDictionary.h:205
@ kUnorderedMultiset
Definition: TDictionary.h:203
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:209
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
VSD Structures.
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:155
@ kExactMatch
Definition: TDictionary.h:156
@ kConversionMatch
Definition: TDictionary.h:157