26#ifndef R__LESS_INCLUDES
40#define __attribute__(unused)
90#define BIT(n) (1ULL << (n))
91#define SETBIT(n,i) ((n) |= BIT(i))
92#define CLRBIT(n,i) ((n) &= ~BIT(i))
93#define TESTBIT(n,i) ((Bool_t)(((n) & BIT(i)) != 0))
112 class TGenericClassInfo;
114 typedef void *(*NewFunc_t)(
void *);
146 template <
class T> TGenericClassInfo *GetClassInfo(
const T* t) {
162 const std::type_info &
info,
174 const std::type_info &
info,
206namespace ROOT {
namespace Internal {
223 static void *
New(
void *
p) {
return p ?
new(
p) T :
new T; };
230 static ::TVirtualIsAProxy*
isa_proxy = new ::TInstrumentedIsAProxy<T>(
nullptr);
231 static ::ROOT::TGenericClassInfo
233 T::DeclFileName(), T::DeclFileLine(),
235 &T::Dictionary,
isa_proxy, 0,
sizeof(T) );
246 static std::string gName;
249 return gName.c_str();
260 template <
typename T>
265 template <
typename T>
277#define _ClassDefBase_(name, id, virtual_keyword, overrd) \
279 static_assert(std::is_integral<decltype(id)>::value, \
280 "ClassDef(Inline) macro: the specified class version number is not an integer."); \
281 virtual_keyword Bool_t CheckTObjectHashConsistency() const overrd \
283 static std::atomic<UChar_t> recurseBlocker(0); \
284 if (R__likely(recurseBlocker >= 2)) { \
285 return ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency; \
286 } else if (recurseBlocker == 1) { \
288 } else if (recurseBlocker++ == 0) { \
289 ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency = \
290 ::ROOT::Internal::HasConsistentHashMember(_QUOTE_(name)) || \
291 ::ROOT::Internal::HasConsistentHashMember(*IsA()); \
293 return ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency; \
299 static constexpr Version_t Class_Version() { return id; } \
300 virtual_keyword TClass *IsA() const overrd \
301 { return name::Class(); } \
302 virtual_keyword void ShowMembers(TMemberInspector &insp) const overrd \
304 ::ROOT::Class_ShowMembers(name::Class(), this, insp); \
306 void StreamerNVirtual(TBuffer &ClassDef_StreamerNVirtual_b) { name::Streamer(ClassDef_StreamerNVirtual_b); } \
307 static const char *DeclFileName() { return __FILE__; }
309#define _ClassDefOutline_(name,id, virtual_keyword, overrd) \
310 _ClassDefBase_(name,id, virtual_keyword, overrd) \
313 static atomic_TClass_ptr fgIsA; \
315 static int ImplFileLine(); \
316 static const char *ImplFileName(); \
317 static const char *Class_Name(); \
318 static TClass *Dictionary(); \
319 static TClass *Class(); \
320 virtual_keyword void Streamer(TBuffer&) overrd;
322#define _ClassDefInline_(name, id, virtual_keyword, overrd) \
323 _ClassDefBase_(name, id, virtual_keyword, overrd) public : \
324 static int ImplFileLine() { return -1; } \
325 static const char *ImplFileName() { return nullptr; } \
326 static const char *Class_Name() \
328 return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Name(); \
330 static TClass *Dictionary() \
332 return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Dictionary(); \
334 static TClass *Class() \
336 return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Class(); \
338 virtual_keyword void Streamer(TBuffer &R__b) overrd \
340 ::ROOT::Internal::DefaultStreamer(R__b, name::Class(), this); \
343#define ClassDef(name,id) \
344 _ClassDefOutline_(name,id,virtual,) \
345 static int DeclFileLine() { return __LINE__; }
347#define ClassDefOverride(name,id) \
348 _ClassDefOutline_(name,id,,override) \
349 static int DeclFileLine() { return __LINE__; }
351#define ClassDefNV(name,id) \
352 _ClassDefOutline_(name,id,,) \
353 static int DeclFileLine() { return __LINE__; }
355#define ClassDefInline(name,id) \
356 _ClassDefInline_(name,id,virtual,) \
357 static int DeclFileLine() { return __LINE__; }
359#define ClassDefInlineOverride(name,id) \
360 _ClassDefInline_(name,id,,override) \
361 static int DeclFileLine() { return __LINE__; }
363#define ClassDefInlineNV(name,id) \
364 _ClassDefInline_(name,id,,) \
365 static int DeclFileLine() { return __LINE__; }
369#define R__UseDummy(name) \
370 class _NAME2_(name,_c) { public: _NAME2_(name,_c)() { if (name) { } } }
372#define ClassImpUnique(name, key)
375#define ClassImp(name) ClassImpUnique(name,default)
378#define NamespaceImpUnique(name, key)
380#define NamespaceImp(name) NamespaceImpUnique(name,default)
391#define ClassDefT(name,id) \
392 _ClassDefOutline_(name,id,virtual,) \
393 static int DeclFileLine() { return __LINE__; }
395#define ClassDefTNV(name,id) \
396 _ClassDefOutline_(name,id,virtual,) \
397 static int DeclFileLine() { return __LINE__; }
400#define ClassDefT2(name,Tmpl)
402#define templateClassImpUnique(name, key)
404#define templateClassImp(name) templateClassImpUnique(name,default)
406#define ClassImpT(name,Tmpl) templateClassImp(name)
413#define ClassDef2T2(name,Tmpl1,Tmpl2)
414#define ClassImp2T(name,Tmpl1,Tmpl2) templateClassImp(name)
422#define ClassDef3T2(name,Tmpl1,Tmpl2,Tmpl3)
423#define ClassImp3T(name,Tmpl1,Tmpl2,Tmpl3) templateClassImp(name)
428#define RootClassVersion(name,VersionNumber) \
430 TGenericClassInfo *GenerateInitInstance(const name*); \
432 static Short_t _R__UNIQUE_(R__dummyVersionNumber) = \
433 GenerateInitInstance((name*)0x0)->SetVersion(VersionNumber); \
435 R__UseDummy(_R__UNIQUE_(R__dummyVersionNumber)); \
438#define RootStreamer(name,STREAMER) \
441 TGenericClassInfo *GenerateInitInstance(const name*); \
443 static Short_t _R__UNIQUE_(R__dummyStreamer) = \
444 GenerateInitInstance((name*)0x0)->SetStreamer(STREAMER); \
446 R__UseDummy(_R__UNIQUE_(R__dummyStreamer)); \
456# define _R_PragmaStr(x) _Pragma(#x)
457# define R__LOAD_LIBRARY(LIBRARY) _R_PragmaStr(cling load ( #LIBRARY ))
458# define R__ADD_INCLUDE_PATH(PATH) _R_PragmaStr(cling add_include_path ( #PATH ))
459# define R__ADD_LIBRARY_PATH(PATH) _R_PragmaStr(cling add_library_path ( #PATH ))
460#elif defined(R__WIN32)
461# define _R_PragmaStr(x) __pragma(#x)
462# define R__LOAD_LIBRARY(LIBRARY) _R_PragmaStr(comment(lib, #LIBRARY))
463# define R__ADD_INCLUDE_PATH(PATH) _R_PragmaStr(comment(path, #PATH))
464# define R__ADD_LIBRARY_PATH(PATH) _R_PragmaStr(comment(path, #PATH))
473# define R__LOAD_LIBRARY(LIBRARY)
474# define R__ADD_INCLUDE_PATH(PATH)
475# define R__ADD_LIBRARY_PATH(PATH)
480# define R__CLING_PTRCHECK(ONOFF) __attribute__((annotate("__cling__ptrcheck(" #ONOFF ")")))
482# define R__CLING_PTRCHECK(ONOFF)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
Basic types used by ROOT and required by TInterpreter.
bool Bool_t
Boolean (0=false, 1=true) (bool)
int Int_t
Signed integer 4 bytes (int)
short Version_t
Class version identifier (short)
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
short Short_t
Signed Short integer 2 bytes (short)
long long Long64_t
Portable signed long integer 8 bytes.
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 *)
@ kItimerResolution
interval-timer resolution in ms (used for TThread, TTimer, Emit, Connect, etc.)
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.
A class to pass information from the TFileMerger to the objects being merged.
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)
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 ClassDef 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 ClassDef 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