Logo ROOT  
Reference Guide
Rtypes.h File Reference
#include "RtypesCore.h"
#include "DllImport.h"
#include "snprintf.h"
#include "strlcpy.h"
#include <atomic>
#include <stdio.h>
#include <string.h>
#include <typeinfo>
#include <type_traits>
#include "TGenericClassInfo.h"
#include "TIsAProxy.h"
Include dependency graph for Rtypes.h:

Classes

class  ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector< T >
 
class  ROOT::Internal::TCDGIILIBase
 
class  ROOT::Internal::TDefaultInitBehavior
 
struct  ROOT::Internal::THashConsistencyHolder< T >
 
class  ROOT::Internal::TInitBehavior
 

Namespaces

namespace  ROOT
 VSD Structures.
 
namespace  ROOT::Internal
 

Macros

#define _ClassDefBase_(name, id, virtual_keyword, overrd)
 
#define _ClassDefInline_(name, id, virtual_keyword, overrd)
 
#define _ClassDefOutline_(name, id, virtual_keyword, overrd)
 
#define BIT(n)   (1ULL << (n))
 
#define ClassDef(name, id)
 
#define ClassDef2T2(name, Tmpl1, Tmpl2)
 
#define ClassDef3T2(name, Tmpl1, Tmpl2, Tmpl3)
 
#define ClassDefInline(name, id)
 
#define ClassDefInlineNV(name, id)
 
#define ClassDefInlineOverride(name, id)
 
#define ClassDefNV(name, id)
 
#define ClassDefOverride(name, id)
 
#define ClassDefT(name, id)
 
#define ClassDefT2(name, Tmpl)
 
#define ClassDefTNV(name, id)
 
#define ClassImp(name)   ClassImpUnique(name,default)
 
#define ClassImp2T(name, Tmpl1, Tmpl2)   templateClassImp(name)
 
#define ClassImp3T(name, Tmpl1, Tmpl2, Tmpl3)   templateClassImp(name)
 
#define ClassImpT(name, Tmpl)   templateClassImp(name)
 
#define ClassImpUnique(name, key)
 
#define CLRBIT(n, i)   ((n) &= ~BIT(i))
 
#define NamespaceImp(name)   NamespaceImpUnique(name,default)
 
#define NamespaceImpUnique(name, key)
 
#define R__ADD_INCLUDE_PATH(PATH)
 
#define R__ADD_LIBRARY_PATH(PATH)
 
#define R__CLING_PTRCHECK(ONOFF)
 
#define R__LOAD_LIBRARY(LIBRARY)
 
#define R__UseDummy(name)    class _NAME2_(name,_c) { public: _NAME2_(name,_c)() { if (name) { } } }
 
#define RootClassVersion(name, VersionNumber)
 
#define RootStreamer(name, STREAMER)
 
#define SETBIT(n, i)   ((n) |= BIT(i))
 
#define templateClassImp(name)   templateClassImpUnique(name,default)
 
#define templateClassImpUnique(name, key)
 
#define TESTBIT(n, i)   ((Bool_t)(((n) & BIT(i)) != 0))
 

Typedefs

typedef std::atomic< TClass * > atomic_TClass_ptr
 
typedef void(* ClassConvStreamerFunc_t) (TBuffer &, void *, const TClass *)
 
typedef void(* ClassStreamerFunc_t) (TBuffer &, void *)
 
typedef void(* ROOT::DelArrFunc_t) (void *)
 
typedef void(* ROOT::DelFunc_t) (void *)
 
typedef void(* ROOT::DesFunc_t) (void *)
 
typedef TClass *(* DictFuncPtr_t) ()
 
typedef void(* ROOT::DirAutoAdd_t) (void *, TDirectory *)
 
typedef TClass *(* IsAGlobalFunc_t) (const TClass *, const void *obj)
 
typedef void(* MemberStreamerFunc_t) (TBuffer &, void *, Int_t)
 
typedef Long64_t(* ROOT::MergeFunc_t) (void *, TCollection *, TFileMergeInfo *)
 
typedef void *(* ROOT::NewArrFunc_t) (Long_t size, void *arena)
 
typedef void *(* ROOT::NewFunc_t) (void *)
 
