ATLAS Offline Software
Loading...
Searching...
No Matches
RootType.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef DATAMODELROOT_ROOT_TYPE_H
6#define DATAMODELROOT_ROOT_TYPE_H
7
8// Standard
9#include <string>
10
11// ROOT
12#include "TClassRef.h"
13class TMethod;
14class TFunction;
15class TMethodArg;
16
18
19#define ROOT_6
20
21namespace Reflex {
22
25 FINAL = (1<<0),
26 QUALIFIED = (1<<1),
27 SCOPED = (1<<2),
28 };
29
30} // namespace Reflex
31
32
33class TScopeAdapter;
35
36
38public:
39 TPropertyListAdapter( TDictAttributeMap* dam ) : fAttributes( dam ) {}
40
41public:
42 Bool_t HasProperty( const std::string& key ) const;
43 std::string PropertyAsString(const std::string& key) const;
44
45private:
46 TDictAttributeMap* fAttributes;
47};
48
50public:
51 TReturnTypeAdapter( const std::string& name ) : fName( name ) {}
52
53 std::string Name( unsigned int mod = 0 ) const;
54
55private:
56 std::string fName;
57};
58
59
61public:
62 TMemberAdapter( TMethod* meth );
63 operator TMethod*() const;
64
65 TMemberAdapter( TFunction* func );
66 operator TFunction*() const;
67
68 TMemberAdapter( TDataMember* mb );
69 operator TDataMember*() const;
70
71 TMemberAdapter( TMethodArg* ma );
72 operator TMethodArg*() const;
73
74 operator Bool_t() const { return fMember != 0; }
75
76public:
77 std::string Name( unsigned int mod = 0 ) const;
78
79 const char* GetSharedLibs() const;
80 size_t Offset() const;
81
82 Bool_t IsConstant() const;
83 Bool_t IsConstructor() const;
84 Bool_t IsEnum() const;
85 Bool_t IsPublic() const;
86 Bool_t IsStatic() const;
87 Bool_t IsTransient() const;
88
89 size_t FunctionParameterSize( Bool_t required = false ) const;
91 std::string FunctionParameterNameAt( size_t nth );
92 std::string FunctionParameterDefaultAt( size_t nth );
93
95 TScopeAdapter DeclaringScope ATLAS_NOT_THREAD_SAFE () const;
96 TTypeAdapter DeclaringType ATLAS_NOT_THREAD_SAFE () const;
97 TTypeAdapter TypeOf() const;
98
99private:
100 TDictionary* fMember;
101};
102
103
105public:
106 TBaseAdapter( TBaseClass* base ) : fBase( base ) {}
107 operator Bool_t() const { return fBase != 0; }
108
109public:
110 std::string Name() const;
111
113
114private:
115 TBaseClass* fBase;
116};
117
118
120public:
122 TScopeAdapter( TClass* klass );
123 TScopeAdapter( const std::string& name, Bool_t load = kTRUE );
124 ATLAS_NOT_THREAD_SAFE TScopeAdapter( const std::string& name, Bool_t load, Bool_t quiet );
126 TScopeAdapter( const std::type_info &typeinfo );
127 operator TClass*() const { return fClass.GetClass(); }
128 operator Bool_t() const;
129
130public:
132 const std::string& name, Bool_t load = kTRUE, Bool_t quiet = kTRUE );
134 const std::string& name, Bool_t load = kTRUE );
135
136 static TScopeAdapter TypeAt( size_t nth );
137 static size_t TypeSize ();
138
139public:
140 std::string Name( unsigned int mod = Reflex::SCOPED ) const;
142
143 void *Construct() const ;
144 void *Construct(void *place) const;
145 void Destruct(void *place) const;
146
147 const std::type_info& TypeInfo() const;
149
150 Bool_t IsPointer() const;
151 Bool_t IsTemplateInstance() const;
152 Bool_t IsTopScope() const;
153 Bool_t IsFundamental() const;
154 Bool_t IsEnum() const;
155 Bool_t IsTypedef() const;
156 Bool_t IsArray() const;
157
158 TBaseAdapter BaseAt( size_t nth ) const;
159 size_t BaseSize() const;
160
161 size_t SizeOf() const;
162
163 TMemberAdapter FunctionMemberAt( size_t nth ) const;
164 size_t FunctionMemberSize() const;
165
166 TMemberAdapter DataMemberAt( size_t nth ) const;
167 size_t DataMemberSize() const;
168
169 TScopeAdapter TemplateArgumentAt( size_t nth ) const;
170 size_t TemplateArgumentSize() const;
171
172public:
173 Bool_t IsComplete() const;
174
175 Bool_t IsClass() const;
176 Bool_t IsStruct() const;
177 Bool_t IsNamespace() const;
178
179 // note: in Reflex, part of Type, not Scope
180 Bool_t IsAbstract() const;
181
182 void* Id() const { return fClass.GetClass(); }
183 TClass* Class() const { return fClass.GetClass(); }
184
185 TTypeAdapter ToType() const { return *this; }
186 TScopeAdapter TypeOf() const { return *this; }
187
188 // for STL containers
189 bool operator==( const TScopeAdapter& rh ) const;
190 bool operator!=( const TScopeAdapter& rh ) const {
191 return ! (*this == rh);
192 }
193 bool operator<( const TScopeAdapter& rh ) const;
194
195 // Noop in ROOT6
196 static void EnableCintex() {}
197
198private:
199 void Init ( const std::string& name, Bool_t load, Bool_t quiet );
200
201 std::string fName;
202 TClassRef fClass;
203 bool fIsFundamental = false;
204};
205
206
212
213
214#endif // !DATAMODELROOT_ROOT_TYPE_H
JetDumper::Name Name
Definition JetDumper.cxx:19
TScopeAdapter TTypeAdapter
Definition RootType.h:34
TPropertyListAdapter RootPropertyList
Definition RootType.h:209
TMemberAdapter RootDataMember
Definition RootType.h:208
TTypeAdapter RootType
Definition RootType.h:211
TBaseAdapter RootBase
Definition RootType.h:207
TScopeAdapter RootScope
Definition RootType.h:210
Define macros for attributes used to control the static checker.
TScopeAdapter ToType ATLAS_NOT_THREAD_SAFE() const
TBaseAdapter(TBaseClass *base)
Definition RootType.h:106
TBaseClass * fBase
Definition RootType.h:115
std::string Name() const
Definition RootType.cxx:361
TReturnTypeAdapter ReturnType() const
Definition RootType.cxx:329
TTypeAdapter TypeOf() const
Definition RootType.cxx:160
size_t Offset() const
Definition RootType.cxx:219
const char * GetSharedLibs() const
Definition RootType.cxx:212
Bool_t IsEnum() const
Definition RootType.cxx:242
Bool_t IsTransient() const
Definition RootType.cxx:263
std::string FunctionParameterDefaultAt(size_t nth)
Definition RootType.cxx:307
Bool_t IsConstructor() const
Definition RootType.cxx:234
TTypeAdapter DeclaringType ATLAS_NOT_THREAD_SAFE() const
std::string FunctionParameterNameAt(size_t nth)
Definition RootType.cxx:294
TMemberAdapter FunctionParameterAt(size_t nth)
Definition RootType.cxx:286
Bool_t IsPublic() const
Definition RootType.cxx:249
TMemberAdapter(TMethod *meth)
Definition RootType.cxx:108
size_t FunctionParameterSize(Bool_t required=false) const
Definition RootType.cxx:272
TDictionary * fMember
Definition RootType.h:100
Bool_t IsStatic() const
Definition RootType.cxx:256
Bool_t IsConstant() const
Definition RootType.cxx:227
TScopeAdapter DeclaringScope ATLAS_NOT_THREAD_SAFE() const
std::string PropertyAsString(const std::string &key) const
Definition RootType.cxx:83
TDictAttributeMap * fAttributes
Definition RootType.h:46
Bool_t HasProperty(const std::string &key) const
Definition RootType.cxx:74
TPropertyListAdapter(TDictAttributeMap *dam)
Definition RootType.h:39
std::string fName
Definition RootType.h:56
TReturnTypeAdapter(const std::string &name)
Definition RootType.h:51
static TScopeAdapter TypeAt(size_t nth)
Definition RootType.cxx:593
static TScopeAdapter ByNameNoQuiet(const std::string &name, Bool_t load=kTRUE)
Definition RootType.cxx:586
Bool_t IsPointer() const
Definition RootType.cxx:702
TScopeAdapter TemplateArgumentAt(size_t nth) const
Definition RootType.cxx:819
size_t DataMemberSize() const
Definition RootType.cxx:802
static void EnableCintex()
Definition RootType.h:196
Bool_t IsFundamental() const
Definition RootType.cxx:731
TMemberAdapter DataMemberAt(size_t nth) const
Definition RootType.cxx:812
TScopeAdapter DeclaringScope() const
Definition RootType.cxx:655
void * Id() const
Definition RootType.h:182
TBaseAdapter BaseAt(size_t nth) const
Definition RootType.cxx:778
Bool_t IsTopScope() const
Definition RootType.cxx:725
Bool_t IsNamespace() const
Definition RootType.cxx:944
void Destruct(void *place) const
Definition RootType.cxx:677
bool fIsFundamental
Definition RootType.h:203
Bool_t IsArray() const
Definition RootType.cxx:748
Bool_t IsComplete() const
Definition RootType.cxx:895
void Init(const std::string &name, Bool_t load, Bool_t quiet)
Definition RootType.cxx:519
size_t FunctionMemberSize() const
Definition RootType.cxx:785
Bool_t IsEnum() const
Definition RootType.cxx:738
static size_t TypeSize()
Definition RootType.cxx:602
TScopeAdapter TypeOf() const
Definition RootType.h:186
const std::type_info & TypeInfo() const
Definition RootType.cxx:684
TClass * Class() const
Definition RootType.h:183
size_t TemplateArgumentSize() const
Definition RootType.cxx:857
Bool_t IsTemplateInstance() const
Definition RootType.cxx:710
Bool_t IsAbstract() const
Definition RootType.cxx:954
TClassRef fClass
Definition RootType.h:202
bool operator!=(const TScopeAdapter &rh) const
Definition RootType.h:190
static TScopeAdapter ByName ATLAS_NOT_THREAD_SAFE(const std::string &name, Bool_t load=kTRUE, Bool_t quiet=kTRUE)
TPropertyListAdapter Properties() const
Definition RootType.cxx:694
bool operator==(const TScopeAdapter &rh) const
Definition RootType.cxx:964
std::string fName
Definition RootType.h:201
TTypeAdapter ToType() const
Definition RootType.h:185
size_t BaseSize() const
Definition RootType.cxx:754
bool operator<(const TScopeAdapter &rh) const
Definition RootType.cxx:971
void * Construct() const
Definition RootType.cxx:666
Bool_t IsClass() const
Definition RootType.cxx:916
Bool_t IsTypedef() const
Definition RootType.cxx:743
TMemberAdapter FunctionMemberAt(size_t nth) const
Definition RootType.cxx:795
size_t SizeOf() const
Definition RootType.cxx:765
Bool_t IsStruct() const
Definition RootType.cxx:931
std::string base
Definition hcg.cxx:81
ENTITY_HANDLING
enum for printing names
Definition RootType.h:24
@ SCOPED
Definition RootType.h:27
@ FINAL
Definition RootType.h:25
@ QUALIFIED
Definition RootType.h:26