26#ifndef R__LESS_INCLUDES
41#define __attribute__(unused)
91#define BIT(n) (1ULL << (n))
92#define SETBIT(n,i) ((n) |= BIT(i))
93#define CLRBIT(n,i) ((n) &= ~BIT(i))
94#define TESTBIT(n,i) ((Bool_t)(((n) & BIT(i)) != 0))
113 class TGenericClassInfo;
115 typedef void *(*NewFunc_t)(
void *);
147 template <
class T> TGenericClassInfo *GetClassInfo(
const T* t) {
163 const std::type_info &
info,
175 const std::type_info &
info,
207namespace ROOT {
namespace Internal {
224 static void *
New(
void *
p) {
return p ?
new(
p) T :
new T; };
231 static ::TVirtualIsAProxy*
isa_proxy = new ::TInstrumentedIsAProxy<T>(
nullptr);
232 static ::ROOT::TGenericClassInfo
234 T::DeclFileName(), T::DeclFileLine(),
236 &T::Dictionary,
isa_proxy, 0,
sizeof(T) );
247 static std::string gName;
250 return gName.c_str();
261 template <
typename T>
266 template <
typename T>
278#define _ClassDefBase_(name, id, virtual_keyword, overrd) \
280 static_assert(std::is_integral<decltype(id)>::value, \
281 "ClassDef(Inline) macro: the specified class version number is not an integer."); \
282 virtual_keyword Bool_t CheckTObjectHashConsistency() const overrd \
284 static std::atomic<UChar_t> recurseBlocker(0); \
285 if (R__likely(recurseBlocker >= 2)) { \
286 return ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency; \
287 } else if (recurseBlocker == 1) { \
289 } else if (recurseBlocker++ == 0) { \
290 ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency = \
291 ::ROOT::Internal::HasConsistentHashMember(_QUOTE_(name)) || \
292 ::ROOT::Internal::HasConsistentHashMember(*IsA()); \
294 return ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency; \
300 static constexpr Version_t Class_Version() { return id; } \
301 virtual_keyword TClass *IsA() const overrd \
302 { return name::Class(); } \
303 virtual_keyword void ShowMembers(TMemberInspector &insp) const overrd \
305 ::ROOT::Class_ShowMembers(name::Class(), this, insp); \
307 void StreamerNVirtual(TBuffer &ClassDef_StreamerNVirtual_b) { name::Streamer(ClassDef_StreamerNVirtual_b); } \
308 static const char *DeclFileName() { return __FILE__; }
310#define _ClassDefOutline_(name,id, virtual_keyword, overrd) \
311 _ClassDefBase_(name,id, virtual_keyword, overrd) \
314 static atomic_TClass_ptr fgIsA; \
316 static int ImplFileLine(); \
317 static const char *ImplFileName(); \
318 static const char *Class_Name(); \
319 static TClass *Dictionary(); \
320 static TClass *Class(); \
321 virtual_keyword void Streamer(TBuffer&) overrd;
323#define _ClassDefInline_(name, id, virtual_keyword, overrd) \
324 _ClassDefBase_(name, id, virtual_keyword, overrd) public : \
325 static int ImplFileLine() { return -1; } \
326 static const char *ImplFileName() { return nullptr; } \
327 static const char *Class_Name() \
329 return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Name(); \
331 static TClass *Dictionary() \
333 return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Dictionary(); \
335 static TClass *Class() \
337 return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Class(); \
339 virtual_keyword void Streamer(TBuffer &R__b) overrd \
341 ::ROOT::Internal::DefaultStreamer(R__b, name::Class(), this); \
344#define ClassDef(name,id) \
345 _ClassDefOutline_(name,id,virtual,) \
346 static int DeclFileLine() { return __LINE__; }
348#define ClassDefOverride(name,id) \
349 _ClassDefOutline_(name,id,,override) \
350 static int DeclFileLine() { return __LINE__; }
352#define ClassDefNV(name,id) \
353 _ClassDefOutline_(name,id,,) \
354 static int DeclFileLine() { return __LINE__; }
356#define ClassDefInline(name,id) \
357 _ClassDefInline_(name,id,virtual,) \
358 static int DeclFileLine() { return __LINE__; }
360#define ClassDefInlineOverride(name,id) \
361 _ClassDefInline_(name,id,,override) \
362 static int DeclFileLine() { return __LINE__; }
364#define ClassDefInlineNV(name,id) \
365 _ClassDefInline_(name,id,,) \
366 static int DeclFileLine() { return __LINE__; }
370#define R__UseDummy(name) \
371 class _NAME2_(name,_c) { public: _NAME2_(name,_c)() { if (name) { } } }
373#define ClassImpUnique(name, key)
376#define ClassImp(name) ClassImpUnique(name,default)
379#define NamespaceImpUnique(name, key)
381#define NamespaceImp(name) NamespaceImpUnique(name,default)
392#define ClassDefT(name,id) \
393 _ClassDefOutline_(name,id,virtual,) \
394 static int DeclFileLine() { return __LINE__; }
396#define ClassDefTNV(name,id) \
397 _ClassDefOutline_(name,id,virtual,) \
398 static int DeclFileLine() { return __LINE__; }
401#define ClassDefT2(name,Tmpl)
403#define templateClassImpUnique(name, key)
405#define templateClassImp(name) templateClassImpUnique(name,default)
407#define ClassImpT(name,Tmpl) templateClassImp(name)
414#define ClassDef2T2(name,Tmpl1,Tmpl2)
415#define ClassImp2T(name,Tmpl1,Tmpl2) templateClassImp(name)
423#define ClassDef3T2(name,Tmpl1,Tmpl2,Tmpl3)
424#define ClassImp3T(name,Tmpl1,Tmpl2,Tmpl3) templateClassImp(name)
429#define RootClassVersion(name,VersionNumber) \
431 TGenericClassInfo *GenerateInitInstance(const name*); \
433 static Short_t _R__UNIQUE_(R__dummyVersionNumber) = \
434 GenerateInitInstance((name*)0x0)->SetVersion(VersionNumber); \
436 R__UseDummy(_R__UNIQUE_(R__dummyVersionNumber)); \
439#define RootStreamer(name,STREAMER) \
442 TGenericClassInfo *GenerateInitInstance(const name*); \
444 static Short_t _R__UNIQUE_(R__dummyStreamer) = \
445 GenerateInitInstance((name*)0x0)->SetStreamer(STREAMER); \
447 R__UseDummy(_R__UNIQUE_(R__dummyStreamer)); \
457# define _R_PragmaStr(x) _Pragma(#x)
458# define R__LOAD_LIBRARY(LIBRARY) _R_PragmaStr(cling load ( #LIBRARY ))
459# define R__ADD_INCLUDE_PATH(PATH) _R_PragmaStr(cling add_include_path ( #PATH ))
460# define R__ADD_LIBRARY_PATH(PATH) _R_PragmaStr(cling add_library_path ( #PATH ))
461#elif defined(R__WIN32)
462# define _R_PragmaStr(x) __pragma(#x)
463# define R__LOAD_LIBRARY(LIBRARY) _R_PragmaStr(comment(lib, #LIBRARY))
464# define R__ADD_INCLUDE_PATH(PATH) _R_PragmaStr(comment(path, #PATH))
465# define R__ADD_LIBRARY_PATH(PATH) _R_PragmaStr(comment(path, #PATH))
474# define R__LOAD_LIBRARY(LIBRARY)
475# define R__ADD_INCLUDE_PATH(PATH)
476# define R__ADD_LIBRARY_PATH(PATH)
481# define R__CLING_PTRCHECK(ONOFF) __attribute__((annotate("__cling__ptrcheck(" #ONOFF ")")))
483# define R__CLING_PTRCHECK(ONOFF)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
TClass *(* DictFuncPtr_t)()
TBuffer & operator<<(TBuffer &buf, const Tmpl *obj)
void(* MemberStreamerFunc_t)(TBuffer &, void *, Int_t)
void(* ShowMembersFunc_t)(const void *obj, TMemberInspector &R__insp, Bool_t isTransient)
TBuffer & operator>>(TBuffer &buf, Tmpl *&obj)
std::atomic< TClass * > atomic_TClass_ptr
void(* ClassStreamerFunc_t)(TBuffer &, void *)
void(* ClassConvStreamerFunc_t)(TBuffer &, void *, const TClass *)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
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
static void * New(void *p)
static void * NewArray(Long_t nElements, void *p)
static atomic_TClass_ptr fgIsA
static void DeleteArray(void *p)
static void Destruct(void *p)
::ROOT::TGenericClassInfo * fgGenericInfo
::ROOT::TGenericClassInfo * GenerateInitInstanceLocal()
static void Delete(void *p)
static TClass * Dictionary()
static const char * Name()
static void SetInstance(::ROOT::TGenericClassInfo &R__instance, NewFunc_t, NewArrFunc_t, DelFunc_t, DelArrFunc_t, DesFunc_t)
static void SetName(const std::string &name, std::string &nameMember)
static void SetfgIsA(atomic_TClass_ptr &isA, TClass *(*dictfun)())
void Unregister(const char *classname, TClass *cl) const override
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) const override
void Register(const char *cname, Version_t id, const std::type_info &info, DictFuncPtr_t dict, Int_t pragmabits) const override
virtual void Unregister(const char *classname, TClass *cl) const =0
virtual 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) const =0
virtual void Register(const char *cname, Version_t id, const std::type_info &info, DictFuncPtr_t dict, Int_t pragmabits) const =0
Using a TBrowser one can browse all ROOT objects.
Buffer base class used for serializing objects.
TClass instances represent classes, structs and namespaces in the ROOT type system.
Collection abstract base class.
Describe directory structure in memory.
Abstract base class for accessing the data-members of a class.
The TNamed class is the base class for all named ROOT classes.
Mother of all ROOT objects.
Defines a common interface to inspect/change the contents of an object that represents a collection.
void DefaultStreamer(TBuffer &R__b, const TClass *cl, void *objpointer)
Default streamer implementation used by ClassDefInline to avoid requirement to include TBuffer....
const TInitBehavior * DefineBehavior(void *, void *)
Bool_t HasConsistentHashMember(TClass &clRef)
Return true is the Hash/RecursiveRemove setup is consistent, i.e.
std::string GetDemangledTypeName(const std::type_info &t)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
void(* DirAutoAdd_t)(void *, TDirectory *)
ROOT::TClassAlt * AddClassAlternate(const char *normName, const char *alternate)
Global function called by GenerateInitInstance.
void(* ResetAfterMergeFunc_t)(void *, TFileMergeInfo *)
void(* DesFunc_t)(void *)
void RemoveClass(const char *cname, TClass *cl)
Global function called by the dtor of a class's init class (see the ClassImp macro).
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).
void(* DelFunc_t)(void *)
void(* BrowseFunc_t)(const void *, TBrowser *)
void AddClass(const char *cname, Version_t id, const std::type_info &info, DictFuncPtr_t dict, Int_t pragmabits)
Global function called by the ctor of a class's init class (see the ClassImp macro).
TNamed * RegisterClassTemplate(const char *name, const char *file, Int_t line)
Global function to register the implementation file and line of a class template (i....
void *(* NewArrFunc_t)(Long_t size, void *arena)
void Class_ShowMembers(TClass *cl, const void *obj, TMemberInspector &)
Indirect call to the implementation of ShowMember allowing [forward] declaration with out a full defi...
void ResetClassVersion(TClass *, const char *, Short_t)
Global function to update the version number.
Short_t SetClassVersion(RootClass *)
void(* DelArrFunc_t)(void *)
void *(* NewFunc_t)(void *)
Long64_t(* MergeFunc_t)(void *, TCollection *, TFileMergeInfo *)
void RemoveClassAlternate(ROOT::TClassAlt *)
static Bool_t fgHashConsistency