typedef void(* ROOT::ResetAfterMergeFunc_t) (void *, TFileMergeInfo *)
 
typedef void(* ShowMembersFunc_t) (const void *obj, TMemberInspector &R__insp, Bool_t isTransient)
 
typedef void(* VoidFuncPtr_t) ()
 

Enumerations

enum  EColor {
  kWhite =0 , kBlack =1 , kGray =920 , kRed =632 ,
  kGreen =416 , kBlue =600 , kYellow =400 , kMagenta =616 ,
  kCyan =432 , kOrange =800 , kSpring =820 , kTeal =840 ,
  kAzure =860 , kViolet =880 , kPink =900
}
 
enum  ESysConstants { kMAXSIGNALS = 15 , kMAXPATHLEN = 8192 , kBUFFERSIZE = 8192 , kItimerResolution = 10 }
 

Functions

void ROOT::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). More...
 
void ROOT::AddClassAlternate (const char *normName, const char *alternate)
 Global function called by GenerateInitInstance. More...
 
void ROOT::Class_ShowMembers (TClass *cl, const void *obj, TMemberInspector &)
 Indirect call to the implementation of ShowMember allowing [forward] declaration with out a full definition of the TClass class. More...
 
TClassROOT::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). More...
 
void ROOT::Internal::DefaultStreamer (TBuffer &R__b, const TClass *cl, void *objpointer)
 Default streamer implementation used by ClassDefInline to avoid requirement to include TBuffer.h. More...
 
const TInitBehavior * ROOT::Internal::DefineBehavior (void *, void *)
 
Bool_t ROOT::Internal::HasConsistentHashMember (const char *clName)
 Return true is the Hash/RecursiveRemove setup is consistent, i.e. More...
 
Bool_t ROOT::Internal::HasConsistentHashMember (TClass &clRef)
 Return true is the Hash/RecursiveRemove setup is consistent, i.e. More...
 
template<class Tmpl >
TBufferoperator<< (TBuffer &buf, const Tmpl *obj)
 
template<class Tmpl >
TBufferoperator>> (TBuffer &buf, Tmpl *&obj)
 
char * R__STRTOK_R (char *str, const char *delim, char **saveptr)
 
TNamedROOT::RegisterClassTemplate (const char *name, const char *file, Int_t line)
 Global function to register the implementation file and line of a class template (i.e. More...
 
void ROOT::RemoveClass (const char *cname)
 Global function called by the dtor of a class's init class (see the ClassImp macro). More...
 
void ROOT::ResetClassVersion (TClass *, const char *, Short_t)
 Global function to update the version number. More...
 
template<class RootClass >
Short_t ROOT::SetClassVersion (RootClass *)
 

Variables

R__EXTERN Int_t gDebug
 

Macro Definition Documentation

◆ _ClassDefBase_

#define _ClassDefBase_ (   name,
  id,
  virtual_keyword,
  overrd 
)
Value:
private: \
static_assert(std::is_integral<decltype(id)>::value, "ClassDef(Inline) macro: the specified class version number is not an integer."); \
virtual_keyword Bool_t CheckTObjectHashConsistency() const overrd \
{ \
static std::atomic<UChar_t> recurseBlocker(0); \
if (R__likely(recurseBlocker >= 2)) { \
return ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency; \
} else if (recurseBlocker == 1) { \
return false; \
} else if (recurseBlocker++ == 0) { \
::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency = \
++recurseBlocker; \
return ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency; \
} \
return false; /* unreacheable */ \
} \
\
public: \
static Version_t Class_Version() { return id; } \
virtual_keyword TClass *IsA() const overrd { return name::Class(); } \
virtual_keyword void ShowMembers(TMemberInspector &insp) const overrd \
{ \
} \
void StreamerNVirtual(TBuffer &ClassDef_StreamerNVirtual_b) { name::Streamer(ClassDef_StreamerNVirtual_b); } \
static const char *DeclFileName() { return __FILE__; }
void Class()
Definition: Class.C:29
#define R__likely(expr)
Definition: RConfig.hxx:612
#define _QUOTE_(name)
Definition: RConfig.hxx:447
short Version_t
Definition: RtypesCore.h:61
bool Bool_t
Definition: RtypesCore.h:59
XFontStruct * id
Definition: TGX11.cxx:108
char name[80]
Definition: TGX11.cxx:109
Buffer base class used for serializing objects.
Definition: TBuffer.h:42
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:75
Abstract base class for accessing the data-members of a class.
Bool_t HasConsistentHashMember(const char *clName)
Return true is the Hash/RecursiveRemove setup is consistent, i.e.
Definition: TClass.cxx:7018
void Class_ShowMembers(TClass *cl, const void *obj, TMemberInspector &)
Indirect call to the implementation of ShowMember allowing [forward] declaration with out a full defi...
Definition: TClass.cxx:502

