35 if (!
name || status != 0)
85 TGenericClassInfo::TGenericClassInfo(
const char *
fullClassname,
93 fImplFileName(nullptr), fImplFileLine(0),
96 fMerge(nullptr),fResetAfterMerge(nullptr),fNew(nullptr),fNewArray(nullptr),fDelete(nullptr),fDeleteArray(nullptr),fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamer(nullptr),
107 const std::type_info &
info,
const Internal::TInitBehavior *
action,
113 fImplFileName(nullptr), fImplFileLine(0),
116 fMerge(nullptr),fResetAfterMerge(nullptr),fNew(nullptr),fNewArray(nullptr),fDelete(nullptr),fDeleteArray(nullptr),fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamer(nullptr),
126 class TForNamespace {};
130 const Internal::TInitBehavior *
action,
135 fImplFileName(nullptr), fImplFileLine(0),
138 fMerge(nullptr),fResetAfterMerge(nullptr),fNew(nullptr),fNewArray(nullptr),fDelete(nullptr),fDeleteArray(nullptr),fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamer(nullptr),
139 fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fCollectionProxy(nullptr), fSizeof(0),
fPragmaBits(
pragmabits),
202 if (!fAction)
return;
203 GetAction().Register(fClassName,
210 TGenericClassInfo::~TGenericClassInfo()
226 GetAction().Unregister(GetClassName(),
fClass);
229 const Internal::TInitBehavior &TGenericClassInfo::GetAction()
const
236 TClass *TGenericClassInfo::GetClass()
247 ::Fatal(
"TClass::TClass",
"ROOT system not initialized");
255 fClass = GetAction().CreateClass(GetClassName(),
264 fClass->fHasCustomStreamerMember =
true;
267 fClass->SetNewArray(fNewArray);
268 fClass->SetDelete(fDelete);
269 fClass->SetDeleteArray(fDeleteArray);
270 fClass->SetDestructor(fDestructor);
271 fClass->SetDirectoryAutoAdd(fDirAutoAdd);
272 fClass->SetStreamerFunc(fStreamerFunc);
273 fClass->SetConvStreamerFunc(fConvStreamerFunc);
275 fClass->SetResetAfterMerge(fResetAfterMerge);
276 fClass->AdoptStreamer(fStreamer); fStreamer =
nullptr;
279 if (!
fClass->IsZombie()) {
280 if (fCollectionProxy)
fClass->CopyCollectionProxy(*fCollectionProxy);
285 fClass->SetClassSize(fSizeof);
300 void TGenericClassInfo::CreateRuleSet( std::vector<Internal::TSchemaHelper>&
vect,
303 if (
vect.empty() ) {
319 std::vector<Internal::TSchemaHelper>::iterator it;
321 rule =
new TSchemaRule();
322 rule->SetTarget( it->fTarget );
324 rule->SetSourceClass( it->fSourceClass );
325 rule->SetSource( it->fSource );
326 rule->SetCode( it->fCode );
327 rule->SetVersion( it->fVersion );
328 rule->SetChecksum( it->fChecksum );
329 rule->SetEmbed( it->fEmbed );
330 rule->SetInclude( it->fInclude );
331 rule->SetAttributes( it->fAttributes );
342 ::Warning(
"TGenericClassInfo",
"The rule for class: \"%s\": version, \"%s\" and data members: \"%s\" has been skipped because %s.",
343 GetClassName(), it->fVersion.c_str(), it->fTarget.c_str(),
errmsg.Data() );
349 const char *TGenericClassInfo::GetClassName()
const
357 Detail::TCollectionProxyInfo *TGenericClassInfo::GetCollectionProxyInfo()
const
364 Detail::TCollectionProxyInfo *TGenericClassInfo::GetCollectionStreamerInfo()
const
371 const std::type_info &TGenericClassInfo::GetInfo()
const
378 const std::vector<Internal::TSchemaHelper>& TGenericClassInfo::GetReadRawRules()
const
386 const std::vector<Internal::TSchemaHelper>& TGenericClassInfo::GetReadRules()
const
392 void TGenericClassInfo::SetFromTemplate()
400 Int_t TGenericClassInfo::SetImplFile(
const char *file,
Int_t line)
404 fImplFileName = file;
405 fImplFileLine =
line;
410 Int_t TGenericClassInfo::SetDeclFile(
const char *file,
Int_t line)
414 fDeclFileName = file;
415 fDeclFileLine =
line;
434 void TGenericClassInfo::AdoptCollectionProxyInfo(TCollectionProxyInfo *
info)
443 void TGenericClassInfo::AdoptCollectionStreamerInfo(TCollectionProxyInfo *
info)
457 delete fStreamer; fStreamer =
nullptr;
471 delete fCollectionProxy; fCollectionProxy =
nullptr;
473 if (
fClass && fCollectionProxy && !
fClass->IsZombie()) {
474 fClass->CopyCollectionProxy(*fCollectionProxy);
479 void TGenericClassInfo::SetReadRawRules(
const std::vector<Internal::TSchemaHelper>&
rules )
486 void TGenericClassInfo::SetReadRules(
const std::vector<Internal::TSchemaHelper>&
rules )
496 delete fStreamer; fStreamer =
nullptr;
521 const char *TGenericClassInfo::GetDeclFileName()
const
525 return fDeclFileName;
528 Int_t TGenericClassInfo::GetDeclFileLine()
const
532 return fDeclFileLine;
535 const char *TGenericClassInfo::GetImplFileName()
540 return fImplFileName;
543 Int_t TGenericClassInfo::GetImplFileLine()
548 return fImplFileLine;
551 Int_t TGenericClassInfo::GetVersion()
const
558 TClass *TGenericClassInfo::IsA(
const void *obj)
612 void TGenericClassInfo::SetDirectoryAutoAdd(
DirAutoAdd_t func)
632 fResetAfterMerge = func;
633 if (
fClass)
fClass->SetResetAfterMerge(fResetAfterMerge);
636 NewFunc_t TGenericClassInfo::GetNew()
const
650 DelFunc_t TGenericClassInfo::GetDelete()
const
664 DesFunc_t TGenericClassInfo::GetDestructor()
const
671 DirAutoAdd_t TGenericClassInfo::GetDirectoryAutoAdd()
const
TClass *(* DictFuncPtr_t)()
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.
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
void Fatal(const char *location, const char *msgfmt,...)
Use this function in case of a fatal error. It will abort the program.
R__EXTERN TVirtualMutex * gInterpreterMutex
R__EXTERN TVirtualMutex * gROOTMutex
#define R__LOCKGUARD(mutex)
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)())
const_iterator begin() const
const_iterator end() const
void(* ReadFuncPtr_t)(char *, TVirtualObject *)
void(* ReadRawFuncPtr_t)(char *, TBuffer &)
@ kHasCustomStreamerMember
TClass instances represent classes, structs and namespaces in the ROOT type system.
The TNamed class is the base class for all named ROOT classes.
TCollection * GetListOfClasses() const
static Bool_t Initialized()
Return kTRUE if the TROOT object has been initialized.
Defines a common interface to inspect/change the contents of an object that represents a collection.
static constexpr Version_t Class_Version()
R__EXTERN TROOT * gROOTLocal
const TInitBehavior * DefineBehavior(void *, void *)
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 *)
void(* ResetAfterMergeFunc_t)(void *, TFileMergeInfo *)
void(* DesFunc_t)(void *)
void(* DelFunc_t)(void *)
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 ResetClassVersion(TClass *, const char *, Short_t)
Global function to update the version number.
void(* DelArrFunc_t)(void *)
void *(* NewFunc_t)(void *)
Long64_t(* MergeFunc_t)(void *, TCollection *, TFileMergeInfo *)
void RemoveClassAlternate(ROOT::TClassAlt *)
void Init(TClassEdit::TInterpreterLookupHelper *helper)
char * DemangleName(const char *mangled_name, int &errorCode)
void GetNormalizedName(std::string &norm_name, std::string_view name)
Return the normalized name.