Logo ROOT  
Reference Guide
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
26#ifdef R__LESS_INCLUDES
27class TObjArray;
28#else
29#include "TObjArray.h"
30// Not used in this header file; user code should #include this directly.
31// #include "TObjString.h"
32// #include "ThreadLocalStorage.h"
33// #include <set>
34#endif
35
36#include <cstddef>
37#include <map>
38#include <string>
39#include <unordered_set>
40#include <vector>
41#include <atomic>
42
43class TBaseClass;
44class TBrowser;
45class TDataMember;
46class TCling;
47class TMethod;
48class TRealData;
49class TBuffer;
52class TMethodCall;
55class THashTable;
59class TListOfEnums;
63class TProtoClass;
64
65namespace ROOT {
66 class TGenericClassInfo;
67 class TMapTypeToTClass;
68 class TMapDeclIdToTClass;
69 namespace Detail {
70 class TSchemaRuleSet;
71 class TCollectionProxyInfo;
72 }
73 namespace Internal {
74 class TCheckHashRecursiveRemoveConsistency;
75 }
76}
77
80
81class TClass : public TDictionary {
82
83friend class TCling;
84friend void ROOT::ResetClassVersion(TClass*, const char*, Short_t);
86friend class TProtoClass;
88friend class TStreamerInfo;
89
90public:
91 // TClass status bits
93 kReservedLoading = BIT(7), // Internal status bits, set and reset only during initialization
94
98 kUnloaded = BIT(16), // The library containing the dictionary for this class was
99 // loaded and has been unloaded from memory.
102 kIsEmulation = BIT(19), // Deprecated
103 kStartWithTObject = BIT(20), // see comments for IsStartingWithTObject()
106 kHasCustomStreamerMember = BIT(23) // The class has a Streamer method and it is implemented by the user or an older (not StreamerInfo based) automatic streamer.
107 };
111 kNoEnum = 1, // Used since v3.3
112 kReflexNoComment = 2, // Up to v5.34.18 (has no range/comment and no typedef at all)
113 kNoRange = 3, // Up to v5.17
114 kWithTypeDef = 4, // Up to v5.34.18 and v5.99/06
115 kReflex = 5, // Up to v5.34.18 (has no typedef at all)
116 kNoRangeCheck = 6, // Up to v5.34.18 and v5.99/06
117 kNoBaseCheckSum = 7, // Up to v5.34.18 and v5.99/06
119 };
120
121 // Describe the current state of the TClass itself.
122 enum EState {
123 kNoInfo, // The state has not yet been initialized, i.e. the TClass
124 // was just created and/or there is no trace of it in the interpreter.
125 kForwardDeclared, // The interpreted knows the entity is a class but that's it.
126 kEmulated, // The information about the class only comes from a TStreamerInfo
127 kInterpreted, // The class is described completely/only in the interpreter database.
128 kHasTClassInit, // The class has a TClass proper bootstrap coming from a run
129 // through rootcling/genreflex/TMetaUtils and the library
130 // containing this dictionary has been loaded in memory.
132 kNamespaceForMeta // Very transient state necessary to bootstrap namespace entries
133 // in ROOT Meta w/o interpreter information
134 };
135
136 // "Typed" pointer that recalls how TClass::New allocated the object.
137 // It is returned by TClass:NewObject and should be passed to TClass::DeleteArray or TClass::Destructor
138 // to delete the object.
139 // It is also used in TVirtualCollectionProxy for the same reasons.
141 {
142 void *fPtr = nullptr;
143
145
146 ObjectPtr(void *ptr = nullptr, TVirtualStreamerInfo *allocator = nullptr) : fPtr(ptr), fAllocator(allocator) {}
147
148 void *GetPtr() const { return fPtr; }
149
151
152 operator bool() const { return fPtr != nullptr; }
153 };
154
155private:
156
157
158
160 // A class which is used to collect decl names starting from normalised
161 // names (typedef resolution is excluded here, just string manipulation
162 // is performed). At the heart of the implementation, an unordered set.
163 public:
164 TDeclNameRegistry(Int_t verbLevel=0);
165 void AddQualifiedName(const char *name);
166 Bool_t HasDeclName(const char *name) const;
168 private:
170 std::unordered_set<std::string> fClassNamesSet;
171 mutable std::atomic_flag fSpinLock; // MSVC doesn't support = ATOMIC_FLAG_INIT;
172 };
173
175 // Trivial RAII used to insert names in the registry
177 const char* fName;
179 public:
180 InsertTClassInRegistryRAII(TClass::EState &state, const char *name, TDeclNameRegistry &emuRegistry);
182 };
183
184 // TClass objects can be created as a result of opening a TFile (in which
185 // they are in emulated mode) or as a result of loading the dictionary for
186 // the corresponding class. When a dictionary is loaded any pre-existing
187 // emulated TClass is replaced by the one created/coming from the dictionary.
188 // To have a reference that always point to the 'current' TClass object for
189 // a given class, one should use a TClassRef.
190 // TClassRef works by holding on to the fPersistentRef which is updated
191 // atomically whenever a TClass is replaced. During the replacement the
192 // value of fPersistentRef is set to zero, leading the TClassRef to call
193 // TClass::GetClass which is also locked by the replacement. At the end
194 // of the replacement, fPersistentRef points to the new TClass object.
195 std::atomic<TClass**> fPersistentRef;//!Persistent address of pointer to this TClass object and its successors.
196
197 typedef std::atomic<std::map<std::string, TObjArray*>*> ConvSIMap_t;
198
199 mutable TObjArray *fStreamerInfo; //Array of TVirtualStreamerInfo
200 mutable ConvSIMap_t fConversionStreamerInfo; //Array of the streamer infos derived from another class.
201 TList *fRealData; //linked list for persistent members including base classes
202 std::atomic<TList*> fBase; //linked list for base classes
203 std::atomic<TListOfDataMembers*> fData; //linked list for data members; non-owning.
204 std::atomic<TListOfDataMembers*> fUsingData;//linked list for data members pulled in through using decls.
205
206 std::atomic<TListOfEnums*> fEnums; //linked list for the enums
207 TListOfFunctionTemplates *fFuncTemplate; //linked list for function templates [Not public until implemented as active list]
208 std::atomic<TListOfFunctions*> fMethod; //linked list for methods
209
210 TViewPubDataMembers*fAllPubData; //all public data members (including from base classes)
211 TViewPubFunctions *fAllPubMethod; //all public methods (including from base classes)
212 mutable TList *fClassMenuList; //list of class menu items
213
214 const char *fDeclFileName; //name of class declaration file
215 const char *fImplFileName; //name of class implementation file
216 Short_t fDeclFileLine; //line of class declaration
217 Short_t fImplFileLine; //line of class implementation
218 UInt_t fInstanceCount; //number of instances of this class
219 UInt_t fOnHeap; //number of instances on heap
220 mutable std::atomic<UInt_t> fCheckSum; //checksum of data members and base classes
222 Version_t fClassVersion; //Class version Identifier
223 ClassInfo_t *fClassInfo; //pointer to CINT class info class
224 TString fContextMenuTitle;//context menu title
225 const std::type_info *fTypeInfo; //pointer to the C++ type information.
226 ShowMembersFunc_t fShowMembers; //pointer to the class's ShowMembers function
227 TClassStreamer *fStreamer; //pointer to streamer function
228 TString fSharedLibs; //shared libraries containing class code
229
230 TVirtualIsAProxy *fIsA; //!pointer to the class's IsA proxy.
231 IsAGlobalFunc_t fGlobalIsA; //pointer to a global IsA function.
232 mutable std::atomic<TMethodCall*> fIsAMethod; //!saved info to call a IsA member function
233
234 ROOT::MergeFunc_t fMerge; //pointer to a function implementing Merging objects of this class.
235 ROOT::ResetAfterMergeFunc_t fResetAfterMerge; //pointer to a function implementing Merging objects of this class.
236 ROOT::NewFunc_t fNew; //pointer to a function newing one object.
237 ROOT::NewArrFunc_t fNewArray; //pointer to a function newing an array of objects.
238 ROOT::DelFunc_t fDelete; //pointer to a function deleting one object.
239 ROOT::DelArrFunc_t fDeleteArray; //pointer to a function deleting an array of objects.
240 ROOT::DesFunc_t fDestructor; //pointer to a function call an object's destructor.
241 ROOT::DirAutoAdd_t fDirAutoAdd; //pointer which implements the Directory Auto Add feature for this class.']'
242 ClassStreamerFunc_t fStreamerFunc; //Wrapper around this class custom Streamer member function.
243 ClassConvStreamerFunc_t fConvStreamerFunc; //Wrapper around this class custom conversion Streamer member function.
244 Int_t fSizeof; //Sizeof the class.
245
246 // Bit field
247 Int_t fCanSplit : 3; //!Indicates whether this class can be split or not. Values are -1, 0, 1, 2
248
249 /// Indicates whether this class represents a pair and was not created from a dictionary nor interpreter info but has
250 /// compiler compatible offset and size (and all the info is in the StreamerInfo per se)
252
253 mutable std::atomic<Long_t> fProperty; //!Property See TClass::Property() for details
254 mutable Long_t fClassProperty; //!C++ Property of the class (is abstract, has virtual table, etc.)
255
256 // fHasRootPcmInfo needs to be atomic as long as GetListOfBases needs to modify it.
257 std::atomic<Bool_t> fHasRootPcmInfo; //!Whether info was loaded from a root pcm.
258 mutable std::atomic<Bool_t> fCanLoadClassInfo; //!Indicates whether the ClassInfo is supposed to be available.
259 mutable std::atomic<Bool_t> fIsOffsetStreamerSet; //!saved remember if fOffsetStreamer has been set.
260 mutable std::atomic<Bool_t> fVersionUsed; //!Indicates whether GetClassVersion has been called
261
263 kNotInitialized = 0,
264 kSet = BIT(0),
265 // kInconsistent when kSet & !kConsistent.
266 kConsistentHash = BIT(1)
267 };
269 return l & static_cast<UChar_t>(r);
270 }
271 mutable std::atomic<UChar_t> fRuntimeProperties; //! Properties that can only be evaluated at run-time
272
273 mutable Longptr_t fOffsetStreamer; //!saved info to call Streamer
274 Int_t fStreamerType; //!cached of the streaming method to use
275 EState fState; //!Current 'state' of the class (Emulated,Interpreted,Loaded)
276 mutable std::atomic<TVirtualStreamerInfo*> fCurrentInfo; //!cached current streamer info.
277 mutable std::atomic<TVirtualStreamerInfo*> fLastReadInfo; //!cached streamer info used in the last read.
278 TVirtualRefProxy *fRefProxy; //!Pointer to reference proxy if this class represents a reference
279 ROOT::Detail::TSchemaRuleSet *fSchemaRules; //! Schema evolution rules
280
281 typedef void (*StreamerImpl_t)(const TClass* pThis, void *obj, TBuffer &b, const TClass *onfile_class);
282#ifdef R__NO_ATOMIC_FUNCTION_POINTER
283 mutable StreamerImpl_t fStreamerImpl; //! Pointer to the function implementing streaming for this class
284#else
285 mutable std::atomic<StreamerImpl_t> fStreamerImpl; //! Pointer to the function implementing streaming for this class
286#endif
287
293 void Init(const char *name, Version_t cversion, const std::type_info *info,
294 TVirtualIsAProxy *isa,
295 const char *dfil, const char *ifil,
296 Int_t dl, Int_t il,
297 ClassInfo_t *classInfo,
298 Bool_t silent);
299 void LoadClassInfo() const;
300
301 static TClass *LoadClassDefault(const char *requestedname, Bool_t silent);
302 static TClass *LoadClassCustom(const char *requestedname, Bool_t silent);
303
304 void SetClassVersion(Version_t version);
305 void SetClassSize(Int_t sizof) { fSizeof = sizof; }
307
308 void SetStreamerImpl();
309
311
312 // Various implementation for TClass::Stramer
313 static void StreamerExternal(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
314 static void StreamerTObject(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
315 static void StreamerTObjectInitialized(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
316 static void StreamerTObjectEmulated(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
317 static void StreamerInstrumented(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
318 static void ConvStreamerInstrumented(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
319 static void StreamerStreamerInfo(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
320 static void StreamerDefault(const TClass* pThis, void *object, TBuffer &b, const TClass *onfile_class);
321
322 static IdMap_t *GetIdMap(); //Map from typeid to TClass pointer
323 static DeclIdMap_t *GetDeclIdMap(); //Map from DeclId_t to TClass pointer
324 static std::atomic<Int_t> fgClassCount; //provides unique id for a each class
325 //stored in TObject::fUniqueID
326 static TDeclNameRegistry fNoInfoOrEmuOrFwdDeclNameRegistry; // Store decl names of the forwardd and no info instances
327 static Bool_t HasNoInfoOrEmuOrFwdDeclaredDecl(const char*);
328
329 // Internal status bits, set and reset only during initialization and thus under the protection of the global lock.
331 // Internal streamer type.
333
334 // These are the above-referenced hash tables. (The pointers are null
335 // if no entries have been made.)
337
339
340 mutable TVirtualMutex *fOVRMutex = nullptr;
341 typedef std::multimap<void*, Version_t> RepoCont_t;
343
344 void UnregisterAddressInRepository(const char *where, void *location, const TClass *what) const;
345 void MoveAddressInRepository(const char *where, void *oldadd, void *newadd, const TClass *what) const;
346 void RegisterAddressInRepository(const char *where, void *location, const TClass *what) const;
347
348private:
349 TClass(const TClass& tc) = delete;
350 TClass& operator=(const TClass&) = delete;
351
353 TList *CreateListOfDataMembers(std::atomic<TListOfDataMembers*> &data, TDictionary::EMemberSelection selection, bool load);
354
355protected:
358 void GetMissingDictionariesForMembers(TCollection &result, TCollection &visited, bool recurse);
361
362public:
363 TClass();
364 TClass(const char *name, Bool_t silent = kFALSE);
365 TClass(const char *name, Version_t cversion, Bool_t silent = kFALSE);
366 TClass(const char *name, Version_t cversion, EState theState, Bool_t silent = kFALSE);
367 TClass(ClassInfo_t *info, Version_t cversion,
368 const char *dfil, const char *ifil = nullptr,
369 Int_t dl = 0, Int_t il = 0, Bool_t silent = kFALSE);
370 TClass(const char *name, Version_t cversion,
371 const char *dfil, const char *ifil = nullptr,
372 Int_t dl = 0, Int_t il = 0, Bool_t silent = kFALSE);
373 TClass(const char *name, Version_t cversion,
374 const std::type_info &info, TVirtualIsAProxy *isa,
375 const char *dfil, const char *ifil,
376 Int_t dl, Int_t il, Bool_t silent = kFALSE);
377 virtual ~TClass();
378
379 void AddInstance(Bool_t heap = kFALSE) { fInstanceCount++; if (heap) fOnHeap++; }
380 void AddImplFile(const char *filename, int line);
381 static Bool_t AddRule(const char *rule);
382 static Int_t ReadRules(const char *filename);
383 static Int_t ReadRules();
385 void Browse(TBrowser *b) override;
386 void BuildRealData(void *pointer = nullptr, Bool_t isTransient = kFALSE);
387 void BuildEmulatedRealData(const char *name, Longptr_t offset, TClass *cl, Bool_t isTransient = kFALSE);
388 void CalculateStreamerOffset() const;
389 Bool_t CallShowMembers(const void* obj, TMemberInspector &insp, Bool_t isTransient = kFALSE) const;
390 Bool_t CanSplit() const;
392 Long_t ClassProperty() const;
393 TObject *Clone(const char *newname="") const override;
395 void Draw(Option_t *option="") override;
396 void Dump() const override { TDictionary::Dump(); }
397 void Dump(const void *obj, Bool_t noAddr = kFALSE) const;
398 char *EscapeChars(const char *text) const;
399 TVirtualStreamerInfo *FindStreamerInfo(UInt_t checksum, Bool_t isTransient = kFALSE) const;
400 TVirtualStreamerInfo *GetConversionStreamerInfo( const char* onfile_classname, Int_t version ) const;
401 TVirtualStreamerInfo *FindConversionStreamerInfo( const char* onfile_classname, UInt_t checksum ) const;
402 TVirtualStreamerInfo *GetConversionStreamerInfo( const TClass* onfile_cl, Int_t version ) const;
403 TVirtualStreamerInfo *FindConversionStreamerInfo( const TClass* onfile_cl, UInt_t checksum ) const;
404 void ForceReload (TClass* oldcl);
407 Bool_t HasInterpreterInfoInMemory() const { return nullptr != fClassInfo; }
410 UInt_t GetCheckSum(Bool_t &isvalid) const;
411 UInt_t GetCheckSum(ECheckSum code, Bool_t &isvalid) const;
414 TMethod *GetClassMethod(const char *name, const char *params, Bool_t objectIsConst = kFALSE);
415 TMethod *GetClassMethodWithPrototype(const char *name, const char *proto,
416 Bool_t objectIsConst = kFALSE,
419 if (!fVersionUsed.load(std::memory_order_relaxed))
421 return fClassVersion;
422 }
423 Int_t GetClassSize() const { return Size(); }
424 TDataMember *GetDataMember(const char *datamember) const;
425 Longptr_t GetDataMemberOffset(const char *membername) const;
426 const char *GetDeclFileName() const;
431 ClassInfo_t *GetClassInfo() const {
434 return fClassInfo;
435 }
436 const char *GetContextMenuTitle() const { return fContextMenuTitle; }
438 auto current = fCurrentInfo.load(std::memory_order_relaxed);
439 if (current) return current;
440 else return DetermineCurrentStreamerInfo();
441 }
450 TCollection *GetListOfMethodOverloads(const char* name) const;
451 TList *GetListOfRealData() const { return fRealData; }
454 const char *GetImplFileName() const { return fImplFileName; }
456 TClass *GetActualClass(const void *object) const;
457 TClass *GetBaseClass(const char *classname);
458 TClass *GetBaseClass(const TClass *base);
459 Int_t GetBaseClassOffset(const TClass *toBase, void *address = nullptr, bool isDerivedObject = true);
460 TClass *GetBaseDataMember(const char *datamember);
466 void GetMenuItems(TList *listitems);
467 TList *GetMenuList() const;
468 TMethod *GetMethod(const char *method, const char *params, Bool_t objectIsConst = kFALSE);
469 TMethod *GetMethodWithPrototype(const char *method, const char *proto, Bool_t objectIsConst = kFALSE,
471 TMethod *GetMethodAny(const char *method);
472 TMethod *GetMethodAllAny(const char *method);
473 Int_t GetNdata();
476 ROOT::NewFunc_t GetNew() const;
479 TClass *const*GetPersistentRef() const { return fPersistentRef; }
480 TRealData *GetRealData(const char *name) const;
484 const char *GetSharedLibs();
486 EState GetState() const { return fState; }
490 const TObjArray *GetStreamerInfos() const { return fStreamerInfo; }
491 TVirtualStreamerInfo *GetStreamerInfo(Int_t version=0, Bool_t isTransient = kFALSE) const;
494 const std::type_info *GetTypeInfo() const { return fTypeInfo; };
495
496 /// @brief Return 'true' if we can guarantee that if this class (or any class in
497 /// this class inheritance hierarchy) overload TObject::Hash it also starts
498 /// the RecursiveRemove process from its own destructor.
500 {
504 }
505 Bool_t HasDictionary() const;
506 static Bool_t HasDictionarySelection(const char* clname);
508 void GetMissingDictionaries(THashTable& result, bool recurse = false);
510 Bool_t InheritsFrom(const char *cl) const override;
511 Bool_t InheritsFrom(const TClass *cl) const override;
512 void InterpretedShowMembers(void* obj, TMemberInspector &insp, Bool_t isTransient);
513 Bool_t IsFolder() const override { return kTRUE; }
514 Bool_t IsLoaded() const;
515 Bool_t IsForeign() const;
518 Bool_t IsVersioned() const { return !( GetClassVersion()<=1 && IsForeign() ); }
519 Bool_t IsTObject() const;
520 static TClass *LoadClass(const char *requestedname, Bool_t silent);
521 void ls(Option_t *opt="") const override;
522 void MakeCustomMenuList();
523 Bool_t MatchLegacyCheckSum(UInt_t checksum) const;
524 void Move(void *arenaFrom, void *arenaTo) const;
525 void *New(ENewType defConstructor = kClassNew, Bool_t quiet = kFALSE) const;
526 void *New(void *arena, ENewType defConstructor = kClassNew) const;
527 void *NewArray(Long_t nElements, ENewType defConstructor = kClassNew) const;
528 void *NewArray(Long_t nElements, void *arena, ENewType defConstructor = kClassNew) const;
529 ObjectPtr NewObject(ENewType defConstructor = kClassNew, Bool_t quiet = kFALSE) const;
530 ObjectPtr NewObject(void *arena, ENewType defConstructor = kClassNew) const;
531 ObjectPtr NewObjectArray(Long_t nElements, ENewType defConstructor = kClassNew) const;
532 ObjectPtr NewObjectArray(Long_t nElements, void *arena, ENewType defConstructor = kClassNew) const;
533 virtual void PostLoadCheck();
534 Long_t Property() const override;
535 Int_t ReadBuffer(TBuffer &b, void *pointer, Int_t version, UInt_t start, UInt_t count);
536 Int_t ReadBuffer(TBuffer &b, void *pointer);
538 void RemoveStreamerInfo(Int_t slot);
539 void ReplaceWith(TClass *newcl) const;
540 void ResetCaches();
541 void ResetClassInfo(Long_t tagnum);
542 void ResetClassInfo();
544 void ResetMenuList();
545 Int_t Size() const;
546 void SetCanSplit(Int_t splitmode);
548 void SetContextMenuTitle(const char *title);
551 void SetDeclFile(const char *name, int line) { fDeclFileName = name; fDeclFileLine = line; }
552 void SetDelete(ROOT::DelFunc_t deleteFunc);
553 void SetDeleteArray(ROOT::DelArrFunc_t deleteArrayFunc);
554 void SetDirectoryAutoAdd(ROOT::DirAutoAdd_t dirAutoAddFunc);
555 void SetDestructor(ROOT::DesFunc_t destructorFunc);
556 void SetImplFileName(const char *implFileName) { fImplFileName = implFileName; }
557 void SetMerge(ROOT::MergeFunc_t mergeFunc);
559 void SetNew(ROOT::NewFunc_t newFunc);
560 void SetNewArray(ROOT::NewArrFunc_t newArrayFunc);
561 TVirtualStreamerInfo *SetStreamerInfo(Int_t version, const char *info="");
562 void SetUnloaded();
563 Int_t WriteBuffer(TBuffer &b, void *pointer, const char *info="");
564
566 void AdoptStreamer(TClassStreamer *strm);
567 void AdoptMemberStreamer(const char *name, TMemberStreamer *strm);
568 void SetMemberStreamer(const char *name, MemberStreamerFunc_t strm);
571
572 // Function to retrieve the TClass object and dictionary function
573 static void AddClass(TClass *cl);
575 static void RemoveClass(TClass *cl);
577 static TClass *GetClass(const char *name, Bool_t load = kTRUE, Bool_t silent = kFALSE);
578 static TClass *GetClass(const char *name, Bool_t load, Bool_t silent, size_t hint_pair_offset, size_t hint_pair_size);
579 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);
580 static TClass *GetClass(ClassInfo_t *info, Bool_t load = kTRUE, Bool_t silent = kFALSE);
581 template<typename T>
582 static TClass *GetClass(Bool_t load = kTRUE, Bool_t silent = kFALSE);
583 static Bool_t GetClass(DeclId_t id, std::vector<TClass*> &classes);
584 static DictFuncPtr_t GetDict (const char *cname);
585 static DictFuncPtr_t GetDict (const std::type_info &info);
586
587 static Int_t AutoBrowse(TObject *obj, TBrowser *browser);
588 static ENewType IsCallingNew();
589 static TClass *Load(TBuffer &b);
590 void Store(TBuffer &b) const;
591
592 // Pseudo-method apply to the 'obj'. In particular those are used to
593 // implement TObject like methods for non-TObject classes.
594 Int_t Browse(void *obj, TBrowser *b) const;
595 void DeleteArray(void *ary, Bool_t dtorOnly = kFALSE);
596 void DeleteArray(ObjectPtr ary, Bool_t dtorOnly = kFALSE);
597 void Destructor(void *obj, Bool_t dtorOnly = kFALSE);
598 void Destructor(ObjectPtr obj, Bool_t dtorOnly = kFALSE);
599 void *DynamicCast(const TClass *base, void *obj, Bool_t up = kTRUE);
600 const void *DynamicCast(const TClass *base, const void *obj, Bool_t up = kTRUE);
601 Bool_t IsFolder(void *obj) const;
602
603 inline void Streamer(void *obj, TBuffer &b, const TClass *onfile_class = nullptr) const
604 {
605 // Inline for performance, skipping one function call.
606#ifdef R__NO_ATOMIC_FUNCTION_POINTER
607 fStreamerImpl(this,obj,b,onfile_class);
608#else
609 auto t = fStreamerImpl.load();
610 t(this,obj,b,onfile_class);
611#endif
612 }
613
614 ClassDefOverride(TClass,0) //Dictionary containing class information
615};
616
617namespace ROOT {
618namespace Internal {
619template <typename T>
621{
622 return T::Class();
623}
624
625template <typename T>
627 static TClass *GetClass(Bool_t load, Bool_t silent) {
628 return TClass::GetClass(typeid(T), load, silent);
629 }
630};
631
632template <typename F, typename S>
633struct TClassGetClassHelper<std::pair<F, S> > {
634 static TClass *GetClass(Bool_t load, Bool_t silent) {
635 using pair_t = std::pair<F,S>;
636 size_t hint_offset = offsetof(pair_t, second);
637 return TClass::GetClass(typeid(std::pair<F, S>), load, silent, hint_offset, sizeof(std::pair<F,S>));
638 }
639};
640
641template <typename T>
642TClass *GetClassHelper(Bool_t load, Bool_t silent, std::false_type)
643{
644 return TClassGetClassHelper<T>::GetClass(load, silent);
645}
646
647} // namespace Internal
648} // namespace ROOT
649
650template <typename T>
652{
654 return ROOT::Internal::GetClassHelper<T>(load, silent, tag);
655}
656
657namespace ROOT {
658
659template <typename T> TClass *GetClass(T * /* dummy */) { return TClass::GetClass<T>(); }
660template <typename T> TClass *GetClass(const T * /* dummy */) { return TClass::GetClass<T>(); }
661
662#ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
663 // This can only be used when the template overload resolution can distinguish between T* and T**
664 template <typename T> TClass* GetClass( T** /* dummy */) { return TClass::GetClass<T>(); }
665 template <typename T> TClass* GetClass(const T** /* dummy */) { return TClass::GetClass<T>(); }
666 template <typename T> TClass* GetClass( T* const* /* dummy */) { return TClass::GetClass<T>(); }
667 template <typename T> TClass* GetClass(const T* const* /* dummy */) { return TClass::GetClass<T>(); }
668#endif
669
670 extern TClass *CreateClass(const char *cname, Version_t id,
671 const char *dfil, const char *ifil,
672 Int_t dl, Int_t il);
673}
674
675#endif // ROOT_TClass
void Class()
Definition: Class.C:29
bool Bool_t
Definition: RtypesCore.h:63
int Int_t
Definition: RtypesCore.h:45
long Longptr_t
Definition: RtypesCore.h:82
short Version_t
Definition: RtypesCore.h:65
unsigned char UChar_t
Definition: RtypesCore.h:38
const Bool_t kFALSE
Definition: RtypesCore.h:101
long Long_t
Definition: RtypesCore.h:54
unsigned int UInt_t
Definition: RtypesCore.h:46
short Short_t
Definition: RtypesCore.h:39
const Bool_t kTRUE
Definition: RtypesCore.h:100
const char Option_t
Definition: RtypesCore.h:66
TClass *(* DictFuncPtr_t)()
Definition: Rtypes.h:80
#define BIT(n)
Definition: Rtypes.h:85
void(* MemberStreamerFunc_t)(TBuffer &, void *, Int_t)
Definition: Rtypes.h:74
TClass *(* IsAGlobalFunc_t)(const TClass *, const void *obj)
Definition: Rtypes.h:96
void(* ShowMembersFunc_t)(const void *obj, TMemberInspector &R__insp, Bool_t isTransient)
Definition: Rtypes.h:94
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
void(* ClassStreamerFunc_t)(TBuffer &, void *)
Definition: Rtypes.h:72
void(* ClassConvStreamerFunc_t)(TBuffer &, void *, const TClass *)
Definition: Rtypes.h:73
ROOT::TMapDeclIdToTClass DeclIdMap_t
Definition: TClass.h:79
ROOT::TMapTypeToTClass IdMap_t
Definition: TClass.h:78
@ 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 Float_t Float_t b
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:17502
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:178
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:170
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:171
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:81
TClass *const * GetPersistentRef() const
Definition: TClass.h:479
UInt_t GetCheckSum(ECheckSum code=kCurrentCheckSum) const
Call GetCheckSum with validity check.
Definition: TClass.cxx:6494
Bool_t IsSyntheticPair() const
Definition: TClass.h:517
RepoCont_t fObjectVersionRepository
Definition: TClass.h:342
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=nullptr) const
Definition: TClass.h:603
ShowMembersFunc_t fShowMembers
Definition: TClass.h:226
TDataMember * GetDataMember(const char *datamember) const
Return pointer to datamember object with name "datamember".
Definition: TClass.cxx:3428
TVirtualIsAProxy * fIsA
Definition: TClass.h:230
TList * GetListOfUsingDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of using declarations of a class.
Definition: TClass.cxx:3775
void ForceReload(TClass *oldcl)
we found at least one equivalent.
Definition: TClass.cxx:1336
ROOT::DelArrFunc_t fDeleteArray
Definition: TClass.h:239
Bool_t CanSplit() const
Return true if the data member of this TClass can be saved separately.
Definition: TClass.cxx:2319
TClassStreamer * fStreamer
Definition: TClass.h:227
void SetDirectoryAutoAdd(ROOT::DirAutoAdd_t dirAutoAddFunc)
Install a new wrapper around the directory auto add function.
Definition: TClass.cxx:7017
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:5182
static TDeclNameRegistry fNoInfoOrEmuOrFwdDeclNameRegistry
Definition: TClass.h:326
friend class ROOT::TGenericClassInfo
Definition: TClass.h:85
TListOfFunctionTemplates * fFuncTemplate
Definition: TClass.h:207
ClassStreamerFunc_t fStreamerFunc
Definition: TClass.h:242
void AdoptReferenceProxy(TVirtualRefProxy *proxy)
Adopt the Reference proxy pointer to indicate that this class represents a reference.
Definition: TClass.cxx:6674
TMethod * GetClassMethod(Longptr_t faddr)
Look for a method in this class that has the interface function address faddr.
Definition: TClass.cxx:4472
TVirtualStreamerInfo * DetermineCurrentStreamerInfo()
Determine and set pointer to current TVirtualStreamerInfo.
Definition: TClass.cxx:5673
void Browse(TBrowser *b) override
This method is called by a browser to get the class information.
Definition: TClass.cxx:2010
EState GetState() const
Definition: TClass.h:486
ROOT::ESTLType GetCollectionType() const
Return the 'type' of the STL the TClass is representing.
Definition: TClass.cxx:2886
void Draw(Option_t *option="") override
Draw detailed class inheritance structure.
Definition: TClass.cxx:2487
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:6692
void ResetInstanceCount()
Definition: TClass.h:543
ClassStreamerFunc_t GetStreamerFunc() const
Get a wrapper/accessor function around this class custom streamer (member function).
Definition: TClass.cxx:2939
void RemoveStreamerInfo(Int_t slot)
Remove and delete the StreamerInfo in the given slot.
Definition: TClass.cxx:7309
void SetCanSplit(Int_t splitmode)
Set the splitability of this class:
Definition: TClass.cxx:5647
void AddInstance(Bool_t heap=kFALSE)
Definition: TClass.h:379
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:3730
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:4698
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
Definition: TClass.cxx:4967
void SetMerge(ROOT::MergeFunc_t mergeFunc)
Install a new wrapper around 'Merge'.
Definition: TClass.cxx:6958
ConvSIMap_t fConversionStreamerInfo
Definition: TClass.h:200
ROOT::DirAutoAdd_t fDirAutoAdd
Definition: TClass.h:241
Bool_t HasDataMemberInfo() const
Definition: TClass.h:405
TVirtualRefProxy * fRefProxy
cached streamer info used in the last read.
Definition: TClass.h:278
TList * GetMenuList() const
Return the list of menu items associated with the class.
Definition: TClass.cxx:4330
ROOT::MergeFunc_t fMerge
saved info to call a IsA member function
Definition: TClass.h:234
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:4400
static TClass * Load(TBuffer &b)
Load class description from I/O buffer and return class object.
Definition: TClass.cxx:5704
EState fState
cached of the streaming method to use
Definition: TClass.h:275
ROOT::DesFunc_t GetDestructor() const
Return the wrapper around the destructor.
Definition: TClass.cxx:7468
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:4445
void CopyCollectionProxy(const TVirtualCollectionProxy &)
Replaces the collection proxy for this class.
Definition: TClass.cxx:2470
Int_t fStreamerType
saved info to call Streamer
Definition: TClass.h:274
TList * fRealData
Definition: TClass.h:201
UInt_t fOnHeap
Definition: TClass.h:219
void ls(Option_t *opt="") const override
The ls function lists the contents of a class on stdout.
Definition: TClass.cxx:4247
std::atomic< TList * > fBase
Definition: TClass.h:202
Bool_t HasDictionary() const
Check whether a class has a dictionary or not.
Definition: TClass.cxx:3895
const TList * GetListOfAllPublicMethods(Bool_t load=kTRUE)
Returns a list of all public methods of this class and its base classes.
Definition: TClass.cxx:3834
TList * GetListOfAllPublicDataMembers(Bool_t load=kTRUE)
Returns a list of all public data members of this class and its base classes.
Definition: TClass.cxx:3851
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:511
virtual ~TClass()
TClass dtor. Deletes all list that might have been created.
Definition: TClass.cxx:1660
Bool_t fIsSyntheticPair
Indicates whether this class can be split or not. Values are -1, 0, 1, 2.
Definition: TClass.h:251
void Destructor(void *obj, Bool_t dtorOnly=kFALSE)
Explicitly call destructor for object.
Definition: TClass.cxx:5389
Version_t fClassVersion
Definition: TClass.h:222
std::atomic< TVirtualStreamerInfo * > fCurrentInfo
Current 'state' of the class (Emulated,Interpreted,Loaded)
Definition: TClass.h:276
TList * GetListOfFunctionTemplates(Bool_t load=kTRUE)
Return TListOfFunctionTemplates for a class.
Definition: TClass.cxx:3787
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:4904
const char * fImplFileName
Definition: TClass.h:215
void RegisterStreamerInfo(TVirtualStreamerInfo *info)
Register the StreamerInfo in the given slot, change the State of the TClass as appropriate.
Definition: TClass.cxx:7285
TClass & operator=(const TClass &)=delete
std::atomic< UInt_t > fCheckSum
Definition: TClass.h:220
void UnregisterAddressInRepository(const char *where, void *location, const TClass *what) const
Definition: TClass.cxx:318
std::atomic< TListOfFunctions * > fMethod
Definition: TClass.h:208
static void RemoveClassDeclId(TDictionary::DeclId_t id)
Definition: TClass.cxx:536
void SetNewArray(ROOT::NewArrFunc_t newArrayFunc)
Install a new wrapper around 'new []'.
Definition: TClass.cxx:6982
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:2205
const char * fDeclFileName
Definition: TClass.h:214
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:6233
Int_t fCanSplit
Definition: TClass.h:247
static Bool_t HasDictionarySelection(const char *clname)
Check whether a class has a dictionary or ROOT can load one.
Definition: TClass.cxx:3906
void AdoptSchemaRules(ROOT::Detail::TSchemaRuleSet *rules)
Adopt a new set of Data Model Evolution rules.
Definition: TClass.cxx:1920
static void StreamerInstrumented(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of instrumented class with a library.
Definition: TClass.cxx:6825
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:6362
static std::atomic< Int_t > fgClassCount
Definition: TClass.h:324
TVirtualStreamerInfo * GetCurrentStreamerInfo()
Definition: TClass.h:437
ROOT::DirAutoAdd_t GetDirectoryAutoAdd() const
Return the wrapper around the directory auto add function.
Definition: TClass.cxx:7476
void AddImplFile(const char *filename, int line)
Definition: TClass.cxx:1952
TCollection * GetListOfMethodOverloads(const char *name) const
Return the collection of functions named "name".
Definition: TClass.cxx:3816
std::atomic< TListOfEnums * > fEnums
Definition: TClass.h:206
static Bool_t HasNoInfoOrEmuOrFwdDeclaredDecl(const char *)
Definition: TClass.cxx:3387
TVirtualMutex * fOVRMutex
Definition: TClass.h:340
TList * GetListOfEnums(Bool_t load=kTRUE)
Return a list containing the TEnums of a class.
Definition: TClass.cxx:3675
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:5918
TList * GetListOfMethods(Bool_t load=kTRUE)
Return list containing the TMethods of a class.
Definition: TClass.cxx:3801
TClass()
Internal, default constructor.
Definition: TClass.cxx:1065
Short_t fDeclFileLine
Definition: TClass.h:216
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:4562
std::atomic< Bool_t > fIsOffsetStreamerSet
Indicates whether the ClassInfo is supposed to be available.
Definition: TClass.h:259
void IgnoreTObjectStreamer(Bool_t ignore=kTRUE)
When the class kIgnoreTObjectStreamer bit is set, the automatically generated Streamer will not call ...
Definition: TClass.cxx:4830
TClassStreamer * GetStreamer() const
Return the Streamer Class allowing streaming (if any).
Definition: TClass.cxx:2914
static IdMap_t * GetIdMap()
Definition: TClass.cxx:469
UInt_t GetInstanceCount() const
Definition: TClass.h:464
void SetDelete(ROOT::DelFunc_t deleteFunc)
Install a new wrapper around 'delete'.
Definition: TClass.cxx:6990
void SetLastReadInfo(TVirtualStreamerInfo *info)
Definition: TClass.h:443
static Int_t AutoBrowse(TObject *obj, TBrowser *browser)
Browse external object inherited from TObject.
Definition: TClass.cxx:1966
ROOT::NewFunc_t GetNew() const
Return the wrapper around new ThisClass().
Definition: TClass.cxx:7436
void SetDeclFile(const char *name, int line)
Definition: TClass.h:551
TClass * GetBaseClass(const char *classname)
Return pointer to the base class "classname".
Definition: TClass.cxx:2655
Longptr_t GetDataMemberOffset(const char *membername) const
return offset for member name.
Definition: TClass.cxx:3466
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:4543
void SetDestructor(ROOT::DesFunc_t destructorFunc)
Install a new wrapper around the destructor.
Definition: TClass.cxx:7006
virtual void PostLoadCheck()
Do the initialization that can only be done after the CINT dictionary has been fully populated and ca...
Definition: TClass.cxx:5948
void LoadClassInfo() const
Try to load the ClassInfo if available.
Definition: TClass.cxx:5813
void SetResetAfterMerge(ROOT::ResetAfterMergeFunc_t resetFunc)
Install a new wrapper around 'ResetAfterMerge'.
Definition: TClass.cxx:6966
TVirtualStreamerInfo * GetStreamerInfoImpl(Int_t version, Bool_t silent) const
Definition: TClass.cxx:4623
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:6483
TViewPubFunctions * fAllPubMethod
Definition: TClass.h:211
ERuntimeProperties
Indicates whether GetClassVersion has been called.
Definition: TClass.h:262
Bool_t HasInterpreterInfo() const
Definition: TClass.h:408
static void AddClass(TClass *cl)
static: Add a class to the list and map of classes.
Definition: TClass.cxx:494
void GetMissingDictionariesForBaseClasses(TCollection &result, TCollection &visited, bool recurse)
Verify the base classes always.
Definition: TClass.cxx:3916
ROOT::Detail::TSchemaRuleSet * fSchemaRules
Pointer to reference proxy if this class represents a reference.
Definition: TClass.h:279
std::atomic< Long_t > fProperty
Definition: TClass.h:253
TVirtualStreamerInfo * GetLastReadInfo() const
Definition: TClass.h:442
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:6862
void SetUnloaded()
Call this method to indicate that the shared library containing this class's code has been removed (u...
Definition: TClass.cxx:6298
ROOT::DelArrFunc_t GetDeleteArray() const
Return the wrapper around delete [] ThiObject.
Definition: TClass.cxx:7460
Bool_t HasInterpreterInfoInMemory() const
Definition: TClass.h:407
TList * fClassMenuList
Definition: TClass.h:212
ClassConvStreamerFunc_t fConvStreamerFunc
Definition: TClass.h:243
void BuildRealData(void *pointer=nullptr, Bool_t isTransient=kFALSE)
Build a full list of persistent data members.
Definition: TClass.cxx:2031
void SetRuntimeProperties()
Internal routine to set calculate the class properties that can only be known at run-time,...
Definition: TClass.cxx:6183
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:2112
static TClass * LoadClass(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
Definition: TClass.cxx:5738
TString fSharedLibs
Definition: TClass.h:228
const std::type_info * GetTypeInfo() const
Definition: TClass.h:494
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
Definition: TClass.cxx:3759
ENewType
Definition: TClass.h:108
@ kClassNew
Definition: TClass.h:108
@ kRealNew
Definition: TClass.h:108
@ kDummyNew
Definition: TClass.h:108
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:4316
static DeclIdMap_t * GetDeclIdMap()
Definition: TClass.cxx:480
Short_t GetDeclFileLine() const
Definition: TClass.h:427
void SetStreamerFunc(ClassStreamerFunc_t strm)
Set a wrapper/accessor function around this class custom streamer.
Definition: TClass.cxx:6911
const char * GetImplFileName() const
Definition: TClass.h:454
TList * GetListOfRealData() const
Definition: TClass.h:451
Int_t Size() const
Return size of object of this class.
Definition: TClass.cxx:5693
void SetCurrentStreamerInfo(TVirtualStreamerInfo *info)
Set pointer to current TVirtualStreamerInfo.
Definition: TClass.cxx:5685
static DictFuncPtr_t GetDict(const char *cname)
Return a pointer to the dictionary loading function generated by rootcint.
Definition: TClass.cxx:3411
Longptr_t fOffsetStreamer
Properties that can only be evaluated at run-time.
Definition: TClass.h:273
Int_t fSizeof
Definition: TClass.h:244
ROOT::NewArrFunc_t GetNewArray() const
Return the wrapper around new ThisClass[].
Definition: TClass.cxx:7444
std::multimap< void *, Version_t > RepoCont_t
Definition: TClass.h:341
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:6812
ROOT::NewFunc_t fNew
Definition: TClass.h:236
@ kLoading
Definition: TClass.h:330
@ kUnloading
Definition: TClass.h:330
ROOT::ResetAfterMergeFunc_t GetResetAfterMerge() const
Return the wrapper around Merge.
Definition: TClass.cxx:7428
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:4516
Bool_t CanIgnoreTObjectStreamer()
Definition: TClass.h:391
void SetGlobalIsA(IsAGlobalFunc_t)
This function installs a global IsA function for this class.
Definition: TClass.cxx:6289
void GetMissingDictionariesForMembers(TCollection &result, TCollection &visited, bool recurse)
Verify the Data Members.
Definition: TClass.cxx:3933
TObjArray * fStreamerInfo
Definition: TClass.h:199
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
Definition: TClass.cxx:1932
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:2406
TVirtualCollectionProxy * fCollectionProxy
Definition: TClass.h:221
static ENewType IsCallingNew()
Static method returning the defConstructor flag passed to TClass::New().
Definition: TClass.cxx:5891
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
Definition: TClass.cxx:3625
void Store(TBuffer &b) const
Store class description on I/O buffer.
Definition: TClass.cxx:5849
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:2242
static THashTable * fgClassTypedefHash
Definition: TClass.h:336
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:1369
std::atomic< TListOfDataMembers * > fData
Definition: TClass.h:203
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:6847
const TObjArray * GetStreamerInfos() const
Definition: TClass.h:490
void SetClassVersion(Version_t version)
Private function.
Definition: TClass.cxx:5664
char * EscapeChars(const char *text) const
Introduce an escape character (@) in front of a special chars.
Definition: TClass.cxx:2568
const std::type_info * fTypeInfo
Definition: TClass.h:225
std::atomic< TVirtualStreamerInfo * > fLastReadInfo
cached current streamer info.
Definition: TClass.h:277
std::atomic< std::map< std::string, TObjArray * > * > ConvSIMap_t
Persistent address of pointer to this TClass object and its successors.
Definition: TClass.h:197
static void StreamerTObject(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of TObjects.
Definition: TClass.cxx:6789
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
Definition: TClass.cxx:5901
EStreamerType
Definition: TClass.h:332
@ kDefault
Definition: TClass.h:332
@ kEmulatedStreamer
Definition: TClass.h:332
@ kExternal
Definition: TClass.h:332
@ kForeign
Definition: TClass.h:332
@ kInstrumented
Definition: TClass.h:332
@ kTObject
Definition: TClass.h:332
static Bool_t AddRule(const char *rule)
Add a schema evolution customization rule.
Definition: TClass.cxx:1890
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
Definition: TClass.cxx:5927
const char * GetContextMenuTitle() const
Definition: TClass.h:436
static void RemoveClass(TClass *cl)
static: Remove a class from the list and map of classes
Definition: TClass.cxx:520
Bool_t HasLocalHashMember() const
Returns true if this class has an definition and/or overload of the member function Hash.
Definition: TClass.cxx:7410
void DeleteArray(void *ary, Bool_t dtorOnly=kFALSE)
Explicitly call operator delete[] for an array.
Definition: TClass.cxx:5518
ClassConvStreamerFunc_t GetConvStreamerFunc() const
Get a wrapper/accessor function around this class custom conversion streamer (member function).
Definition: TClass.cxx:2947
Bool_t IsForeign() const
Return kTRUE is the class is Foreign (the class does not have a Streamer method).
Definition: TClass.cxx:5936
ClassInfo_t * GetClassInfo() const
Definition: TClass.h:431
ROOT::DelFunc_t fDelete
Definition: TClass.h:238
TViewPubDataMembers * fAllPubData
Definition: TClass.h:210
ClassInfo_t * fClassInfo
Definition: TClass.h:223
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:4588
Bool_t HasConsistentHashMember()
Return 'true' if we can guarantee that if this class (or any class in this class inheritance hierarch...
Definition: TClass.h:499
void AdoptStreamer(TClassStreamer *strm)
Adopt a TClassStreamer object.
Definition: TClass.cxx:6883
TClass * GetBaseDataMember(const char *datamember)
Return pointer to (base) class that contains datamember.
Definition: TClass.cxx:2827
ECheckSum
Definition: TClass.h:109
@ kLatestCheckSum
Definition: TClass.h:118
@ kNoRange
Definition: TClass.h:113
@ kCurrentCheckSum
Definition: TClass.h:110
@ kNoBaseCheckSum
Definition: TClass.h:117
@ kReflex
Definition: TClass.h:115
@ kReflexNoComment
Definition: TClass.h:112
@ kWithTypeDef
Definition: TClass.h:114
@ kNoRangeCheck
Definition: TClass.h:116
@ kNoEnum
Definition: TClass.h:111
void Dump() const override
Dump contents of object on stdout.
Definition: TClass.h:396
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
Definition: TClass.cxx:4863
Int_t GetBaseClassOffset(const TClass *toBase, void *address=nullptr, bool isDerivedObject=true)
Definition: TClass.cxx:2791
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:5198
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
Definition: TClass.cxx:2897
void ResetCaches()
To clean out all caches.
Definition: TClass.cxx:4204
std::atomic< Bool_t > fVersionUsed
saved remember if fOffsetStreamer has been set.
Definition: TClass.h:260
Int_t GetClassSize() const
Definition: TClass.h:423
Long_t ClassProperty() const
Return the C++ property of this class, eg.
Definition: TClass.cxx:2396
void SetStreamerImpl()
Internal routine to set fStreamerImpl based on the value of fStreamerType.
Definition: TClass.cxx:6204
const char * GetSharedLibs()
Get the list of shared libraries containing the code for class cls.
Definition: TClass.cxx:3612
void CalculateStreamerOffset() const
Calculate the offset between an object of this class to its base class TObject.
Definition: TClass.cxx:2183
void GetMissingDictionariesForPairElements(TCollection &result, TCollection &visited, bool recurse)
Definition: TClass.cxx:3962
void ReplaceWith(TClass *newcl) const
Definition: TClass.cxx:4131
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:6075
Bool_t HasDefaultConstructor(Bool_t testio=kFALSE) const
Return true if we have access to a constructor usable for I/O.
Definition: TClass.cxx:7382
void GetMenuItems(TList *listitems)
Returns list of methods accessible by context menu.
Definition: TClass.cxx:3863
void SetNew(ROOT::NewFunc_t newFunc)
Install a new wrapper around 'new'.
Definition: TClass.cxx:6974
std::atomic< TMethodCall * > fIsAMethod
Definition: TClass.h:232
static Int_t ReadRules()
Read the class.rules files from the default location:.
Definition: TClass.cxx:1820
Bool_t CanSplitBaseAllow()
Pointer to the function implementing streaming for this class.
Definition: TClass.cxx:2247
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:285
void SetContextMenuTitle(const char *title)
Change (i.e. set) the title of the TNamed.
Definition: TClass.cxx:6258
ShowMembersFunc_t GetShowMembersWrapper() const
Definition: TClass.h:485
void SetMemberStreamer(const char *name, MemberStreamerFunc_t strm)
Install a new member streamer (p will be copied).
Definition: TClass.cxx:6733
std::atomic< TClass ** > fPersistentRef
Definition: TClass.h:195
IsAGlobalFunc_t fGlobalIsA
pointer to the class's IsA proxy.
Definition: TClass.h:231
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:7075
void(* StreamerImpl_t)(const TClass *pThis, void *obj, TBuffer &b, const TClass *onfile_class)
Schema evolution rules.
Definition: TClass.h:281
Short_t GetImplFileLine() const
Definition: TClass.h:455
TMethod * GetMethodAllAny(const char *method)
Return pointer to method without looking at parameters.
Definition: TClass.cxx:4373
std::atomic< UChar_t > fRuntimeProperties
Definition: TClass.h:271
EState
Definition: TClass.h:122
@ kInterpreted
Definition: TClass.h:127
@ kHasTClassInit
Definition: TClass.h:128
@ kEmulated
Definition: TClass.h:126
@ kNoInfo
Definition: TClass.h:123
@ kLoaded
Definition: TClass.h:131
@ kForwardDeclared
Definition: TClass.h:125
@ kNamespaceForMeta
Definition: TClass.h:132
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:7182
Int_t GetBaseClassOffsetRecurse(const TClass *toBase)
Return data member offset to the base class "cl".
Definition: TClass.cxx:2705
ROOT::DelFunc_t GetDelete() const
Return the wrapper around delete ThiObject.
Definition: TClass.cxx:7452
static TClass * LoadClassDefault(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
Definition: TClass.cxx:5760
Bool_t IsVersioned() const
Definition: TClass.h:518
void SetClassSize(Int_t sizof)
Definition: TClass.h:305
TMethod * FindClassOrBaseMethodWithId(DeclId_t faddr)
Find a method with decl id in this class or its bases.
Definition: TClass.cxx:4429
static void StreamerExternal(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
There is special streamer for the class.
Definition: TClass.cxx:6777
friend bool operator&(UChar_t l, ERuntimeProperties r)
Definition: TClass.h:268
Long_t fClassProperty
Property See TClass::Property() for details.
Definition: TClass.h:254
TString fContextMenuTitle
Definition: TClass.h:224
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:6803
static void ConvStreamerInstrumented(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of instrumented class with a library.
Definition: TClass.cxx:6834
std::atomic< Bool_t > fCanLoadClassInfo
Whether info was loaded from a root pcm.
Definition: TClass.h:258
void SetConvStreamerFunc(ClassConvStreamerFunc_t strm)
Set a wrapper/accessor function around this class custom conversion streamer.
Definition: TClass.cxx:6934
TVirtualStreamerInfo * FindStreamerInfo(TObjArray *arr, UInt_t checksum) const
Find the TVirtualStreamerInfo in the StreamerInfos corresponding to checksum.
Definition: TClass.cxx:7055
void GetMissingDictionaries(THashTable &result, bool recurse=false)
Get the classes that have a missing dictionary starting from this one.
Definition: TClass.cxx:4076
void MakeCustomMenuList()
Makes a customizable version of the popup menu list, i.e.
Definition: TClass.cxx:4272
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:4761
TMethod * GetMethodAny(const char *method)
Return pointer to method without looking at parameters.
Definition: TClass.cxx:4363
TVirtualIsAProxy * GetIsAProxy() const
Return the proxy implementing the IsA functionality.
Definition: TClass.cxx:2955
Version_t GetClassVersion() const
Definition: TClass.h:418
ROOT::MergeFunc_t GetMerge() const
Return the wrapper around Merge.
Definition: TClass.cxx:7420
ROOT::ResetAfterMergeFunc_t fResetAfterMerge
Definition: TClass.h:235
Bool_t IsFolder() const override
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
Definition: TClass.h:513
UInt_t fInstanceCount
Definition: TClass.h:218
std::atomic< Bool_t > fHasRootPcmInfo
C++ Property of the class (is abstract, has virtual table, etc.)
Definition: TClass.h:257
TClass * GetActualClass(const void *object) const
Return a pointer to the real class of the object.
Definition: TClass.cxx:2607
ROOT::DesFunc_t fDestructor
Definition: TClass.h:240
const char * GetDeclFileName() const
Return name of the file containing the declaration of this class.
Definition: TClass.cxx:3452
ObjectPtr NewObject(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Definition: TClass.cxx:4981
TRealData * GetRealData(const char *name) const
Return pointer to TRealData element with name "name".
Definition: TClass.cxx:3492
void SetDeleteArray(ROOT::DelArrFunc_t deleteArrayFunc)
Install a new wrapper around 'delete []'.
Definition: TClass.cxx:6998
TFunctionTemplate * GetFunctionTemplate(const char *name)
Definition: TClass.cxx:3596
void ResetClassInfo()
Make sure that the current ClassInfo is up to date.
Definition: TClass.cxx:4169
ROOT::NewArrFunc_t fNewArray
Definition: TClass.h:237
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:6747
void SetImplFileName(const char *implFileName)
Definition: TClass.h:556
void GetMissingDictionariesWithRecursionCheck(TCollection &result, TCollection &visited, bool recurse)
From the second level of recursion onwards it is different state check.
Definition: TClass.cxx:3979
bool IsClassStructOrUnion() const
Definition: TClass.h:352
@ kHasLocalHashMember
Definition: TClass.h:96
@ kHasNameMapNode
Definition: TClass.h:105
@ kIgnoreTObjectStreamer
Definition: TClass.h:97
@ kUnloaded
Definition: TClass.h:98
@ kHasCustomStreamerMember
Definition: TClass.h:106
@ kWarned
Definition: TClass.h:104
@ kStartWithTObject
Definition: TClass.h:103
@ kClassSaved
Definition: TClass.h:95
@ kIsTObject
Definition: TClass.h:100
@ kIsEmulation
Definition: TClass.h:102
@ kIsForeign
Definition: TClass.h:101
@ kReservedLoading
Definition: TClass.h:93
std::atomic< TListOfDataMembers * > fUsingData
Definition: TClass.h:204
TListOfFunctions * GetMethodList()
Return (create an empty one if needed) the list of functions.
Definition: TClass.cxx:4344
TVirtualRefProxy * GetReferenceProxy() const
Definition: TClass.h:481
void ResetMenuList()
Resets the menu list to it's standard value.
Definition: TClass.cxx:4232
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:2968
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:6768
static TClass * LoadClassCustom(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
Definition: TClass.cxx:5790
UInt_t GetHeapInstanceCount() const
Definition: TClass.h:465
Short_t fImplFileLine
Definition: TClass.h:217
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...
Definition: TDictionary.h:167
EMemberSelection
Kinds of members to include in lists.
Definition: TDictionary.h:215
const void * DeclId_t
Definition: TDictionary.h:223
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...
Definition: TListOfEnums.h:33
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:348
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:201
EStatusBits
Definition: TObject.h:61
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.
Definition: TStreamerInfo.h:39
Basic string class.
Definition: TString.h:136
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...
This class implements a mutex interface.
Definition: TVirtualMutex.h:32
Abstract Interface class describing Streamer information for one class.
TLine * line
void(off) SmallVectorTemplateBase< T
TClass * GetClassHelper(Bool_t, Bool_t, std::true_type)
Definition: TClass.h:620
double T(double x)
Definition: ChebyshevPol.h:34
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
void(* DirAutoAdd_t)(void *, TDirectory *)
Definition: Rtypes.h:113
void(* ResetAfterMergeFunc_t)(void *, TFileMergeInfo *)
Definition: Rtypes.h:115
void(* DesFunc_t)(void *)
Definition: Rtypes.h:112
TClass * GetClass(T *)
Definition: TClass.h:659
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:5858
void(* DelFunc_t)(void *)
Definition: Rtypes.h:110
ESTLType
Definition: ESTLType.h:28
void *(* NewArrFunc_t)(Long_t size, void *arena)
Definition: Rtypes.h:109
EFunctionMatchMode
Definition: TDictionary.h:160
@ kConversionMatch
Definition: TDictionary.h:162
void ResetClassVersion(TClass *, const char *, Short_t)
Global function to update the version number.
void(* DelArrFunc_t)(void *)
Definition: Rtypes.h:111
void *(* NewFunc_t)(void *)
Definition: Rtypes.h:108
Long64_t(* MergeFunc_t)(void *, TCollection *, TFileMergeInfo *)
Definition: Rtypes.h:114
static constexpr double second
const char * ObjectPtr
static const char * what
Definition: stlLoader.cc:6
static TClass * GetClass(Bool_t load, Bool_t silent)
Definition: TClass.h:627
TVirtualStreamerInfo * GetAllocator() const
Definition: TClass.h:150
void * GetPtr() const
Definition: TClass.h:148
TVirtualStreamerInfo * fAllocator
Definition: TClass.h:144
ObjectPtr(void *ptr=nullptr, TVirtualStreamerInfo *allocator=nullptr)
Definition: TClass.h:146
TLine l
Definition: textangle.C:4