Definition at line 270 of file Rtypes.h.

◆ _ClassDefInline_

#define _ClassDefInline_ (   name,
  id,
  virtual_keyword,
  overrd 
)
Value:
_ClassDefBase_(name, id, virtual_keyword, overrd) public : static int ImplFileLine() { return -1; } \
static const char *ImplFileName() { return 0; } \
static const char *Class_Name() \
{ \
} \
static TClass *Dictionary() \
{ \
return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Dictionary(); \
} \
virtual_keyword void Streamer(TBuffer &R__b) overrd { ::ROOT::Internal::DefaultStreamer(R__b, name::Class(), this); }
#define _ClassDefBase_(name, id, virtual_keyword, overrd)
Definition: Rtypes.h:270
void DefaultStreamer(TBuffer &R__b, const TClass *cl, void *objpointer)
Default streamer implementation used by ClassDefInline to avoid requirement to include TBuffer....
Definition: TBuffer.cxx:30
const char * Name
Definition: TXMLSetup.cxx:66

Definition at line 312 of file Rtypes.h.

◆ _ClassDefOutline_

#define _ClassDefOutline_ (   name,
  id,
  virtual_keyword,
  overrd 
)
Value:
_ClassDefBase_(name,id, virtual_keyword, overrd) \
private: \
static atomic_TClass_ptr fgIsA; \
public: \
static int ImplFileLine(); \
static const char *ImplFileName(); \
static const char *Class_Name(); \
static TClass *Dictionary(); \
static TClass *Class(); \
virtual_keyword void Streamer(TBuffer&) overrd;
std::atomic< TClass * > atomic_TClass_ptr
Definition: Rtypes.h:195

Definition at line 300 of file Rtypes.h.

◆ BIT

#define BIT (   n)    (1ULL << (n))

Definition at line 83 of file Rtypes.h.

◆ ClassDef

#define ClassDef (   name,
  id 
)
Value:
_ClassDefOutline_(name,id,virtual,) \
static int DeclFileLine() { return __LINE__; }
#define _ClassDefOutline_(name, id, virtual_keyword, overrd)
Definition: Rtypes.h:300

Definition at line 326 of file Rtypes.h.

◆ ClassDef2T2

#define ClassDef2T2 (   name,
  Tmpl1,
  Tmpl2 
)

Definition at line 418 of file Rtypes.h.

◆ ClassDef3T2

#define ClassDef3T2 (   name,
  Tmpl1,
  Tmpl2,
  Tmpl3 
)

Definition at line 427 of file Rtypes.h.

◆ ClassDefInline

#define ClassDefInline (   name,
  id 
)
Value:
_ClassDefInline_(name,id,virtual,) \
static int DeclFileLine() { return __LINE__; }
#define _ClassDefInline_(name, id, virtual_keyword, overrd)
Definition: Rtypes.h:312

Definition at line 338 of file Rtypes.h.

◆ ClassDefInlineNV

#define ClassDefInlineNV (   name,
  id 
)
Value:
static int DeclFileLine() { return __LINE__; }

Definition at line 346 of file Rtypes.h.

◆ ClassDefInlineOverride

#define ClassDefInlineOverride (   name,
  id 
)
Value:
_ClassDefInline_(name,id,,override) \
static int DeclFileLine() { return __LINE__; }

Definition at line 342 of file Rtypes.h.

◆ ClassDefNV

#define ClassDefNV (   name,
  id 
)
Value:
static int DeclFileLine() { return __LINE__; }

Definition at line 334 of file Rtypes.h.

◆ ClassDefOverride

#define ClassDefOverride (   name,
  id 
)
Value:
_ClassDefOutline_(name,id,,override) \
static int DeclFileLine() { return __LINE__; }

