Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
Rtypes.h File Reference
#include "RtypesCore.h"
#include <cstdio>
#include "strtok.h"
#include "strlcpy.h"
#include "snprintf.h"
#include <type_traits>
#include <typeinfo>
#include <atomic>
#include "TGenericClassInfo.h"
#include "TIsAProxy.h"
#include <string>
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
 This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
 
namespace  ROOT::Internal
 

Macros

#define _ClassDefBase_(name, id, virtual_keyword, overrd)
 Common part being called both by _ClassDefOutline_ and _ClassDefInline_.
 
#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)
 This ClassDefT is strictly redundant and is kept only for backward compatibility.
 
#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)
 Macro for Namespace.
 
#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 = 16 , 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).
 
ROOT::TClassAltROOT::AddClassAlternate (const char *normName, const char *alternate)
 Global function called by GenerateInitInstance.
 
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.
 
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).
 
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.
 
const TInitBehaviorROOT::Internal::DefineBehavior (void *, void *)
 
Bool_t ROOT::Internal::HasConsistentHashMember (const char *clName)
 Return true is the Hash/RecursiveRemove setup is consistent, i.e.
 
Bool_t ROOT::Internal::HasConsistentHashMember (TClass &clRef)
 Return true is the Hash/RecursiveRemove setup is consistent, i.e.
 
template<class Tmpl >
TBufferoperator<< (TBuffer &buf, const Tmpl *obj)
 
template<class Tmpl >
TBufferoperator>> (TBuffer &buf, Tmpl *&obj)
 
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.
 
void ROOT::RemoveClass (const char *cname, TClass *cl)
 Global function called by the dtor of a class's init class (see the ClassImp macro).
 
void ROOT::RemoveClassAlternate (ROOT::TClassAlt *)
 
void ROOT::ResetClassVersion (TClass *, const char *, Short_t)
 Global function to update the version number.
 
template<class RootClass >
Short_t ROOT::SetClassVersion (RootClass *)
 

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."); \
/** \cond HIDDEN_SYMBOLS */ 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 = \
::ROOT::Internal::HasConsistentHashMember(_QUOTE_(name)) || \
::ROOT::Internal::HasConsistentHashMember(*IsA()); \
++recurseBlocker; \
return ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency; \
} \
return false; /* unreachable */ \
} /** \endcond */ \
\
public: \
/** \return Version of this class */ static constexpr Version_t Class_Version() { return id; } \
/** \return TClass describing current object */ virtual_keyword TClass *IsA() const overrd \
{ return name::Class(); } \
/** \cond HIDDEN_SYMBOLS */ virtual_keyword void ShowMembers(TMemberInspector &insp) const overrd \
{ \
::ROOT::Class_ShowMembers(name::Class(), this, insp); \
} /** \endcond */ \
void StreamerNVirtual(TBuffer &ClassDef_StreamerNVirtual_b) { name::Streamer(ClassDef_StreamerNVirtual_b); } \
/** \return Name of the file containing the class declaration */ static const char *DeclFileName() { return __FILE__; }
#define R__likely(expr)
Definition RConfig.hxx:612
#define _QUOTE_(name)
Definition RConfig.hxx:473
bool Bool_t
Definition RtypesCore.h:63
short Version_t
Definition RtypesCore.h:65
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
char name[80]
Definition TGX11.cxx:110
void StreamerNVirtual(TBuffer &ClassDef_StreamerNVirtual_b)
Definition TStringLong.h:20
static constexpr Version_t Class_Version()
Definition TStringLong.h:20
TClass * IsA() const override
Definition TStringLong.h:20
static const char * DeclFileName()
Definition TStringLong.h:20
Buffer base class used for serializing objects.
Definition TBuffer.h:43
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:81
Abstract base class for accessing the data-members of a class.

Common part being called both by _ClassDefOutline_ and _ClassDefInline_.

Note
DeclFileLine() is not part of it, since Cling uses that as trigger for associating as class title the comment string found right after the macro.

