Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
Rtypes.h
Go to the documentation of this file.
1/* @(#)root/base:$Id$ */
2
3/*************************************************************************
4 * Copyright (C) 1995-2014, Rene Brun and Fons Rademakers. *
5 * All rights reserved. *
6 * *
7 * For the licensing terms see $ROOTSYS/LICENSE. *
8 * For the list of contributors see $ROOTSYS/README/CREDITS. *
9 *************************************************************************/
10
11#ifndef ROOT_Rtypes
12#define ROOT_Rtypes
13
14//////////////////////////////////////////////////////////////////////////
15// //
16// Rtypes //
17// //
18// Basic types used by ROOT; ClassDef macros. //
19// //
20//////////////////////////////////////////////////////////////////////////
21
22
23#include "RtypesCore.h"
24// #include "DllImport.h" // included via RtypesCore.h, not used here
25
26#ifndef R__LESS_INCLUDES
27#include <cstdio>
28#include "strtok.h" // provides R__STRTOK_R with <cstring> include
29#include "strlcpy.h" // part of string.h on systems that have it
30#include <type_traits>
31#endif
32
33#include <typeinfo>
34#include <atomic>
35
36#ifndef __CLING__
37// __attribute__ is not supported on Windows, but it is internally needed by Cling
38// for autoloading and Clad rely on __attribute__((annotate("D")))
39#if defined(R__WIN32)
40#define __attribute__(unused)
41#endif
42#endif
43
44//---- forward declared class types --------------------------------------------
45
46class TClass;
47class TBrowser;
48class TBuffer;
49class TDirectory;
51class TObject;
52class TNamed;
53class TCollection;
54class TFileMergeInfo;
55class TString;
56
57//Moved from TSystem.
62 kItimerResolution = 5 ///< interval-timer resolution in ms (used for TThread, TTimer, Emit, Connect, etc.)
63};
64
65enum EColor { kWhite =0, kBlack =1, kGray =920,
66 kRed =632, kGreen =416, kBlue =600, kYellow =400, kMagenta =616, kCyan =432,
67 kOrange =800, kSpring =820, kTeal =840, kAzure =860, kViolet =880, kPink =900,
68 kGrape =100, kBrown =101, kAsh =102,
69 kP6Blue =103, kP6Yellow =104, kP6Red =105, kP6Grape=106, kP6Gray =107, kP6Violet=108,
70 kP8Blue =109, kP8Orange =110, kP8Red =111, kP8Pink =112, kP8Green =113, kP8Cyan =114, kP8Azure =115, kP8Gray =116,
71 kP10Blue =117, kP10Yellow=118, kP10Red =119, kP10Gray=120, kP10Violet=121, kP10Brown=122, kP10Orange=123, kP10Green=124, kP10Ash=125, kP10Cyan=126
72 };
73
74// There is several streamer concepts.
75class TClassStreamer; // Streamer functor for a class
76class TMemberStreamer; // Streamer functor for a data member
77typedef void (*ClassStreamerFunc_t)(TBuffer&, void*); // Streamer function for a class
78typedef void (*ClassConvStreamerFunc_t)(TBuffer&, void*, const TClass*); // Streamer function for a class with conversion.
79typedef void (*MemberStreamerFunc_t)(TBuffer&, void*, Int_t); // Streamer function for a data member
80
81// This class is used to implement proxy around collection classes.
83
84typedef void (*VoidFuncPtr_t)(); //pointer to void function
85typedef TClass* (*DictFuncPtr_t)(); //pointer to dictionary function
86// NOTE: the previous name must be changed.
87
88//--- bit manipulation ---------------------------------------------------------
89
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))
94
95
96
97//---- ClassDef macros ---------------------------------------------------------
98
99typedef void (*ShowMembersFunc_t)(const void *obj, TMemberInspector &R__insp, Bool_t isTransient);
100class TVirtualIsAProxy;
101typedef TClass *(*IsAGlobalFunc_t)(const TClass*, const void *obj);
102
103// TBuffer.h declares and implements the following 2 operators
104template <class Tmpl> TBuffer &operator>>(TBuffer &buf, Tmpl *&obj);
105template <class Tmpl> TBuffer &operator<<(TBuffer &buf, const Tmpl *obj);
106
107// This might get used if we implement setting a class version.
108// template <class RootClass> Short_t GetClassVersion(RootClass *);
109
110namespace ROOT {
111
112 class TGenericClassInfo;
113 class TClassAlt;
114 typedef void *(*NewFunc_t)(void *);
115 typedef void *(*NewArrFunc_t)(Long_t size, void *arena);
116 typedef void (*DelFunc_t)(void *);
117 typedef void (*DelArrFunc_t)(void *);
118 typedef void (*DesFunc_t)(void *);
119 typedef void (*DirAutoAdd_t)(void *, TDirectory *);
121 typedef void (*ResetAfterMergeFunc_t)(void *, TFileMergeInfo *);
122 typedef void (*BrowseFunc_t)(const void *, TBrowser *);
123
124 template <class RootClass> Short_t SetClassVersion(RootClass *);
125
126 extern TClass *CreateClass(const char *cname, Version_t id,
127 const std::type_info &info, TVirtualIsAProxy *isa,
128 const char *dfil, const char *ifil,
129 Int_t dl, Int_t il);
130 extern void AddClass(const char *cname, Version_t id, const std::type_info &info,
132 extern void RemoveClass(const char *cname, TClass *cl);
133 extern void ResetClassVersion(TClass*, const char*, Short_t);
134 extern ROOT::TClassAlt* AddClassAlternate(const char *normName, const char *alternate);
136
137 extern TNamed *RegisterClassTemplate(const char *name,
138 const char *file, Int_t line);
139
140 extern void Class_ShowMembers(TClass *cl, const void *obj, TMemberInspector&);
141
142#if 0
143 // This function is only implemented in the dictionary file.
144 // The parameter is 'only' for overloading resolution.
145 // Used to be a template <class T> TGenericClassInfo *GenerateInitInstance(const T*);
146 template <class T> TGenericClassInfo *GetClassInfo(const T* t) {
147 TGenericClassInfo *GenerateInitInstance(const T*);
148 return CreateInitInstance(t);
149 };
150#endif
151
152 namespace Internal {
154 // This class defines the interface for the class registration and
155 // the TClass creation. To modify the default behavior, one would
156 // inherit from this class and overload ROOT::DefineBehavior().
157 // See TQObject.h and table/inc/Ttypes.h for examples.
158 public:
159 virtual ~TInitBehavior() { }
160
161 virtual void Register(const char *cname, Version_t id,
162 const std::type_info &info,
163 DictFuncPtr_t dict, Int_t pragmabits) const = 0;
164 virtual void Unregister(const char *classname, TClass *cl) const = 0;
165 virtual TClass *CreateClass(const char *cname, Version_t id,
166 const std::type_info &info, TVirtualIsAProxy *isa,
167 const char *dfil, const char *ifil,
168 Int_t dl, Int_t il) const = 0;
169 };
170
172 public:
173 void Register(const char *cname, Version_t id,
174 const std::type_info &info,
175 DictFuncPtr_t dict, Int_t pragmabits) const override {
176 ROOT::AddClass(cname, id, info, dict, pragmabits);
177 }
178
179 void Unregister(const char *classname, TClass *cl) const override {
180 ROOT::RemoveClass(classname, cl);
181 }
182
184 const std::type_info &info, TVirtualIsAProxy *isa,
185 const char *dfil, const char *ifil,
186 Int_t dl, Int_t il) const override {
187 return ROOT::CreateClass(cname, id, info, isa, dfil, ifil, dl, il);
188 }
189 };
190
191 const TInitBehavior *DefineBehavior(void * /*parent_type*/,
192 void * /*actual_type*/);
193 } // namespace Internal
194
195} // namespace ROOT
196
197// The macros below use TGenericClassInfo and TInstrumentedIsAProxy, so let's
198// ensure they are included.
199#include "TGenericClassInfo.h"
200
201typedef std::atomic<TClass*> atomic_TClass_ptr;
202
203#include "TIsAProxy.h"
204#include <string>
205
206namespace ROOT { namespace Internal {
207
209public:
210 // All implemented in TGenericClassInfo.cxx.
211 static void SetInstance(::ROOT::TGenericClassInfo& R__instance,
213 static void SetName(const std::string& name, std::string& nameMember);
214 static void SetfgIsA(atomic_TClass_ptr& isA, TClass*(*dictfun)());
215};
216
217template <typename T>
219 public TCDGIILIBase {
221 static ::ROOT::TGenericClassInfo *fgGenericInfo;
222 public:
223 static void *New(void *p) { return p ? new(p) T : new T; };
224 static void *NewArray(Long_t nElements, void *p) {
225 return p ? new(p) T[nElements] : new T[nElements]; }
226 static void Delete(void *p) { delete ((T*)p); }
227 static void DeleteArray(void *p) { delete[] ((T*)p); }
228 static void Destruct(void *p) { ((T*)p)->~T(); }
229 static ::ROOT::TGenericClassInfo *GenerateInitInstanceLocal() {
230 static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy<T>(nullptr);
231 static ::ROOT::TGenericClassInfo
232 R__instance(T::Class_Name(), T::Class_Version(),
233 T::DeclFileName(), T::DeclFileLine(),
234 typeid(T), ::ROOT::Internal::DefineBehavior((T*)nullptr, (T*)nullptr),
235 &T::Dictionary, isa_proxy, 0, sizeof(T) );
237 return &R__instance;
238 }
239 // We need a reference to the template instance static member in a concrete function in order
240 // to force its instantiation (even before the function is actually run)
241 // Since we do have a reference to Dictionary (in T::Dictionary), using fgGenericInfo
242 // here will insure that it is initialized at process start or library load time.
243 static TClass *Dictionary() { fgIsA = fgGenericInfo->GetClass(); return fgIsA; }
244 static TClass *Class() { SetfgIsA(fgIsA, &Dictionary); return fgIsA; }
245 static const char* Name() {
246 static std::string gName;
247 if (gName.empty())
248 SetName(GetDemangledTypeName(typeid(T)), gName);
249 return gName.c_str();
250 }
251 };
252
253 template<typename T>
255 template<typename T>
258 };
259
260 template <typename T>
264
265 template <typename T>
267
268 void DefaultStreamer(TBuffer &R__b, const TClass *cl, void *objpointer);
271}} // namespace ROOT::Internal
272
273
274/// Common part being called both by \_ClassDefOutline\_ and \_ClassDefInline\_.
275/// \note DeclFileLine() is not part of it, since Cling uses that as trigger for
276/// associating as class title the comment string found right after the macro.
277#define _ClassDefBase_(name, id, virtual_keyword, overrd) \
278private: \
279 static_assert(std::is_integral<decltype(id)>::value, \
280 "ClassDef(Inline) macro: the specified class version number is not an integer."); \
281 /** \cond HIDDEN_SYMBOLS */ virtual_keyword Bool_t CheckTObjectHashConsistency() const overrd \
282 { \
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) { \
287 return false; \
288 } else if (recurseBlocker++ == 0) { \
289 ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency = \
290 ::ROOT::Internal::HasConsistentHashMember(_QUOTE_(name)) || \
291 ::ROOT::Internal::HasConsistentHashMember(*IsA()); \
292 ++recurseBlocker; \
293 return ::ROOT::Internal::THashConsistencyHolder<decltype(*this)>::fgHashConsistency; \
294 } \
295 return false; /* unreachable */ \
296 } /** \endcond */ \
297 \
298public: \
299 /** \return Version of this class */ static constexpr Version_t Class_Version() { return id; } \
300 /** \return TClass describing current object */ virtual_keyword TClass *IsA() const overrd \
301 { return name::Class(); } \
302 /** \cond HIDDEN_SYMBOLS */ virtual_keyword void ShowMembers(TMemberInspector &insp) const overrd \
303 { \
304 ::ROOT::Class_ShowMembers(name::Class(), this, insp); \
305 } /** \endcond */ \
306 void StreamerNVirtual(TBuffer &ClassDef_StreamerNVirtual_b) { name::Streamer(ClassDef_StreamerNVirtual_b); } \
307 /** \return Name of the file containing the class declaration */ static const char *DeclFileName() { return __FILE__; }
308
309#define _ClassDefOutline_(name,id, virtual_keyword, overrd) \
310 _ClassDefBase_(name,id, virtual_keyword, overrd) \
311private: \
312 /** \cond HIDDEN_SYMBOLS \brief Pointer holding the address of the TClass describing this class */ \
313 static atomic_TClass_ptr fgIsA; /** \endcond */ \
314public: \
315 /** \cond HIDDEN_SYMBOLS \deprecated */ static int ImplFileLine(); /** \endcond */ \
316 /** \cond HIDDEN_SYMBOLS \deprecated */ static const char *ImplFileName(); /** \endcond */ \
317 /** \return Name of this class */ static const char *Class_Name(); \
318 /** \cond HIDDEN_SYMBOLS */ static TClass *Dictionary(); /** \endcond */ \
319 /** \return TClass describing this class */ static TClass *Class(); \
320 virtual_keyword void Streamer(TBuffer&) overrd;
321
322#define _ClassDefInline_(name, id, virtual_keyword, overrd) \
323 _ClassDefBase_(name, id, virtual_keyword, overrd) public : \
324 /** \cond HIDDEN_SYMBOLS \deprecated */ static int ImplFileLine() { return -1; } /** \endcond */ \
325 /** \cond HIDDEN_SYMBOLS \deprecated */ static const char *ImplFileName() { return nullptr; } /** \endcond */\
326 /** \return Name of this class */ static const char *Class_Name() \
327 { \
328 return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Name(); \
329 } \
330 /** \cond HIDDEN_SYMBOLS */ static TClass *Dictionary() \
331 { \
332 return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Dictionary(); \
333 } /** \endcond */ \
334 /** \return TClass describing this class */ static TClass *Class() \
335 { \
336 return ::ROOT::Internal::ClassDefGenerateInitInstanceLocalInjector<name>::Class(); \
337 } \
338 virtual_keyword void Streamer(TBuffer &R__b) overrd \
339 { \
340 ::ROOT::Internal::DefaultStreamer(R__b, name::Class(), this); \
341 }
342
343#define ClassDef(name,id) \
344 _ClassDefOutline_(name,id,virtual,) \
345 /** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
346
347#define ClassDefOverride(name,id) \
348 _ClassDefOutline_(name,id,,override) \
349 /** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
350
351#define ClassDefNV(name,id) \
352 _ClassDefOutline_(name,id,,) \
353 /** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
354
355#define ClassDefInline(name,id) \
356 _ClassDefInline_(name,id,virtual,) \
357 /** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
358
359#define ClassDefInlineOverride(name,id) \
360 _ClassDefInline_(name,id,,override) \
361 /** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
362
363#define ClassDefInlineNV(name,id) \
364 _ClassDefInline_(name,id,,) \
365 /** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
366
367//#define _ClassDefInterp_(name,id) ClassDefInline(name,id)
368
369#define R__UseDummy(name) \
370 class _NAME2_(name,_c) { public: _NAME2_(name,_c)() { if (name) { } } }
371
372#define ClassImpUnique(name, key)
373
374/// \deprecated
375#define ClassImp(name) ClassImpUnique(name,default)
376
377/// Macro for Namespace
378#define NamespaceImpUnique(name, key)
379
380#define NamespaceImp(name) NamespaceImpUnique(name,default)
381
382//---- ClassDefT macros for templates with one template argument ---------------
383// ClassDefT corresponds to ClassDef
384// ClassDefT2 goes in the same header as ClassDefT but must be
385// outside the class scope
386// ClassImpT corresponds to ClassImp
387
388
389/// This ClassDefT is strictly redundant and is kept only for
390/// backward compatibility. \deprecated
391#define ClassDefT(name,id) \
392 _ClassDefOutline_(name,id,virtual,) \
393 /** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
394
395#define ClassDefTNV(name,id) \
396 _ClassDefOutline_(name,id,virtual,) \
397 /** \cond HIDDEN_SYMBOLS */ static int DeclFileLine() { return __LINE__; } /** \endcond */
398
399
400#define ClassDefT2(name,Tmpl)
401
402#define templateClassImpUnique(name, key)
403
404#define templateClassImp(name) templateClassImpUnique(name,default)
405
406#define ClassImpT(name,Tmpl) templateClassImp(name)
407
408//---- ClassDefT macros for templates with two template arguments --------------
409// ClassDef2T2 goes in the same header as ClassDefT but must be
410// outside the class scope
411// ClassImp2T corresponds to ClassImpT
412
413#define ClassDef2T2(name,Tmpl1,Tmpl2)
414#define ClassImp2T(name,Tmpl1,Tmpl2) templateClassImp(name)
415
416
417//---- ClassDefT macros for templates with three template arguments ------------
418// ClassDef3T2 goes in the same header as ClassDefT but must be
419// outside the class scope
420// ClassImp3T corresponds to ClassImpT
421
422#define ClassDef3T2(name,Tmpl1,Tmpl2,Tmpl3)
423#define ClassImp3T(name,Tmpl1,Tmpl2,Tmpl3) templateClassImp(name)
424
425
426//---- Macro to set the class version of non instrumented classes --------------
427
428#define RootClassVersion(name,VersionNumber) \
429namespace ROOT { /** \cond HIDDEN_SYMBOLS */ \
430 TGenericClassInfo *GenerateInitInstance(const name*); /** \endcond */ \
431 /** \cond HIDDEN_SYMBOLS */ \
432 static Short_t _R__UNIQUE_(R__dummyVersionNumber) = \
433 GenerateInitInstance((name*)0x0)->SetVersion(VersionNumber); \
434 /** \endcond */ \
435 R__UseDummy(_R__UNIQUE_(R__dummyVersionNumber)); \
436}
437
438#define RootStreamer(name,STREAMER) \
439namespace ROOT { \
440 /** \cond HIDDEN_SYMBOLS */ \
441 TGenericClassInfo *GenerateInitInstance(const name*); /** \endcond */ \
442 /** \cond HIDDEN_SYMBOLS */ \
443 static Short_t _R__UNIQUE_(R__dummyStreamer) = \
444 GenerateInitInstance((name*)0x0)->SetStreamer(STREAMER); \
445 /** \endcond */ \
446 R__UseDummy(_R__UNIQUE_(R__dummyStreamer)); \
447}
448
449//---- Macro to load a library into the interpreter --------------
450// Call as R__LOAD_LIBRARY(libEvent)
451// This macro intentionally does not take string as argument, to
452// prevent compilation errors with complex diagnostics due to
453// TString BAD_DO_NOT_TRY = "lib";
454// R__LOAD_LIBRARY(BAD_DO_NOT_TRY + "BAD_DO_NOT_TRY.so") // ERROR!
455#ifdef __CLING__
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))
465#else
466// No way to inform linker though preprocessor :-(
467// We could even inform the user:
468/*
469# define R__LOAD_LIBRARY(LIBRARY) \
470 _R_PragmaStr(message "Compiler cannot handle linking against " #LIBRARY \
471 ". Use -L and -l instead.")
472*/
473# define R__LOAD_LIBRARY(LIBRARY)
474# define R__ADD_INCLUDE_PATH(PATH)
475# define R__ADD_LIBRARY_PATH(PATH)
476#endif
477
478// Convenience macros to disable cling pointer check.
479#ifdef __CLING__
480# define R__CLING_PTRCHECK(ONOFF) __attribute__((annotate("__cling__ptrcheck(" #ONOFF ")")))
481#else
482# define R__CLING_PTRCHECK(ONOFF)
483#endif
484
485#endif
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)
Definition RtypesCore.h:78
int Int_t
Signed integer 4 bytes (int)
Definition RtypesCore.h:60
short Version_t
Class version identifier (short)
Definition RtypesCore.h:80
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
Definition RtypesCore.h:69
short Short_t
Signed Short integer 2 bytes (short)
Definition RtypesCore.h:54
long long Long64_t
Portable signed long integer 8 bytes.
Definition RtypesCore.h:84
TClass *(* DictFuncPtr_t)()
Definition Rtypes.h:85
void(* VoidFuncPtr_t)()
Definition Rtypes.h:84
TBuffer & operator<<(TBuffer &buf, const Tmpl *obj)
Definition TBuffer.h:397
void(* MemberStreamerFunc_t)(TBuffer &, void *, Int_t)
Definition Rtypes.h:79
void(* ShowMembersFunc_t)(const void *obj, TMemberInspector &R__insp, Bool_t isTransient)
Definition Rtypes.h:99
EColor
Definition Rtypes.h:65
@ kP8Cyan
Definition Rtypes.h:70
@ kTeal
Definition Rtypes.h:67
@ kP8Red
Definition Rtypes.h:70
@ kGray
Definition Rtypes.h:65
@ kAsh
Definition Rtypes.h:68
@ kP6Red
Definition Rtypes.h:69
@ kP8Pink
Definition Rtypes.h:70
@ kP10Violet
Definition Rtypes.h:71
@ kP10Orange
Definition Rtypes.h:71
@ kBrown
Definition Rtypes.h:68
@ kP6Grape
Definition Rtypes.h:69
@ kPink
Definition Rtypes.h:67
@ kP8Azure
Definition Rtypes.h:70
@ kRed
Definition Rtypes.h:66
@ kGrape
Definition Rtypes.h:68
@ kP6Gray
Definition Rtypes.h:69
@ kOrange
Definition Rtypes.h:67
@ kP8Gray
Definition Rtypes.h:70
@ kP10Red
Definition Rtypes.h:71
@ kBlack
Definition Rtypes.h:65
@ kP10Brown
Definition Rtypes.h:71
@ kP10Cyan
Definition Rtypes.h:71
@ kGreen
Definition Rtypes.h:66
@ kMagenta
Definition Rtypes.h:66
@ kP10Ash
Definition Rtypes.h:71
@ kWhite
Definition Rtypes.h:65
@ kP10Green
Definition Rtypes.h:71
@ kP6Yellow
Definition Rtypes.h:69
@ kCyan
Definition Rtypes.h:66
@ kBlue
Definition Rtypes.h:66
@ kP10Gray
Definition Rtypes.h:71
@ kAzure
Definition Rtypes.h:67
@ kYellow
Definition Rtypes.h:66
@ kP8Orange
Definition Rtypes.h:70
@ kP8Green
Definition Rtypes.h:70
@ kP8Blue
Definition Rtypes.h:70
@ kViolet
Definition Rtypes.h:67
@ kP6Violet
Definition Rtypes.h:69
@ kP10Yellow
Definition Rtypes.h:71
@ kSpring
Definition Rtypes.h:67
@ kP10Blue
Definition Rtypes.h:71
@ kP6Blue
Definition Rtypes.h:69
TBuffer & operator>>(TBuffer &buf, Tmpl *&obj)
Definition TBuffer.h:381
std::atomic< TClass * > atomic_TClass_ptr
Definition Rtypes.h:201
void(* ClassStreamerFunc_t)(TBuffer &, void *)
Definition Rtypes.h:77
void(* ClassConvStreamerFunc_t)(TBuffer &, void *, const TClass *)
Definition Rtypes.h:78
ESysConstants
Definition Rtypes.h:58
@ kItimerResolution
interval-timer resolution in ms (used for TThread, TTimer, Emit, Connect, etc.)
Definition Rtypes.h:62
@ kMAXSIGNALS
Definition Rtypes.h:59
@ kMAXPATHLEN
Definition Rtypes.h:60
@ kBUFFERSIZE
Definition Rtypes.h:61
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
char name[80]
Definition TGX11.cxx:142
static void * NewArray(Long_t nElements, void *p)
Definition Rtypes.h:224
::ROOT::TGenericClassInfo * GenerateInitInstanceLocal()
Definition Rtypes.h:229
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
Definition Rtypes.h:179
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
Definition Rtypes.h:183
void Register(const char *cname, Version_t id, const std::type_info &info, DictFuncPtr_t dict, Int_t pragmabits) const override
Definition Rtypes.h:173
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.
Definition TBrowser.h:37
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:84
Collection abstract base class.
Definition TCollection.h:65
Describe directory structure in memory.
Definition TDirectory.h:45
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.
Definition TNamed.h:29
Mother of all ROOT objects.
Definition TObject.h:42
Basic string class.
Definition TString.h:137
Defines a common interface to inspect/change the contents of an object that represents a collection.
TLine * line
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:29
const TInitBehavior * DefineBehavior(void *, void *)
Bool_t HasConsistentHashMember(TClass &clRef)
Return true is the Hash/RecursiveRemove setup is consistent, i.e.
Definition TClass.cxx:7591
std::string GetDemangledTypeName(const std::type_info &t)
void(* DirAutoAdd_t)(void *, TDirectory *)
Definition Rtypes.h:119
ROOT::TClassAlt * AddClassAlternate(const char *normName, const char *alternate)
Global function called by GenerateInitInstance.
void(* ResetAfterMergeFunc_t)(void *, TFileMergeInfo *)
Definition Rtypes.h:121
void(* DesFunc_t)(void *)
Definition Rtypes.h:118
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).
Definition TClass.cxx:6037
void(* DelFunc_t)(void *)
Definition Rtypes.h:116
void(* BrowseFunc_t)(const void *, TBrowser *)
Definition Rtypes.h:122
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)
Definition Rtypes.h:115
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:615
void ResetClassVersion(TClass *, const char *, Short_t)
Global function to update the version number.
Short_t SetClassVersion(RootClass *)
void(* DelArrFunc_t)(void *)
Definition Rtypes.h:117
void *(* NewFunc_t)(void *)
Definition Rtypes.h:114
Long64_t(* MergeFunc_t)(void *, TCollection *, TFileMergeInfo *)
Definition Rtypes.h:120
void RemoveClassAlternate(ROOT::TClassAlt *)