Definition at line 330 of file Rtypes.h.

◆ ClassDefT

#define ClassDefT (   name,
  id 
)
Value:
_ClassDefOutline_(name,id,virtual,) \
static int DeclFileLine() { return __LINE__; }

Definition at line 392 of file Rtypes.h.

◆ ClassDefT2

#define ClassDefT2 (   name,
  Tmpl 
)

Definition at line 401 of file Rtypes.h.

◆ ClassDefTNV

#define ClassDefTNV (   name,
  id 
)
Value:
_ClassDefOutline_(name,id,virtual,) \
static int DeclFileLine() { return __LINE__; }

Definition at line 396 of file Rtypes.h.

◆ ClassImp

#define ClassImp (   name)    ClassImpUnique(name,default)

Definition at line 365 of file Rtypes.h.

◆ ClassImp2T

#define ClassImp2T (   name,
  Tmpl1,
  Tmpl2 
)    templateClassImp(name)

Definition at line 419 of file Rtypes.h.

◆ ClassImp3T

#define ClassImp3T (   name,
  Tmpl1,
  Tmpl2,
  Tmpl3 
)    templateClassImp(name)

Definition at line 428 of file Rtypes.h.

◆ ClassImpT

#define ClassImpT (   name,
  Tmpl 
)    templateClassImp(name)

Definition at line 411 of file Rtypes.h.

◆ ClassImpUnique

#define ClassImpUnique (   name,
  key 
)
Value:
namespace ROOT { \
TGenericClassInfo *GenerateInitInstance(const name*); \
namespace { \
static int _R__UNIQUE_(_NAME2_(R__dummyint,key)) __attribute__((unused)) = \
GenerateInitInstance((name*)0x0)->SetImplFile(__FILE__, __LINE__); \
R__UseDummy(_R__UNIQUE_(_NAME2_(R__dummyint,key))); \
} \
}
#define _NAME2_(name1, name2)
Definition: RConfig.hxx:444
#define _R__UNIQUE_(X)
Definition: RConfig.hxx:456
VSD Structures.
Definition: StringConv.hxx:21

Definition at line 356 of file Rtypes.h.

◆ CLRBIT

#define CLRBIT (   n,
 
)    ((n) &= ~BIT(i))

Definition at line 85 of file Rtypes.h.

◆ NamespaceImp

#define NamespaceImp (   name)    NamespaceImpUnique(name,default)

Definition at line 380 of file Rtypes.h.

◆ NamespaceImpUnique

#define NamespaceImpUnique (   name,
  key 
)
Value:
namespace name { \
namespace ROOT { \
::ROOT::TGenericClassInfo *GenerateInitInstance(); \
namespace { \
static int _R__UNIQUE_(_NAME2_(R__dummyint,key)) = \
GenerateInitInstance()->SetImplFile(__FILE__, __LINE__); \
R__UseDummy(_R__UNIQUE_(_NAME2_(R__dummyint,key))); \
} \
} \
}

Definition at line 369 of file Rtypes.h.

◆ R__ADD_INCLUDE_PATH

#define R__ADD_INCLUDE_PATH (   PATH)

Definition at line 474 of file Rtypes.h.

◆ R__ADD_LIBRARY_PATH

#define R__ADD_LIBRARY_PATH (   PATH)

Definition at line 475 of file Rtypes.h.

◆ R__CLING_PTRCHECK

#define R__CLING_PTRCHECK (   ONOFF)

Definition at line 482 of file Rtypes.h.

◆ R__LOAD_LIBRARY

#define R__LOAD_LIBRARY (   LIBRARY)

Definition at line 473 of file Rtypes.h.

◆ R__UseDummy

#define R__UseDummy (   name)     class _NAME2_(name,_c) { public: _NAME2_(name,_c)() { if (name) { } } }

Definition at line 352 of file Rtypes.h.

◆ RootClassVersion

#define RootClassVersion (   name,
  VersionNumber 
)
Value:
namespace ROOT { \
TGenericClassInfo *GenerateInitInstance(const name*); \
static Short_t _R__UNIQUE_(R__dummyVersionNumber) = \
GenerateInitInstance((name*)0x0)->SetVersion(VersionNumber); \
R__UseDummy(_R__UNIQUE_(R__dummyVersionNumber)); \
}
short Short_t
Definition: RtypesCore.h:35