Definition at line 271 of file Rtypes.h.

◆ _ClassDefInline_

#define _ClassDefInline_ (   name,
  id,
  virtual_keyword,
  overrd 
)
Value:
_ClassDefBase_(name, id, virtual_keyword, overrd) public : \
/** \cond HIDDEN_SYMBOLS \deprecated */ static int ImplFileLine() { return -1; } /** \endcond */ \
/** \cond HIDDEN_SYMBOLS \deprecated */ static const char *ImplFileName() { return nullptr; } /** \endcond */\
/** \return Name of this class */ static const char *Class_Name() \
{ \
return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Name(); \
} \
/** \cond HIDDEN_SYMBOLS */ static TClass *Dictionary() \
{ \
return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Dictionary(); \
} /** \endcond */ \
/** \return TClass describing this class */ static TClass *Class() \
{ \
return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Class(); \
} \
virtual_keyword void Streamer(TBuffer &R__b) overrd \
{ \
::ROOT::Internal::DefaultStreamer(R__b, name::Class(), this); \
}
#define _ClassDefBase_(name, id, virtual_keyword, overrd)
Common part being called both by _ClassDefOutline_ and _ClassDefInline_.
Definition Rtypes.h:271
static const char * Class_Name()
static TClass * Class()
Definition Class.C:29
void Streamer(TBuffer &) override

Definition at line 316 of file Rtypes.h.

◆ _ClassDefOutline_

#define _ClassDefOutline_ (   name,
  id,
  virtual_keyword,
  overrd 
)
Value:
_ClassDefBase_(name,id, virtual_keyword, overrd) \
private: \
/** \cond HIDDEN_SYMBOLS \brief Pointer holding the address of the TClass describing this class */ \
static atomic_TClass_ptr fgIsA; /** \endcond */ \
public: \
/** \cond HIDDEN_SYMBOLS \deprecated */ static int ImplFileLine(); /** \endcond */ \
/** \cond HIDDEN_SYMBOLS \deprecated */ static const char *ImplFileName(); /** \endcond */ \
/** \return Name of this class */ static const char *Class_Name(); \
/** \cond HIDDEN_SYMBOLS */ static TClass *Dictionary(); /** \endcond */ \
/** \return TClass describing this class */ static TClass *Class(); \
virtual_keyword void Streamer(TBuffer&) overrd;
std::atomic< TClass * > atomic_TClass_ptr
Definition Rtypes.h:195

Definition at line 303 of file Rtypes.h.

◆ BIT

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

Definition at line 85 of file Rtypes.h.

◆ ClassDef

#define ClassDef (   name,
  id 
)
Value:
_ClassDefOutline_(name,id,virtual,) \
/** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
#define _ClassDefOutline_(name, id, virtual_keyword, overrd)
Definition Rtypes.h:303

Definition at line 337 of file Rtypes.h.

◆ ClassDef2T2

#define ClassDef2T2 (   name,
  Tmpl1,
  Tmpl2 
)

Definition at line 431 of file Rtypes.h.

◆ ClassDef3T2

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

Definition at line 440 of file Rtypes.h.

◆ ClassDefInline

#define ClassDefInline (   name,
  id 
)
Value:
_ClassDefInline_(name,id,virtual,) \
/** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
#define _ClassDefInline_(name, id, virtual_keyword, overrd)
Definition Rtypes.h:316

Definition at line 349 of file Rtypes.h.

◆ ClassDefInlineNV

#define ClassDefInlineNV (   name,
  id 
)
Value:
/** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */

Definition at line 357 of file Rtypes.h.

◆ ClassDefInlineOverride

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

Definition at line 353 of file Rtypes.h.

◆ ClassDefNV

#define ClassDefNV (   name,
  id 
)
Value:
/** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */

Definition at line 345 of file Rtypes.h.

◆ ClassDefOverride

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

Definition at line 341 of file Rtypes.h.

