Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TClass.h
Go to the documentation of this file.
1// @(#)root/meta:$Id$
2// Author: Rene Brun 07/01/95
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#ifndef ROOT_TClass
13#define ROOT_TClass
14
15//////////////////////////////////////////////////////////////////////////
16// //
17// TClass //
18// //
19// Dictionary of a class. //
20// //
21//////////////////////////////////////////////////////////////////////////
22
23#include "TDictionary.h"
24#include "TString.h"
25#include "TSchemaRule.h"
26
27#ifdef R__LESS_INCLUDES
28class TObjArray;
29#else
30#include "TObjArray.h"
31// Not used in this header file; user code should #include this directly.
32// #include "TObjString.h"
33// #include "ThreadLocalStorage.h"
34// #include <set>
35#endif
36
37#include <cstddef>
38#include <map>
39#include <string>
40#include <unordered_map>
41#include <unordered_set>
42#include <vector>
43#include <atomic>
44
45class TBaseClass;
46class TBrowser;
47class TDataMember;
48class TCling;
49class TMethod;
50class TRealData;
51class TBuffer;
54class TMethodCall;
57class THashTable;
61class TListOfEnums;
65class TProtoClass;
66
67namespace ROOT {
68 class TGenericClassInfo;
69 class TMapTypeToTClass;
70 class TMapDeclIdToTClass;
71 namespace Detail {
72 class TSchemaRuleSet;
73 class TCollectionProxyInfo;
74 }
75 namespace Internal {
76 class TCheckHashRecursiveRemoveConsistency;
77 struct TSchemaHelper;
78 }
79}
80
83
84class TClass : public TDictionary {
85
86friend class TCling;
87friend void ROOT::ResetClassVersion(TClass*, const char*, Short_t);
89friend class TProtoClass;
91friend class TStreamerInfo;
92
93public:
94 // TClass status bits
96 kReservedLoading = BIT(7), // Internal status bits, set and reset only during initialization
97
98 /* had kClassSaved = BIT(12), */
101 kUnloaded = BIT(16), // The library containing the dictionary for this class was
102 // loaded and has been unloaded from memory.
105 /* had kIsEmulation = BIT(19), // Deprecated */
106 kStartWithTObject = BIT(20), // see comments for IsStartingWithTObject()
108 kHasNameMapNode = BIT(22)
109 };
113 kNoEnum = 1, // Used since v3.3
114 kReflexNoComment = 2, // Up to v5.34.18 (has no range/comment and no typedef at all)
115 kNoRange = 3, // Up to v5.17
116 kWithTypeDef = 4, // Up to v5.34.18 and v5.99/06
117 kReflex = 5, // Up to v5.34.18 (has no typedef at all)
118 kNoRangeCheck = 6, // Up to v5.34.18 and v5.99/06
119 kNoBaseCheckSum = 7, // Up to v5.34.18 and v5.99/06
121 };
122
123 // Describe the current state of the TClass itself.
124 enum EState {
125 kNoInfo, // The state has not yet been initialized, i.e. the TClass
126 // was just created and/or there is no trace of it in the interpreter.
127 kForwardDeclared, // The interpreted knows the entity is a class but that's it.
128 kEmulated, // The information about the class only comes from a TStreamerInfo
129 kInterpreted, // The class is described completely/only in the interpreter database.
130 kHasTClassInit, // The class has a TClass proper bootstrap coming from a run
131 // through rootcling/genreflex/TMetaUtils and the library
132 // containing this dictionary has been loaded in memory.
134 kNamespaceForMeta // Very transient state necessary to bootstrap namespace entries
135 // in ROOT Meta w/o interpreter information
136 };
137
138 // "Typed" pointer that recalls how TClass::New allocated the object.
139 // It is returned by TClass:NewObject and should be passed to TClass::DeleteArray or TClass::Destructor
140 // to delete the object.
141 // It is also used in TVirtualCollectionProxy for the same reasons.
143 {
144 void *fPtr = nullptr;
145
147
148 ObjectPtr(void *ptr = nullptr, TVirtualStreamerInfo *allocator = nullptr) : fPtr(ptr), fAllocator(allocator) {}
149
150 void *GetPtr() const { return fPtr; }
151
153
154 operator bool() const { return fPtr != nullptr; }
155 };
156
157private:
158
159
160
162 // A class which is used to collect decl names starting from normalised
163 // names (typedef resolution is excluded here, just string manipulation
164 // is performed). At the heart of the implementation, an unordered set.
165 public:
167 void AddQualifiedName(const char *name);
168 Bool_t HasDeclName(const char *name) const;
170 private:
172 std::unordered_set<std::string> fClassNamesSet;
173 mutable std::atomic_flag fSpinLock; // MSVC doesn't support = ATOMIC_FLAG_INIT;
174 };
175
177 // Trivial RAII used to insert names in the registry
179 const char* fName;
181 public:
184 };
185
186 // TClass objects can be created as a result of opening a TFile (in which
187 // they are in emulated mode) or as a result of loading the dictionary for
188 // the corresponding class. When a dictionary is loaded any pre-existing
189 // emulated TClass is replaced by the one created/coming from the dictionary.
190 // To have a reference that always point to the 'current' TClass object for
191 // a given class, one should use a TClassRef.
192 // TClassRef works by holding on to the fPersistentRef which is updated
193 // atomically whenever a TClass is replaced. During the replacement the
194 // value of fPersistentRef is set to zero, leading the TClassRef to call
195 // TClass::GetClass which is also locked by the replacement. At the end
196 // of the replacement, fPersistentRef points to the new TClass object.
197 std::atomic<TClass**> fPersistentRef;//!Persistent address of pointer to this TClass object and its successors.
198
199 typedef std::atomic<std::map<std::string, TObjArray*>*> ConvSIMap_t;
200
201 mutable TObjArray *fStreamerInfo; //Array of TVirtualStreamerInfo
202 mutable ConvSIMap_t fConversionStreamerInfo; //Array of the streamer infos derived from another class.
203 TList *fRealData; //linked list for persistent members including base classes
204 std::atomic<TList*> fBase; //linked list for base classes
205 std::atomic<TListOfDataMembers*> fData; //linked list for data members; non-owning.
206 std::atomic<TListOfDataMembers*> fUsingData;//linked list for data members pulled in through using decls.
207
208 std::atomic<TListOfEnums*> fEnums; //linked list for the enums
209 TListOfFunctionTemplates *fFuncTemplate; //linked list for function templates [Not public until implemented as active list]
210 std::atomic<TListOfFunctions*> fMethod; //linked list for methods
211
212 TViewPubDataMembers*fAllPubData; //all public data members (including from base classes)
213 TViewPubFunctions *fAllPubMethod; //all public methods (including from base classes)
214 mutable TList *fClassMenuList; //list of class menu items
215
216 const char *fDeclFileName; //name of class declaration file
217 const char *fImplFileName; //name of class implementation file
218 Short_t fDeclFileLine; //line of class declaration
219 Short_t fImplFileLine; //line of class implementation
220 UInt_t fInstanceCount; //number of instances of this class
221 UInt_t fOnHeap; //number of instances on heap
222 mutable std::atomic<UInt_t> fCheckSum; //checksum of data members and base classes
224 Version_t fClassVersion; //Class version Identifier
225 ClassInfo_t *fClassInfo; //pointer to CINT class info class
226 TString fContextMenuTitle;//context menu title
227 const std::type_info *fTypeInfo; //pointer to the C++ type information.
228 ShowMembersFunc_t fShowMembers; //pointer to the class's ShowMembers function
229 TClassStreamer *fStreamer; //pointer to streamer function
230 TString fSharedLibs; //shared libraries containing class code
231
232 TVirtualIsAProxy *fIsA; //!pointer to the class's IsA proxy.
233 IsAGlobalFunc_t fGlobalIsA; //pointer to a global IsA function.
234 mutable std::atomic<TMethodCall*> fIsAMethod; //!saved info to call a IsA member function
235
236 ROOT::MergeFunc_t fMerge; //pointer to a function implementing Merging objects of this class.
237 ROOT::ResetAfterMergeFunc_t fResetAfterMerge; //pointer to a function implementing Merging objects of this class.
238 ROOT::NewFunc_t fNew; //pointer to a function newing one object.
239 ROOT::NewArrFunc_t fNewArray; //pointer to a function newing an array of objects.
240 ROOT::DelFunc_t fDelete; //pointer to a function deleting one object.
241 ROOT::DelArrFunc_t fDeleteArray; //pointer to a function deleting an array of objects.
242 ROOT::DesFunc_t fDestructor; //pointer to a function call an object's destructor.
243 ROOT::DirAutoAdd_t fDirAutoAdd; //pointer which implements the Directory Auto Add feature for this class.']'
244 ClassStreamerFunc_t fStreamerFunc; //Wrapper around this class custom Streamer member function.
245 ClassConvStreamerFunc_t fConvStreamerFunc; //Wrapper around this class custom conversion Streamer member function.
246 Int_t fSizeof; //Sizeof the class.
247
248 std::atomic<Char_t> fCanSplit; //!Indicates whether this class can be split or not. Values are -1, 0, 1, 2
249
250 // Bit field
251 /// Indicates whether this class represents a pair and was not created from a dictionary nor interpreter info but has
252 /// compiler compatible offset and size (and all the info is in the StreamerInfo per se)
254
255 /// @brief The class has a Streamer method and it is implemented by the user or an older (not StreamerInfo based) automatic streamer.
257
258 mutable std::atomic<Long_t> fProperty; //!Property See TClass::Property() for details
259 mutable Long_t fClassProperty; //!C++ Property of the class (is abstract, has virtual table, etc.)
260
261 // fHasRootPcmInfo needs to be atomic as long as GetListOfBases needs to modify it.
262 std::atomic<Bool_t> fHasRootPcmInfo; //!Whether info was loaded from a root pcm.
263 mutable std::atomic<Bool_t> fCanLoadClassInfo; //!Indicates whether the ClassInfo is supposed to be available.
264 mutable std::atomic<Bool_t> fIsOffsetStreamerSet; //!saved remember if fOffsetStreamer has been set.
265 mutable std::atomic<Bool_t> fVersionUsed; //!Indicates whether GetClassVersion has been called
266
268 kNotInitialized = 0,
269 kSet = BIT(0),
270 // kInconsistent when kSet & !kConsistent.
272 };
274 return l & static_cast<UChar_t>(r);
275 }
276 mutable std::atomic<UChar_t> fRuntimeProperties; //! Properties that can only be evaluated at run-time
277
278 mutable Longptr_t fOffsetStreamer; //!saved info to call Streamer
279 Int_t fStreamerType; //!cached of the streaming method to use
280 EState fState; //!Current 'state' of the class (Emulated,Interpreted,Loaded)
281 mutable std::atomic<TVirtualStreamerInfo*> fCurrentInfo; //!cached current streamer info.
282 mutable std::atomic<TVirtualStreamerInfo*> fLastReadInfo; //!cached streamer info used in the last read.
283 TVirtualRefProxy *fRefProxy; //!Pointer to reference proxy if this class represents a reference
284 ROOT::Detail::TSchemaRuleSet *fSchemaRules; //! Schema evolution rules
285
286 typedef void (*StreamerImpl_t)(const TClass* pThis, void *obj, TBuffer &b, const TClass *onfile_class);
287#ifdef R__NO_ATOMIC_FUNCTION_POINTER
288 mutable StreamerImpl_t fStreamerImpl; //! Pointer to the function implementing streaming for this class
289#else
290 mutable std::atomic<StreamerImpl_t> fStreamerImpl; //! Pointer to the function implementing streaming for this class
291#endif
292
298 void Init(const char *name, Version_t cversion, const std::type_info *info,
300 const char *dfil, const char *ifil,
301 Int_t dl, Int_t il,
303 Bool_t silent);
304 void LoadClassInfo() const;
305
306 static TClass *LoadClassDefault(const char *requestedname, Bool_t silent);
307 static TClass *LoadClassCustom(const char *requestedname, Bool_t silent);
308
312
314
316
317 // Various implementation for TClass::Stramer
318 static void StreamerExternal(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
319 static void StreamerTObject(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
320 static void StreamerTObjectInitialized(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
321 static void StreamerTObjectEmulated(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
322 static void StreamerInstrumented(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
323 static void ConvStreamerInstrumented(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
324 static void StreamerStreamerInfo(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
325 static void StreamerDefault(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
326
327 static IdMap_t *GetIdMap(); //Map from typeid to TClass pointer
328 static DeclIdMap_t *GetDeclIdMap(); //Map from DeclId_t to TClass pointer
329 static std::atomic<Int_t> fgClassCount; //provides unique id for a each class
330 //stored in TObject::fUniqueID
331 static TDeclNameRegistry fNoInfoOrEmuOrFwdDeclNameRegistry; // Store decl names of the forwardd and no info instances
332 static Bool_t HasNoInfoOrEmuOrFwdDeclaredDecl(const char*);
333
334 // Internal status bits, set and reset only during initialization and thus under the protection of the global lock.
336 // Internal streamer type.
338
339 // These are the above-referenced hash tables. (The pointers are null
340 // if no entries have been made.)
342
344
345 mutable TVirtualMutex *fOVRMutex = nullptr;
346 typedef std::multimap<void*, Version_t> RepoCont_t;
348
349 void UnregisterAddressInRepository(const char *where, void *location, const TClass *what) const;
350 void MoveAddressInRepository(const char *where, void *oldadd, void *newadd, const TClass *what) const;
351 void RegisterAddressInRepository(const char *where, void *location, const TClass *what) const;
352
353private:
354 TClass(const TClass& tc) = delete;
355 TClass& operator=(const TClass&) = delete;
356
358 TList *CreateListOfDataMembers(std::atomic<TListOfDataMembers*> &data, TDictionary::EMemberSelection selection, bool load);
359
360protected:
366
367 using SchemaHelperMap_t = std::unordered_map<std::string, std::vector<ROOT::Internal::TSchemaHelper>>;
369
370public:
371 TClass();
372 TClass(const char *name, Bool_t silent = kFALSE);
376 const char *dfil, const char *ifil = nullptr,
377 Int_t dl = 0, Int_t il = 0, Bool_t silent = kFALSE);
378 TClass(const char *name, Version_t cversion,
379 const char *dfil, const char *ifil = nullptr,
380 Int_t dl = 0, Int_t il = 0, Bool_t silent = kFALSE);
381 TClass(const char *name, Version_t cversion,
382 const std::type_info &info, TVirtualIsAProxy *isa,
383 const char *dfil, const char *ifil,
385 virtual ~TClass();
386
388 void AddImplFile(const char *filename, int line);
389 static Bool_t AddRule(const char *rule);
390 static Int_t ReadRules(const char *filename);
391 static Int_t ReadRules();
393 void Browse(TBrowser *b) override;
394 void BuildRealData(void *pointer = nullptr, Bool_t isTransient = kFALSE);
396 void CalculateStreamerOffset() const;
398 Bool_t CanSplit() const;
400 Long_t ClassProperty() const;
401 TObject *Clone(const char *newname="") const override;
403 void Draw(Option_t *option="") override;
404 void Dump() const override { TDictionary::Dump(); }
405 void Dump(const void *obj, Bool_t noAddr = kFALSE) const;
406 char *EscapeChars(const char *text) const;
412 void ForceReload (TClass* oldcl);
416 Bool_t HasInterpreterInfoInMemory() const { return nullptr != fClassInfo; }
423 TMethod *GetClassMethod(const char *name, const char *params, Bool_t objectIsConst = kFALSE);
424 TMethod *GetClassMethodWithPrototype(const char *name, const char *proto,
428 if (!fVersionUsed.load(std::memory_order_relaxed))
430 return fClassVersion;
431 }
432 Int_t GetClassSize() const { return Size(); }
433 TDataMember *GetDataMember(const char *datamember) const;
434 Longptr_t GetDataMemberOffset(const char *membername) const;
435 const char *GetDeclFileName() const;
443 return fClassInfo;
444 }
445 const char *GetContextMenuTitle() const { return fContextMenuTitle; }
447 auto current = fCurrentInfo.load(std::memory_order_relaxed);
448 if (current) return current;
449 else return DetermineCurrentStreamerInfo();
450 }
459 TCollection *GetListOfMethodOverloads(const char* name) const;
460 TList *GetListOfRealData() const { return fRealData; }
463 const char *GetImplFileName() const { return fImplFileName; }
465 TClass *GetActualClass(const void *object) const;
466 TClass *GetBaseClass(const char *classname);
467 TClass *GetBaseClass(const TClass *base);
468 Int_t GetBaseClassOffset(const TClass *toBase, void *address = nullptr, bool isDerivedObject = true);
469 TClass *GetBaseDataMember(const char *datamember);
476 TList *GetMenuList() const;
477 TMethod *GetMethod(const char *method, const char *params, Bool_t objectIsConst = kFALSE);
480 TMethod *GetMethodAny(const char *method);
481 TMethod *GetMethodAllAny(const char *method);
482 Int_t GetNdata();
485 ROOT::NewFunc_t GetNew() const;
488 TClass *const*GetPersistentRef() const { return fPersistentRef; }
489 TRealData *GetRealData(const char *name) const;
493 const char *GetSharedLibs();
495 EState GetState() const { return fState; }
499 const TObjArray *GetStreamerInfos() const { return fStreamerInfo; }
503 const std::type_info *GetTypeInfo() const { return fTypeInfo; };
504
505 /// @brief Return 'true' if we can guarantee that if this class (or any class in
506 /// this class inheritance hierarchy) overload TObject::Hash it also starts
507 /// the RecursiveRemove process from its own destructor.
514 /// @brief The class has a Streamer method and it is implemented by the user or an older (not StreamerInfo based) automatic streamer.
516 Bool_t HasDictionary() const;
517 static Bool_t HasDictionarySelection(const char* clname);
519 void GetMissingDictionaries(THashTable& result, bool recurse = false);
521 Bool_t InheritsFrom(const char *cl) const override;
522 Bool_t InheritsFrom(const TClass *cl) const override;
524 Bool_t IsFolder() const override { return kTRUE; }
525 Bool_t IsLoaded() const;
526 Bool_t IsForeign() const;
529 Bool_t IsVersioned() const { return !( GetClassVersion()<=1 && IsForeign() ); }
530 Bool_t IsTObject() const;
531 static TClass *LoadClass(const char *requestedname, Bool_t silent);
532 void ls(Option_t *opt="") const override;
533 void MakeCustomMenuList();
535 void Move(void *arenaFrom, void *arenaTo) const;
536 void *New(ENewType defConstructor = kClassNew, Bool_t quiet = kFALSE) const;
537 void *New(void *arena, ENewType defConstructor = kClassNew) const;
538 void *NewArray(Long_t nElements, ENewType defConstructor = kClassNew) const;
539 void *NewArray(Long_t nElements, void *arena, ENewType defConstructor = kClassNew) const;
540 ObjectPtr NewObject(ENewType defConstructor = kClassNew, Bool_t quiet = kFALSE) const;
541 ObjectPtr NewObject(void *arena, ENewType defConstructor = kClassNew) const;
542 ObjectPtr NewObjectArray(Long_t nElements, ENewType defConstructor = kClassNew) const;
543 ObjectPtr NewObjectArray(Long_t nElements, void *arena, ENewType defConstructor = kClassNew) const;
544 virtual void PostLoadCheck();
545 Long_t Property() const override;
546 Int_t ReadBuffer(TBuffer &b, void *pointer, Int_t version, UInt_t start, UInt_t count);
547 Int_t ReadBuffer(TBuffer &b, void *pointer);
548 static void RegisterReadRules(ROOT::TSchemaRule::RuleType_t, const char *classname,
549 std::vector<::ROOT::Internal::TSchemaHelper> &&rules);
552 void ReplaceWith(TClass *newcl) const;
553 void ResetCaches();
554 void ResetClassInfo(Long_t tagnum);
555 void ResetClassInfo();
557 void ResetMenuList();
558 Int_t Size() const;
561 void SetContextMenuTitle(const char *title);
575 void SetUnloaded();
576 Int_t WriteBuffer(TBuffer &b, void *pointer, const char *info="");
577
580 void AdoptMemberStreamer(const char *name, TMemberStreamer *strm);
584
585 // Function to retrieve the TClass object and dictionary function
586 static void AddClass(TClass *cl);
588 static void RemoveClass(TClass *cl);
590 static TClass *GetClass(const char *name, Bool_t load = kTRUE, Bool_t silent = kFALSE);
591 static TClass *GetClass(const char *name, Bool_t load, Bool_t silent, size_t hint_pair_offset, size_t hint_pair_size);
592 static TClass *GetClass(const std::type_info &typeinfo, Bool_t load = kTRUE, Bool_t silent = kFALSE, size_t hint_pair_offset = 0, size_t hint_pair_size = 0);
594 template<typename T>
595 static TClass *GetClass(Bool_t load = kTRUE, Bool_t silent = kFALSE);
596 static Bool_t GetClass(DeclId_t id, std::vector<TClass*> &classes);
597 static DictFuncPtr_t GetDict (const char *cname);
598 static DictFuncPtr_t GetDict (const std::type_info &info);
599
600 static Int_t AutoBrowse(TObject *obj, TBrowser *browser);
601 static ENewType IsCallingNew();
602 static TClass *Load(TBuffer &b);
603 void Store(TBuffer &b) const;
604
605 // Pseudo-method apply to the 'obj'. In particular those are used to
606 // implement TObject like methods for non-TObject classes.
607 Int_t Browse(void *obj, TBrowser *b) const;
608 void DeleteArray(void *ary, Bool_t dtorOnly = kFALSE);
609 void DeleteArray(ObjectPtr ary, Bool_t dtorOnly = kFALSE);
610 void Destructor(void *obj, Bool_t dtorOnly = kFALSE);
611 void Destructor(ObjectPtr obj, Bool_t dtorOnly = kFALSE);
612 void *DynamicCast(const TClass *base, void *obj, Bool_t up = kTRUE);
613 const void *DynamicCast(const TClass *base, const void *obj, Bool_t up = kTRUE);
614 Bool_t IsFolder(void *obj) const;
615
616 inline void Streamer(void *obj, TBuffer &b, const TClass *onfile_class = nullptr) const
617 {
618 // Inline for performance, skipping one function call.
619#ifdef R__NO_ATOMIC_FUNCTION_POINTER
620 fStreamerImpl(this,obj,b,onfile_class);
621#else
622 auto t = fStreamerImpl.load();
623 t(this,obj,b,onfile_class);
624#endif
625 }
626
627 ClassDefOverride(TClass,0) //Dictionary containing class information
628};
629
630namespace ROOT {
631namespace Internal {
632template <typename T>
634{
635 return T::Class();
636}
637
638template <typename T>
641 return TClass::GetClass(typeid(T), load, silent);
642 }
643};
644
645template <typename F, typename S>
646struct TClassGetClassHelper<std::pair<F, S> > {
647 static TClass *GetClass(Bool_t load, Bool_t silent) {
648 using pair_t = std::pair<F,S>;
649 size_t hint_offset = offsetof(pair_t, second);
650 return TClass::GetClass(typeid(std::pair<F, S>), load, silent, hint_offset, sizeof(std::pair<F,S>));
651 }
652};
653
654template <typename T>
655TClass *GetClassHelper(Bool_t load, Bool_t silent, std::false_type)
656{
658}
659
660} // namespace Internal
661} // namespace ROOT
662
663template <typename T>
665{
666 typename std::is_base_of<TObject, T>::type tag;
667 return ROOT::Internal::GetClassHelper<T>(load, silent, tag);
668}
669
670namespace ROOT {
671
672template <typename T> TClass *GetClass(T * /* dummy */) { return TClass::GetClass<T>(); }
673template <typename T> TClass *GetClass(const T * /* dummy */) { return TClass::GetClass<T>(); }
674
675#ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
676 // This can only be used when the template overload resolution can distinguish between T* and T**
677 template <typename T> TClass* GetClass( T** /* dummy */) { return TClass::GetClass<T>(); }
678 template <typename T> TClass* GetClass(const T** /* dummy */) { return TClass::GetClass<T>(); }
679 template <typename T> TClass* GetClass( T* const* /* dummy */) { return TClass::GetClass<T>(); }
680 template <typename T> TClass* GetClass(const T* const* /* dummy */) { return TClass::GetClass<T>(); }
681#endif
682
683 extern TClass *CreateClass(const char *cname, Version_t id,
684 const char *dfil, const char *ifil,
685 Int_t dl, Int_t il);
686}
687
688#endif // ROOT_TClass
#define b(i)
Definition RSha256.hxx:100
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
long Longptr_t
Definition RtypesCore.h:75
short Version_t
Definition RtypesCore.h:65
unsigned char UChar_t
Definition RtypesCore.h:38
long Long_t
Definition RtypesCore.h:54
unsigned int UInt_t
Definition RtypesCore.h:46
short Short_t
Definition RtypesCore.h:39
constexpr Bool_t kFALSE
Definition RtypesCore.h:94
constexpr Bool_t kTRUE
Definition RtypesCore.h:93
const char Option_t
Definition RtypesCore.h:66
TClass *(* DictFuncPtr_t)()
Definition Rtypes.h:85
#define BIT(n)
Definition Rtypes.h:90
void(* MemberStreamerFunc_t)(TBuffer &, void *, Int_t)
Definition Rtypes.h:79
TClass *(* IsAGlobalFunc_t)(const TClass *, const void *obj)
Definition Rtypes.h:101
void(* ShowMembersFunc_t)(const void *obj, TMemberInspector &R__insp, Bool_t isTransient)
Definition Rtypes.h:99
#define ClassDefOverride(name, id)
Definition Rtypes.h:346
void(* ClassStreamerFunc_t)(TBuffer &, void *)
Definition Rtypes.h:77
void(* ClassConvStreamerFunc_t)(TBuffer &, void *, const TClass *)
Definition Rtypes.h:78
ROOT::TMapDeclIdToTClass DeclIdMap_t
Definition TClass.h:82
ROOT::TMapTypeToTClass IdMap_t
Definition TClass.h:81
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
@ kIsClass
Definition TDictionary.h:65
@ kIsStruct
Definition TDictionary.h:66
@ kIsUnion
Definition TDictionary.h:67
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
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 filename
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 offset
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 r
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 result
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 cname
Option_t Option_t TPoint TPoint const char mode
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 Atom_t Atom_t Time_t type
Option_t Option_t TPoint TPoint const char text
char name[80]
Definition TGX11.cxx:110
const char * proto
Definition civetweb.c:17535
Each class (see TClass) has a linked list of its base class(es).
Definition TBaseClass.h:33
Using a TBrowser one can browse all ROOT objects.
Definition TBrowser.h:37
Buffer base class used for serializing objects.
Definition TBuffer.h:43
TDeclNameRegistry & fNoInfoOrEmuOrFwdDeclNameRegistry
Definition TClass.h:180
InsertTClassInRegistryRAII(TClass::EState &state, const char *name, TDeclNameRegistry &emuRegistry)
Definition TClass.cxx:248
Bool_t HasDeclName(const char *name) const
Definition TClass.cxx:223
std::unordered_set< std::string > fClassNamesSet
Definition TClass.h:172
void AddQualifiedName(const char *name)
Extract this part of the name.
Definition TClass.cxx:196
TDeclNameRegistry(Int_t verbLevel=0)
TDeclNameRegistry class constructor.
Definition TClass.cxx:185
std::atomic_flag fSpinLock
Definition TClass.h:173
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:84
TClass *const * GetPersistentRef() const
Definition TClass.h:488
UInt_t GetCheckSum(ECheckSum code=kCurrentCheckSum) const
Call GetCheckSum with validity check.
Definition TClass.cxx:6619
Bool_t IsSyntheticPair() const
Definition TClass.h:528
RepoCont_t fObjectVersionRepository
Definition TClass.h:347
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=nullptr) const
Definition TClass.h:616
ShowMembersFunc_t fShowMembers
Definition TClass.h:228
TDataMember * GetDataMember(const char *datamember) const
Return pointer to datamember object with name "datamember".
Definition TClass.cxx:3540
TVirtualIsAProxy * fIsA
Definition TClass.h:232
TList * GetListOfUsingDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of using declarations of a class.
Definition TClass.cxx:3883
void ForceReload(TClass *oldcl)
we found at least one equivalent.
Definition TClass.cxx:1405
ROOT::DelArrFunc_t fDeleteArray
Definition TClass.h:241
Bool_t CanSplit() const
Return true if the data member of this TClass can be saved separately.
Definition TClass.cxx:2420
TClassStreamer * fStreamer
Definition TClass.h:229
void SetDirectoryAutoAdd(ROOT::DirAutoAdd_t dirAutoAddFunc)
Install a new wrapper around the directory auto add function.
Definition TClass.cxx:7149
void * NewArray(Long_t nElements, ENewType defConstructor=kClassNew) const
Return a pointer to a newly allocated array of objects of this class.
Definition TClass.cxx:5302
static TDeclNameRegistry fNoInfoOrEmuOrFwdDeclNameRegistry
Definition TClass.h:331
friend class ROOT::TGenericClassInfo
Definition TClass.h:88
TListOfFunctionTemplates * fFuncTemplate
Definition TClass.h:209
ClassStreamerFunc_t fStreamerFunc
Definition TClass.h:244
void AdoptReferenceProxy(TVirtualRefProxy *proxy)
Adopt the Reference proxy pointer to indicate that this class represents a reference.
Definition TClass.cxx:6799
TMethod * GetClassMethod(Longptr_t faddr)
Look for a method in this class that has the interface function address faddr.
Definition TClass.cxx:4580
TVirtualStreamerInfo * DetermineCurrentStreamerInfo()
Determine and set pointer to current TVirtualStreamerInfo.
Definition TClass.cxx:5793
void Browse(TBrowser *b) override
This method is called by a browser to get the class information.
Definition TClass.cxx:2111
EState GetState() const
Definition TClass.h:495
ROOT::ESTLType GetCollectionType() const
Return the 'type' of the STL the TClass is representing.
Definition TClass.cxx:2987
void AdoptMemberStreamer(const char *name, TMemberStreamer *strm)
Adopt the TMemberStreamer pointer to by p and use it to Stream non basic member name.
Definition TClass.cxx:6817
void ResetInstanceCount()
Definition TClass.h:556
ClassStreamerFunc_t GetStreamerFunc() const
Get a wrapper/accessor function around this class custom streamer (member function).
Definition TClass.cxx:3040
void RemoveStreamerInfo(Int_t slot)
Remove and delete the StreamerInfo in the given slot.
Definition TClass.cxx:7475
void SetCanSplit(Int_t splitmode)
Set the splitability of this class:
Definition TClass.cxx:5767
void AddInstance(Bool_t heap=kFALSE)
Definition TClass.h:387
TList * CreateListOfDataMembers(std::atomic< TListOfDataMembers * > &data, TDictionary::EMemberSelection selection, bool load)
Create the list containing the TDataMembers (of actual data members or members pulled in through usin...
Definition TClass.cxx:3838
TVirtualStreamerInfo * GetStreamerInfoAbstractEmulated(Int_t version=0) const
For the case where the requestor class is emulated and this class is abstract, returns a pointer to t...
Definition TClass.cxx:4806
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
Definition TClass.cxx:5087
void SetMerge(ROOT::MergeFunc_t mergeFunc)
Install a new wrapper around 'Merge'.
Definition TClass.cxx:7090
ConvSIMap_t fConversionStreamerInfo
Definition TClass.h:202
ROOT::DirAutoAdd_t fDirAutoAdd
Definition TClass.h:243
Bool_t HasDataMemberInfo() const
Definition TClass.h:413
TVirtualRefProxy * fRefProxy
cached streamer info used in the last read.
Definition TClass.h:283
TList * GetMenuList() const
Return the list of menu items associated with the class.
Definition TClass.cxx:4438
ROOT::MergeFunc_t fMerge
saved info to call a IsA member function
Definition TClass.h:236
TMethod * GetMethod(const char *method, const char *params, Bool_t objectIsConst=kFALSE)
Find the best method (if there is one) matching the parameters.
Definition TClass.cxx:4508
static TClass * Load(TBuffer &b)
Load class description from I/O buffer and return class object.
Definition TClass.cxx:5824
EState fState
cached of the streaming method to use
Definition TClass.h:280
ROOT::DesFunc_t GetDestructor() const
Return the wrapper around the destructor.
Definition TClass.cxx:7634
TMethod * GetMethodWithPrototype(const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Find the method with a given prototype.
Definition TClass.cxx:4553
void CopyCollectionProxy(const TVirtualCollectionProxy &)
Replaces the collection proxy for this class.
Definition TClass.cxx:2571
Int_t fStreamerType
saved info to call Streamer
Definition TClass.h:279
TList * fRealData
Definition TClass.h:203
UInt_t fOnHeap
Definition TClass.h:221
static void RegisterReadRules(ROOT::TSchemaRule::RuleType_t, const char *classname, std::vector<::ROOT::Internal::TSchemaHelper > &&rules)
Register a set of read rules for a target class.
Definition TClass.cxx:7419
void ls(Option_t *opt="") const override
The ls function lists the contents of a class on stdout.
Definition TClass.cxx:4355
std::atomic< TList * > fBase
Definition TClass.h:204
std::atomic< Char_t > fCanSplit
Definition TClass.h:248
Bool_t HasDictionary() const
Check whether a class has a dictionary or not.
Definition TClass.cxx:4003
const TList * GetListOfAllPublicMethods(Bool_t load=kTRUE)
Returns a list of all public methods of this class and its base classes.
Definition TClass.cxx:3942
Bool_t HasCustomStreamerMember() const
The class has a Streamer method and it is implemented by the user or an older (not StreamerInfo based...
Definition TClass.h:515
void SetDeclFile(const char *name, Short_t line)
Definition TClass.h:564
TList * GetListOfAllPublicDataMembers(Bool_t load=kTRUE)
Returns a list of all public data members of this class and its base classes.
Definition TClass.cxx:3959
TClass(const TClass &tc)=delete
static void AddClassToDeclIdMap(TDictionary::DeclId_t id, TClass *cl)
static: Add a TClass* to the map of classes.
Definition TClass.cxx:576
virtual ~TClass()
TClass dtor. Deletes all list that might have been created.
Definition TClass.cxx:1747
Bool_t fIsSyntheticPair
Indicates whether this class can be split or not. Values are -1, 0, 1, 2.
Definition TClass.h:253
void Destructor(void *obj, Bool_t dtorOnly=kFALSE)
Explicitly call destructor for object.
Definition TClass.cxx:5509
Version_t fClassVersion
Definition TClass.h:224
std::atomic< TVirtualStreamerInfo * > fCurrentInfo
Current 'state' of the class (Emulated,Interpreted,Loaded)
Definition TClass.h:281
TList * GetListOfFunctionTemplates(Bool_t load=kTRUE)
Return TListOfFunctionTemplates for a class.
Definition TClass.cxx:3895
void * DynamicCast(const TClass *base, void *obj, Bool_t up=kTRUE)
Cast obj of this class type up to baseclass cl if up is true.
Definition TClass.cxx:5012
const char * fImplFileName
Definition TClass.h:217
void RegisterStreamerInfo(TVirtualStreamerInfo *info)
Register the StreamerInfo in the given slot, change the State of the TClass as appropriate.
Definition TClass.cxx:7451
TClass & operator=(const TClass &)=delete
std::atomic< UInt_t > fCheckSum
Definition TClass.h:222
void UnregisterAddressInRepository(const char *where, void *location, const TClass *what) const
Definition TClass.cxx:318
std::atomic< TListOfFunctions * > fMethod
Definition TClass.h:210
static void RemoveClassDeclId(TDictionary::DeclId_t id)
Definition TClass.cxx:603
void SetNewArray(ROOT::NewArrFunc_t newArrayFunc)
Install a new wrapper around 'new []'.
Definition TClass.cxx:7114
Bool_t CallShowMembers(const void *obj, TMemberInspector &insp, Bool_t isTransient=kFALSE) const
Call ShowMembers() on the obj of this class type, passing insp and parent.
Definition TClass.cxx:2306
const char * fDeclFileName
Definition TClass.h:216
void SetCollectionProxy(const ROOT::Detail::TCollectionProxyInfo &)
Create the collection proxy object (and the streamer object) from using the information in the TColle...
Definition TClass.cxx:6358
static Bool_t HasDictionarySelection(const char *clname)
Check whether a class has a dictionary or ROOT can load one.
Definition TClass.cxx:4014
void AdoptSchemaRules(ROOT::Detail::TSchemaRuleSet *rules)
Adopt a new set of Data Model Evolution rules.
Definition TClass.cxx:2007
static void StreamerInstrumented(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of instrumented class with a library.
Definition TClass.cxx:6957
TVirtualStreamerInfo * SetStreamerInfo(Int_t version, const char *info="")
Info is a string describing the names and types of attributes written by the class Streamer function.
Definition TClass.cxx:6487
static std::atomic< Int_t > fgClassCount
Definition TClass.h:329
TVirtualStreamerInfo * GetCurrentStreamerInfo()
Definition TClass.h:446
ROOT::DirAutoAdd_t GetDirectoryAutoAdd() const
Return the wrapper around the directory auto add function.
Definition TClass.cxx:7642
void AddImplFile(const char *filename, int line)
Definition TClass.cxx:2053
TCollection * GetListOfMethodOverloads(const char *name) const
Return the collection of functions named "name".
Definition TClass.cxx:3924
std::atomic< TListOfEnums * > fEnums
Definition TClass.h:208
static Bool_t HasNoInfoOrEmuOrFwdDeclaredDecl(const char *)
Definition TClass.cxx:3499
TVirtualMutex * fOVRMutex
Definition TClass.h:345
TList * GetListOfEnums(Bool_t load=kTRUE)
Return a list containing the TEnums of a class.
Definition TClass.cxx:3783
Bool_t IsStartingWithTObject() const
Returns true if this class inherits from TObject and if the start of the TObject parts is at the very...
Definition TClass.cxx:6038
TList * GetListOfMethods(Bool_t load=kTRUE)
Return list containing the TMethods of a class.
Definition TClass.cxx:3909
TClass()
Internal, default constructor.
Definition TClass.cxx:1134
Short_t fDeclFileLine
Definition TClass.h:218
Int_t GetNmethods()
Return the number of methods of this class Note that in case the list of methods is not yet created,...
Definition TClass.cxx:4670
std::atomic< Bool_t > fIsOffsetStreamerSet
Indicates whether the ClassInfo is supposed to be available.
Definition TClass.h:264
void IgnoreTObjectStreamer(Bool_t ignore=kTRUE)
When the class kIgnoreTObjectStreamer bit is set, the automatically generated Streamer will not call ...
Definition TClass.cxx:4938
TClassStreamer * GetStreamer() const
Return the Streamer Class allowing streaming (if any).
Definition TClass.cxx:3015
static IdMap_t * GetIdMap()
Definition TClass.cxx:469
UInt_t GetInstanceCount() const
Definition TClass.h:473
void SetDelete(ROOT::DelFunc_t deleteFunc)
Install a new wrapper around 'delete'.
Definition TClass.cxx:7122
void SetLastReadInfo(TVirtualStreamerInfo *info)
Definition TClass.h:452
static Int_t AutoBrowse(TObject *obj, TBrowser *browser)
Browse external object inherited from TObject.
Definition TClass.cxx:2067
ROOT::NewFunc_t GetNew() const
Return the wrapper around new ThisClass().
Definition TClass.cxx:7602
TClass * GetBaseClass(const char *classname)
Return pointer to the base class "classname".
Definition TClass.cxx:2756
Longptr_t GetDataMemberOffset(const char *membername) const
return offset for member name.
Definition TClass.cxx:3578
Int_t GetNdata()
Return the number of data members of this class Note that in case the list of data members is not yet...
Definition TClass.cxx:4651
void SetDestructor(ROOT::DesFunc_t destructorFunc)
Install a new wrapper around the destructor.
Definition TClass.cxx:7138
virtual void PostLoadCheck()
Do the initialization that can only be done after the CINT dictionary has been fully populated and ca...
Definition TClass.cxx:6068
void LoadClassInfo() const
Try to load the ClassInfo if available.
Definition TClass.cxx:5933
void SetResetAfterMerge(ROOT::ResetAfterMergeFunc_t resetFunc)
Install a new wrapper around 'ResetAfterMerge'.
Definition TClass.cxx:7098
TVirtualStreamerInfo * GetStreamerInfoImpl(Int_t version, Bool_t silent) const
Definition TClass.cxx:4731
Bool_t MatchLegacyCheckSum(UInt_t checksum) const
Return true if the checksum passed as argument is one of the checksum value produced by the older che...
Definition TClass.cxx:6608
TViewPubFunctions * fAllPubMethod
Definition TClass.h:213
ERuntimeProperties
Indicates whether GetClassVersion has been called.
Definition TClass.h:267
Bool_t HasInterpreterInfo() const
Definition TClass.h:417
static void AddClass(TClass *cl)
static: Add a class to the list and map of classes.
Definition TClass.cxx:555
void GetMissingDictionariesForBaseClasses(TCollection &result, TCollection &visited, bool recurse)
Verify the base classes always.
Definition TClass.cxx:4024
ROOT::Detail::TSchemaRuleSet * fSchemaRules
Pointer to reference proxy if this class represents a reference.
Definition TClass.h:284
std::atomic< Long_t > fProperty
Definition TClass.h:258
TVirtualStreamerInfo * GetLastReadInfo() const
Definition TClass.h:451
static void StreamerDefault(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Default streaming in cases where either we have no way to know what to do or if Property() has not ye...
Definition TClass.cxx:6994
void SetUnloaded()
Call this method to indicate that the shared library containing this class's code has been removed (u...
Definition TClass.cxx:6423
ROOT::DelArrFunc_t GetDeleteArray() const
Return the wrapper around delete [] ThisObject.
Definition TClass.cxx:7626
Bool_t HasInterpreterInfoInMemory() const
Definition TClass.h:416
TList * fClassMenuList
Definition TClass.h:214
ClassConvStreamerFunc_t fConvStreamerFunc
Definition TClass.h:245
void BuildRealData(void *pointer=nullptr, Bool_t isTransient=kFALSE)
Build a full list of persistent data members.
Definition TClass.cxx:2132
void SetRuntimeProperties()
Internal routine to set calculate the class properties that can only be known at run-time,...
Definition TClass.cxx:6307
void BuildEmulatedRealData(const char *name, Longptr_t offset, TClass *cl, Bool_t isTransient=kFALSE)
Build the list of real data for an emulated class.
Definition TClass.cxx:2213
std::unordered_map< std::string, std::vector< ROOT::Internal::TSchemaHelper > > SchemaHelperMap_t
Definition TClass.h:367
static TClass * LoadClass(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
Definition TClass.cxx:5858
TString fSharedLibs
Definition TClass.h:230
const std::type_info * GetTypeInfo() const
Definition TClass.h:503
void SetStreamerImpl(Int_t streamerType)
Internal routine to set fStreamerImpl based on the value of fStreamerType.
Definition TClass.cxx:6328
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
Definition TClass.cxx:3867
ENewType
Definition TClass.h:110
@ kClassNew
Definition TClass.h:110
@ kRealNew
Definition TClass.h:110
@ kDummyNew
Definition TClass.h:110
void Move(void *arenaFrom, void *arenaTo) const
Register the fact that an object was moved from the memory location 'arenaFrom' to the memory locatio...
Definition TClass.cxx:4424
static DeclIdMap_t * GetDeclIdMap()
Definition TClass.cxx:480
Short_t GetDeclFileLine() const
Definition TClass.h:436
void SetStreamerFunc(ClassStreamerFunc_t strm)
Set a wrapper/accessor function around this class custom streamer.
Definition TClass.cxx:7043
const char * GetImplFileName() const
Definition TClass.h:463
TList * GetListOfRealData() const
Definition TClass.h:460
Int_t Size() const
Return size of object of this class.
Definition TClass.cxx:5813
void SetCurrentStreamerInfo(TVirtualStreamerInfo *info)
Set pointer to current TVirtualStreamerInfo.
Definition TClass.cxx:5805
static DictFuncPtr_t GetDict(const char *cname)
Return a pointer to the dictionary loading function generated by rootcint.
Definition TClass.cxx:3523
Longptr_t fOffsetStreamer
Properties that can only be evaluated at run-time.
Definition TClass.h:278
Int_t fSizeof
Definition TClass.h:246
ROOT::NewArrFunc_t GetNewArray() const
Return the wrapper around new ThisClass[].
Definition TClass.cxx:7610
std::multimap< void *, Version_t > RepoCont_t
Definition TClass.h:346
static void StreamerTObjectEmulated(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of TObjects when we do not have the library defining the class.
Definition TClass.cxx:6944
ROOT::NewFunc_t fNew
Definition TClass.h:238
@ kLoading
Definition TClass.h:335
@ kUnloading
Definition TClass.h:335
ROOT::ResetAfterMergeFunc_t GetResetAfterMerge() const
Return the wrapper around Merge.
Definition TClass.cxx:7594
TMethod * GetClassMethodWithPrototype(const char *name, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Find the method with a given prototype.
Definition TClass.cxx:4624
Bool_t CanIgnoreTObjectStreamer()
Definition TClass.h:399
void SetGlobalIsA(IsAGlobalFunc_t)
This function installs a global IsA function for this class.
Definition TClass.cxx:6414
void GetMissingDictionariesForMembers(TCollection &result, TCollection &visited, bool recurse)
Verify the Data Members.
Definition TClass.cxx:4041
TObjArray * fStreamerInfo
Definition TClass.h:201
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
Definition TClass.cxx:2033
TObject * Clone(const char *newname="") const override
Create a Clone of this TClass object using a different name but using the same 'dictionary'.
Definition TClass.cxx:2507
TVirtualCollectionProxy * fCollectionProxy
Definition TClass.h:223
static ENewType IsCallingNew()
Static method returning the defConstructor flag passed to TClass::New().
Definition TClass.cxx:6011
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
Definition TClass.cxx:3733
void Store(TBuffer &b) const
Store class description on I/O buffer.
Definition TClass.cxx:5969
void InterpretedShowMembers(void *obj, TMemberInspector &insp, Bool_t isTransient)
Do a ShowMembers() traversal of all members and base classes' members using the reflection informatio...
Definition TClass.cxx:2343
static THashTable * fgClassTypedefHash
Definition TClass.h:341
Bool_t HasDirectStreamerInfoUse() const
Definition TClass.h:415
void Init(const char *name, Version_t cversion, const std::type_info *info, TVirtualIsAProxy *isa, const char *dfil, const char *ifil, Int_t dl, Int_t il, ClassInfo_t *classInfo, Bool_t silent)
Initialize a TClass object.
Definition TClass.cxx:1438
std::atomic< TListOfDataMembers * > fData
Definition TClass.h:205
static void StreamerStreamerInfo(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of where we should directly use the StreamerInfo.
Definition TClass.cxx:6979
const TObjArray * GetStreamerInfos() const
Definition TClass.h:499
void SetClassVersion(Version_t version)
Private function.
Definition TClass.cxx:5784
char * EscapeChars(const char *text) const
Introduce an escape character (@) in front of a special chars.
Definition TClass.cxx:2669
const std::type_info * fTypeInfo
Definition TClass.h:227
std::atomic< TVirtualStreamerInfo * > fLastReadInfo
cached current streamer info.
Definition TClass.h:282
std::atomic< std::map< std::string, TObjArray * > * > ConvSIMap_t
Persistent address of pointer to this TClass object and its successors.
Definition TClass.h:199
static void StreamerTObject(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of TObjects.
Definition TClass.cxx:6914
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
Definition TClass.cxx:6021
EStreamerType
Definition TClass.h:337
@ kDefault
Definition TClass.h:337
@ kEmulatedStreamer
Definition TClass.h:337
@ kExternal
Definition TClass.h:337
@ kForeign
Definition TClass.h:337
@ kInstrumented
Definition TClass.h:337
@ kTObject
Definition TClass.h:337
static Bool_t AddRule(const char *rule)
Add a schema evolution customization rule.
Definition TClass.cxx:1977
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
Definition TClass.cxx:6047
const char * GetContextMenuTitle() const
Definition TClass.h:445
static void RemoveClass(TClass *cl)
static: Remove a class from the list and map of classes
Definition TClass.cxx:585
Bool_t HasLocalHashMember() const
Returns true if this class has an definition and/or overload of the member function Hash.
Definition TClass.cxx:7576
void DeleteArray(void *ary, Bool_t dtorOnly=kFALSE)
Explicitly call operator delete[] for an array.
Definition TClass.cxx:5638
ClassConvStreamerFunc_t GetConvStreamerFunc() const
Get a wrapper/accessor function around this class custom conversion streamer (member function).
Definition TClass.cxx:3048
Bool_t IsForeign() const
Return kTRUE is the class is Foreign (the class does not have a Streamer method).
Definition TClass.cxx:6056
ClassInfo_t * GetClassInfo() const
Definition TClass.h:440
ROOT::DelFunc_t fDelete
Definition TClass.h:240
TViewPubDataMembers * fAllPubData
Definition TClass.h:212
ClassInfo_t * fClassInfo
Definition TClass.h:225
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
Definition TClass.cxx:4696
Bool_t HasConsistentHashMember()
Return 'true' if we can guarantee that if this class (or any class in this class inheritance hierarch...
Definition TClass.h:508
void AdoptStreamer(TClassStreamer *strm)
Adopt a TClassStreamer object.
Definition TClass.cxx:7015
TClass * GetBaseDataMember(const char *datamember)
Return pointer to (base) class that contains datamember.
Definition TClass.cxx:2928
ECheckSum
Definition TClass.h:111
@ kLatestCheckSum
Definition TClass.h:120
@ kNoRange
Definition TClass.h:115
@ kCurrentCheckSum
Definition TClass.h:112
@ kNoBaseCheckSum
Definition TClass.h:119
@ kReflex
Definition TClass.h:117
@ kReflexNoComment
Definition TClass.h:114
@ kWithTypeDef
Definition TClass.h:116
@ kNoRangeCheck
Definition TClass.h:118
@ kNoEnum
Definition TClass.h:113
void Dump() const override
Dump contents of object on stdout.
Definition TClass.h:404
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
Definition TClass.cxx:4971
Int_t GetBaseClassOffset(const TClass *toBase, void *address=nullptr, bool isDerivedObject=true)
Definition TClass.cxx:2892
ObjectPtr NewObjectArray(Long_t nElements, ENewType defConstructor=kClassNew) const
Return a pointer to a newly allocated array of objects of this class.
Definition TClass.cxx:5318
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
Definition TClass.cxx:2998
void ResetCaches()
To clean out all caches.
Definition TClass.cxx:4312
std::atomic< Bool_t > fVersionUsed
saved remember if fOffsetStreamer has been set.
Definition TClass.h:265
Int_t GetClassSize() const
Definition TClass.h:432
Long_t ClassProperty() const
Return the C++ property of this class, eg.
Definition TClass.cxx:2497
const char * GetSharedLibs()
Get the list of shared libraries containing the code for class cls.
Definition TClass.cxx:3720
void CalculateStreamerOffset() const
Calculate the offset between an object of this class to its base class TObject.
Definition TClass.cxx:2284
void GetMissingDictionariesForPairElements(TCollection &result, TCollection &visited, bool recurse)
Definition TClass.cxx:4070
void ReplaceWith(TClass *newcl) const
Definition TClass.cxx:4239
void RegisterAddressInRepository(const char *where, void *location, const TClass *what) const
Definition TClass.cxx:290
Long_t Property() const override
Returns the properties of the TClass as a bit field stored as a Long_t value.
Definition TClass.cxx:6195
Bool_t HasDefaultConstructor(Bool_t testio=kFALSE) const
Return true if we have access to a constructor usable for I/O.
Definition TClass.cxx:7548
void GetMenuItems(TList *listitems)
Returns list of methods accessible by context menu.
Definition TClass.cxx:3971
void SetNew(ROOT::NewFunc_t newFunc)
Install a new wrapper around 'new'.
Definition TClass.cxx:7106
std::atomic< TMethodCall * > fIsAMethod
Definition TClass.h:234
static Int_t ReadRules()
Read the class.rules files from the default location:.
Definition TClass.cxx:1907
Bool_t CanSplitBaseAllow()
Pointer to the function implementing streaming for this class.
Definition TClass.cxx:2348
void MoveAddressInRepository(const char *where, void *oldadd, void *newadd, const TClass *what) const
Definition TClass.cxx:337
std::atomic< StreamerImpl_t > fStreamerImpl
Definition TClass.h:290
void SetContextMenuTitle(const char *title)
Change (i.e. set) the title of the TNamed.
Definition TClass.cxx:6383
ShowMembersFunc_t GetShowMembersWrapper() const
Definition TClass.h:494
void SetMemberStreamer(const char *name, MemberStreamerFunc_t strm)
Install a new member streamer (p will be copied).
Definition TClass.cxx:6858
std::atomic< TClass ** > fPersistentRef
Definition TClass.h:197
IsAGlobalFunc_t fGlobalIsA
pointer to the class's IsA proxy.
Definition TClass.h:233
TVirtualStreamerInfo * GetConversionStreamerInfo(const char *onfile_classname, Int_t version) const
Return a Conversion StreamerInfo from the class 'classname' for version number 'version' to this clas...
Definition TClass.cxx:7207
void(* StreamerImpl_t)(const TClass *pThis, void *obj, TBuffer &b, const TClass *onfile_class)
Schema evolution rules.
Definition TClass.h:286
Short_t GetImplFileLine() const
Definition TClass.h:464
TMethod * GetMethodAllAny(const char *method)
Return pointer to method without looking at parameters.
Definition TClass.cxx:4481
std::atomic< UChar_t > fRuntimeProperties
Definition TClass.h:276
@ kInterpreted
Definition TClass.h:129
@ kHasTClassInit
Definition TClass.h:130
@ kEmulated
Definition TClass.h:128
@ kNoInfo
Definition TClass.h:125
@ kLoaded
Definition TClass.h:133
@ kForwardDeclared
Definition TClass.h:127
@ kNamespaceForMeta
Definition TClass.h:134
TVirtualStreamerInfo * FindConversionStreamerInfo(const char *onfile_classname, UInt_t checksum) const
Return a Conversion StreamerInfo from the class 'classname' for the layout represented by 'checksum' ...
Definition TClass.cxx:7314
Int_t GetBaseClassOffsetRecurse(const TClass *toBase)
Return data member offset to the base class "cl".
Definition TClass.cxx:2806
ROOT::DelFunc_t GetDelete() const
Return the wrapper around delete ThisObject.
Definition TClass.cxx:7618
static TClass * LoadClassDefault(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
Definition TClass.cxx:5880
Bool_t IsVersioned() const
Definition TClass.h:529
void SetClassSize(Int_t sizof)
Definition TClass.h:310
TMethod * FindClassOrBaseMethodWithId(DeclId_t faddr)
Find a method with decl id in this class or its bases.
Definition TClass.cxx:4537
static void StreamerExternal(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
There is special streamer for the class.
Definition TClass.cxx:6902
friend bool operator&(UChar_t l, ERuntimeProperties r)
Definition TClass.h:273
Long_t fClassProperty
Property See TClass::Property() for details.
Definition TClass.h:259
TString fContextMenuTitle
Definition TClass.h:226
static void StreamerTObjectInitialized(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of TObjects when fIsOffsetStreamerSet is known to have been set.
Definition TClass.cxx:6928
static void ConvStreamerInstrumented(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of instrumented class with a library.
Definition TClass.cxx:6966
std::atomic< Bool_t > fCanLoadClassInfo
Whether info was loaded from a root pcm.
Definition TClass.h:263
void SetConvStreamerFunc(ClassConvStreamerFunc_t strm)
Set a wrapper/accessor function around this class custom conversion streamer.
Definition TClass.cxx:7066
TVirtualStreamerInfo * FindStreamerInfo(TObjArray *arr, UInt_t checksum) const
Find the TVirtualStreamerInfo in the StreamerInfos corresponding to checksum.
Definition TClass.cxx:7187
void GetMissingDictionaries(THashTable &result, bool recurse=false)
Get the classes that have a missing dictionary starting from this one.
Definition TClass.cxx:4184
void MakeCustomMenuList()
Makes a customizable version of the popup menu list, i.e.
Definition TClass.cxx:4380
TVirtualStreamerInfo * FindStreamerInfoAbstractEmulated(UInt_t checksum) const
For the case where the requestor class is emulated and this class is abstract, returns a pointer to t...
Definition TClass.cxx:4869
static SchemaHelperMap_t & GetReadRulesRegistry(ROOT::TSchemaRule::RuleType_t type)
Return the registry for the unassigned read rules.
Definition TClass.cxx:2019
TMethod * GetMethodAny(const char *method)
Return pointer to method without looking at parameters.
Definition TClass.cxx:4471
TVirtualIsAProxy * GetIsAProxy() const
Return the proxy implementing the IsA functionality.
Definition TClass.cxx:3056
Version_t GetClassVersion() const
Definition TClass.h:427
ROOT::MergeFunc_t GetMerge() const
Return the wrapper around Merge.
Definition TClass.cxx:7586
ROOT::ResetAfterMergeFunc_t fResetAfterMerge
Definition TClass.h:237
Bool_t IsFolder() const override
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
Definition TClass.h:524
UInt_t fInstanceCount
Definition TClass.h:220
std::atomic< Bool_t > fHasRootPcmInfo
C++ Property of the class (is abstract, has virtual table, etc.)
Definition TClass.h:262
TClass * GetActualClass(const void *object) const
Return a pointer to the real class of the object.
Definition TClass.cxx:2708
ROOT::DesFunc_t fDestructor
Definition TClass.h:242
const char * GetDeclFileName() const
Return name of the file containing the declaration of this class.
Definition TClass.cxx:3564
ObjectPtr NewObject(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Definition TClass.cxx:5101
TRealData * GetRealData(const char *name) const
Return pointer to TRealData element with name "name".
Definition TClass.cxx:3604
void SetDeleteArray(ROOT::DelArrFunc_t deleteArrayFunc)
Install a new wrapper around 'delete []'.
Definition TClass.cxx:7130
Bool_t fHasCustomStreamerMember
The class has a Streamer method and it is implemented by the user or an older (not StreamerInfo based...
Definition TClass.h:256
TFunctionTemplate * GetFunctionTemplate(const char *name)
Definition TClass.cxx:3704
void ResetClassInfo()
Make sure that the current ClassInfo is up to date.
Definition TClass.cxx:4277
ROOT::NewArrFunc_t fNewArray
Definition TClass.h:239
Int_t ReadBuffer(TBuffer &b, void *pointer, Int_t version, UInt_t start, UInt_t count)
Function called by the Streamer functions to deserialize information from buffer b into object at p.
Definition TClass.cxx:6872
void SetImplFileName(const char *implFileName)
Definition TClass.h:569
void GetMissingDictionariesWithRecursionCheck(TCollection &result, TCollection &visited, bool recurse)
From the second level of recursion onwards it is different state check.
Definition TClass.cxx:4087
bool IsClassStructOrUnion() const
Definition TClass.h:357
EStatusBits
Definition TClass.h:95
@ kHasLocalHashMember
Definition TClass.h:99
@ kHasNameMapNode
Definition TClass.h:108
@ kIgnoreTObjectStreamer
Definition TClass.h:100
@ kUnloaded
Definition TClass.h:101
@ kWarned
Definition TClass.h:107
@ kStartWithTObject
Definition TClass.h:106
@ kIsTObject
Definition TClass.h:103
@ kIsForeign
Definition TClass.h:104
@ kReservedLoading
Definition TClass.h:96
std::atomic< TListOfDataMembers * > fUsingData
Definition TClass.h:206
TListOfFunctions * GetMethodList()
Return (create an empty one if needed) the list of functions.
Definition TClass.cxx:4452
TVirtualRefProxy * GetReferenceProxy() const
Definition TClass.h:490
void ResetMenuList()
Resets the menu list to it's standard value.
Definition TClass.cxx:4340
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Definition TClass.cxx:3069
Int_t WriteBuffer(TBuffer &b, void *pointer, const char *info="")
Function called by the Streamer functions to serialize object at p to buffer b.
Definition TClass.cxx:6893
static TClass * LoadClassCustom(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
Definition TClass.cxx:5910
UInt_t GetHeapInstanceCount() const
Definition TClass.h:474
Short_t fImplFileLine
Definition TClass.h:219
This class defines an interface to the cling C++ interpreter.
Definition TCling.h:102
Collection abstract base class.
Definition TCollection.h:65
All ROOT classes may have RTTI (run time type identification) support added.
Definition TDataMember.h:31
This class defines an abstract interface that must be implemented by all classes that contain diction...
EMemberSelection
Kinds of members to include in lists.
const void * DeclId_t
Dictionary for function template This class describes one single function template.
THashTable implements a hash table to store TObject's.
Definition THashTable.h:35
A collection of TDataMember objects designed for fast access given a DeclId_t and for keep track of T...
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
A collection of TFunction objects designed for fast access given a DeclId_t and for keep track of TFu...
A collection of TFunction objects designed for fast access given a DeclId_t and for keep track of TFu...
A doubly linked list.
Definition TList.h:38
Abstract base class for accessing the data-members of a class.
Method or function calling interface.
Definition TMethodCall.h:37
Each ROOT class (see TClass) has a linked list of methods.
Definition TMethod.h:38
An array of TObjects.
Definition TObjArray.h:31
Mother of all ROOT objects.
Definition TObject.h:41
virtual void Dump() const
Dump contents of object on stdout.
Definition TObject.cxx:365
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition TObject.h:201
Persistent version of a TClass.
Definition TProtoClass.h:38
The TRealData class manages the effective list of all data members for a given class.
Definition TRealData.h:30
Describes a persistent version of a class.
Basic string class.
Definition TString.h:139
View implementing the TList interface and giving access all the TDictionary describing public data me...
View implementing the TList interface and giving access all the TFunction describing public methods i...
Defines a common interface to inspect/change the contents of an object that represents a collection.
This class implements a mutex interface.
Abstract Interface class describing Streamer information for one class.
TLine * line
TClass * GetClassHelper(Bool_t, Bool_t, std::true_type)
Definition TClass.h:633
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
void(* DirAutoAdd_t)(void *, TDirectory *)
Definition Rtypes.h:119
void(* ResetAfterMergeFunc_t)(void *, TFileMergeInfo *)
Definition Rtypes.h:121
void(* DesFunc_t)(void *)
Definition Rtypes.h:118
TClass * GetClass(T *)
Definition TClass.h:672
TClass * CreateClass(const char *cname, Version_t id, const std::type_info &info, TVirtualIsAProxy *isa, const char *dfil, const char *ifil, Int_t dl, Int_t il)
Global function called by a class' static Dictionary() method (see the ClassDef macro).
Definition TClass.cxx:5978
void(* DelFunc_t)(void *)
Definition Rtypes.h:116
ESTLType
Definition ESTLType.h:28
void *(* NewArrFunc_t)(Long_t size, void *arena)
Definition Rtypes.h:115
EFunctionMatchMode
@ kConversionMatch
void ResetClassVersion(TClass *, const char *, Short_t)
Global function to update the version number.
void(* DelArrFunc_t)(void *)
Definition Rtypes.h:117
void *(* NewFunc_t)(void *)
Definition Rtypes.h:114
Long64_t(* MergeFunc_t)(void *, TCollection *, TFileMergeInfo *)
Definition Rtypes.h:120
static const char * what
Definition stlLoader.cc:5
static TClass * GetClass(Bool_t load, Bool_t silent)
Definition TClass.h:640
TVirtualStreamerInfo * GetAllocator() const
Definition TClass.h:152
void * GetPtr() const
Definition TClass.h:150
TVirtualStreamerInfo * fAllocator
Definition TClass.h:146
ObjectPtr(void *ptr=nullptr, TVirtualStreamerInfo *allocator=nullptr)
Definition TClass.h:148
th1 Draw()
TLine l
Definition textangle.C:4