Definition at line 433 of file Rtypes.h.

◆ RootStreamer

#define RootStreamer (   name,
  STREAMER 
)
Value:
namespace ROOT { \
TGenericClassInfo *GenerateInitInstance(const name*); \
static Short_t _R__UNIQUE_(R__dummyStreamer) = \
GenerateInitInstance((name*)0x0)->SetStreamer(STREAMER); \
R__UseDummy(_R__UNIQUE_(R__dummyStreamer)); \
}

Definition at line 441 of file Rtypes.h.

◆ SETBIT

#define SETBIT (   n,
 
)    ((n) |= BIT(i))

Definition at line 84 of file Rtypes.h.

◆ templateClassImp

#define templateClassImp (   name)    templateClassImpUnique(name,default)

Definition at line 409 of file Rtypes.h.

◆ templateClassImpUnique

#define templateClassImpUnique (   name,
  key 
)
Value:
namespace ROOT { \
static TNamed * \
_R__UNIQUE_(_NAME2_(R__dummyholder, key)) = ::ROOT::RegisterClassTemplate(_QUOTE_(name), __FILE__, __LINE__); \
R__UseDummy(_R__UNIQUE_(_NAME2_(R__dummyholder, key))); \
}
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
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....

Definition at line 403 of file Rtypes.h.

◆ TESTBIT

#define TESTBIT (   n,
 
)    ((Bool_t)(((n) & BIT(i)) != 0))

Definition at line 86 of file Rtypes.h.

Typedef Documentation

◆ atomic_TClass_ptr

typedef std::atomic<TClass*> atomic_TClass_ptr

Definition at line 195 of file Rtypes.h.

◆ ClassConvStreamerFunc_t

typedef void(* ClassConvStreamerFunc_t) (TBuffer &, void *, const TClass *)

Definition at line 71 of file Rtypes.h.

◆ ClassStreamerFunc_t

typedef void(* ClassStreamerFunc_t) (TBuffer &, void *)

Definition at line 70 of file Rtypes.h.

◆ DictFuncPtr_t

typedef TClass *(* DictFuncPtr_t) ()

Definition at line 78 of file Rtypes.h.

◆ IsAGlobalFunc_t

typedef TClass *(* IsAGlobalFunc_t) (const TClass *, const void *obj)

Definition at line 98 of file Rtypes.h.

◆ MemberStreamerFunc_t

typedef void(* MemberStreamerFunc_t) (TBuffer &, void *, Int_t)

Definition at line 72 of file Rtypes.h.

◆ ShowMembersFunc_t

typedef void(* ShowMembersFunc_t) (const void *obj, TMemberInspector &R__insp, Bool_t isTransient)

Definition at line 96 of file Rtypes.h.

◆ VoidFuncPtr_t

typedef void(* VoidFuncPtr_t) ()

Definition at line 77 of file Rtypes.h.

Enumeration Type Documentation

◆ EColor

enum EColor
Enumerator
kWhite 
kBlack 
kGray 
kRed 
kGreen 
kBlue 
kYellow 
kMagenta 
kCyan 
kOrange 
kSpring 
kTeal 
kAzure 
kViolet 
kPink 

Definition at line 63 of file Rtypes.h.

◆ ESysConstants

Enumerator
kMAXSIGNALS 
kMAXPATHLEN 
kBUFFERSIZE 
kItimerResolution 

Definition at line 56 of file Rtypes.h.

Function Documentation

◆ operator<<()

template<class Tmpl >
TBuffer & operator<< ( TBuffer buf,
const Tmpl *  obj 
)

Definition at line 398 of file TBuffer.h.

◆ operator>>()

template<class Tmpl >
TBuffer & operator>> ( TBuffer buf,
Tmpl *&  obj 
)

Definition at line 382 of file TBuffer.h.

◆ R__STRTOK_R()

char * R__STRTOK_R ( char *  str,
const char *  delim,
char **  saveptr 
)
inline

Definition at line 486 of file Rtypes.h.

Variable Documentation

◆ gDebug

R__EXTERN Int_t gDebug

Definition at line 91 of file Rtypes.h.