◆ ClassDefT

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

This ClassDefT is strictly redundant and is kept only for backward compatibility.

Deprecated:

Definition at line 404 of file Rtypes.h.

◆ ClassDefT2

#define ClassDefT2 (   name,
  Tmpl 
)

Definition at line 413 of file Rtypes.h.

◆ ClassDefTNV

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

Definition at line 408 of file Rtypes.h.

◆ ClassImp

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

Definition at line 377 of file Rtypes.h.

◆ ClassImp2T

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

Definition at line 432 of file Rtypes.h.

◆ ClassImp3T

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

Definition at line 441 of file Rtypes.h.

◆ ClassImpT

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

Definition at line 424 of file Rtypes.h.

◆ ClassImpUnique

#define ClassImpUnique (   name,
  key 
)
Value:
namespace ROOT { \
/** \cond HIDDEN_SYMBOLS */ TGenericClassInfo *GenerateInitInstance(const name*); /** \endcond */ \
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:470
#define _R__UNIQUE_(X)
Definition RConfig.hxx:482
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.

Definition at line 366 of file Rtypes.h.

◆ CLRBIT

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

Definition at line 87 of file Rtypes.h.

◆ NamespaceImp

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

Definition at line 393 of file Rtypes.h.

◆ NamespaceImpUnique

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

Macro for Namespace.

Definition at line 380 of file Rtypes.h.

◆ R__ADD_INCLUDE_PATH

#define R__ADD_INCLUDE_PATH (   PATH)

Definition at line 492 of file Rtypes.h.

◆ R__ADD_LIBRARY_PATH

#define R__ADD_LIBRARY_PATH (   PATH)

Definition at line 493 of file Rtypes.h.

◆ R__CLING_PTRCHECK

#define R__CLING_PTRCHECK (   ONOFF)

Definition at line 500 of file Rtypes.h.

◆ R__LOAD_LIBRARY

#define R__LOAD_LIBRARY (   LIBRARY)

Definition at line 491 of file Rtypes.h.

◆ R__UseDummy

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

Definition at line 363 of file Rtypes.h.

◆ RootClassVersion

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

Definition at line 446 of file Rtypes.h.

◆ RootStreamer

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

Definition at line 456 of file Rtypes.h.

◆ SETBIT

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

Definition at line 86 of file Rtypes.h.

◆ templateClassImp

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

Definition at line 422 of file Rtypes.h.

◆ templateClassImpUnique

#define templateClassImpUnique (   name,
  key 
)
Value:
namespace ROOT { \
/** \cond HIDDEN_SYMBOLS */ static TNamed * \
_R__UNIQUE_(_NAME2_(R__dummyholder, key)) = ::ROOT::RegisterClassTemplate(_QUOTE_(name), __FILE__, __LINE__); \
/** \endcond */ \
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 415 of file Rtypes.h.

◆ TESTBIT

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

Definition at line 88 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 73 of file Rtypes.h.

◆ ClassStreamerFunc_t

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

Definition at line 72 of file Rtypes.h.

◆ DictFuncPtr_t

typedef TClass *(* DictFuncPtr_t) ()

Definition at line 80 of file Rtypes.h.

◆ IsAGlobalFunc_t

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

Definition at line 96 of file Rtypes.h.

◆ MemberStreamerFunc_t

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

Definition at line 74 of file Rtypes.h.

◆ ShowMembersFunc_t

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

Definition at line 94 of file Rtypes.h.

◆ VoidFuncPtr_t

typedef void(* VoidFuncPtr_t) ()

Definition at line 79 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 65 of file Rtypes.h.

◆ ESysConstants

Enumerator
kMAXSIGNALS 
kMAXPATHLEN 
kBUFFERSIZE 
kItimerResolution 

Definition at line 58 of file Rtypes.h.

Function Documentation

◆ operator<<()

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

Definition at line 399 of file TBuffer.h.

◆ operator>>()

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

Definition at line 383 of file TBuffer.h.