109#define RTLD_DEFAULT ((void *)::GetModuleHandle(NULL))
110#define dlsym(library, function_name) ::GetProcAddress((HMODULE)library, function_name)
127using std::multimap, std::make_pair, std::string;
138 class TMmallocDescTemp {
142 TMmallocDescTemp(
void *
value =
nullptr) :
163 TNameMapNode(
const char *
typedf,
const char *
orig) :
216 printf(
"TDeclNameRegistry::AddQualifiedName Adding key %s for class/namespace %s\n", s.c_str(),
name);
218 fClassNamesSet.insert(s);
228 found = fClassNamesSet.find(
name) != fClassNamesSet.end();
237 if (fVerbLevel > 1) {
238 printf(
"TDeclNameRegistry Destructor. List of %lu names:\n",
239 (
long unsigned int)fClassNamesSet.size());
240 for (
auto const & key: fClassNamesSet) {
241 printf(
" - %s\n", key.c_str());
279 fOldValue(fCurrentValue)
286 fCurrentValue = fOldValue;
312 Warning(
where,
"Failed to reregister an object of class '%s' version %d at address %p",
what->GetName(),
version, location);
325 RepoCont_t::iterator tmp =
cur++;
326 if ((tmp->first == location) && (tmp->second ==
what->GetClassVersion())) {
347 RepoCont_t::iterator tmp =
cur++;
364#define R__USE_STD_MAP
366#if defined R__USE_STD_MAP
370 typedef std::map<std::string,TClass*>
IdMap_t;
395 if (iter != fMap.end()) cl = iter->second;
407#ifdef R__COMPLETE_MEM_TERMINATION
416 void Add(
const char *key,
TClass *&obj) {
421 const TPair *
a = (
const TPair *)fMap.FindObject(key);
425 void Remove(
const char *key) {
450 std::pair<const key_type, mapped_type> pair = make_pair(key, obj);
455 return fMap.count(key);
460 return fMap.equal_range(key);
471#ifdef R__COMPLETE_MEM_TERMINATION
482#ifdef R__COMPLETE_MEM_TERMINATION
560 gROOT->GetListOfClasses()->Add(cl);
578 if (!cl || !
id)
return;
591 if (
oldcl->GetTypeInfo()) {
596 if (
oldcl->fClassInfo) {
665 if (
member->GetDataType()) {
684 if ( pos !=
kNPOS ) {
719 for (i = 0;i <
kline; i++)
line[i] =
' ';
725 char *pointer = (
char*)add;
726 char **
ppointer = (
char**)(pointer);
792 std::string *str = (std::string*)pointer;
829 fRealDataObject = obj;
859 if (cl != fRealDataClass) {
860 if (!fRealDataClass->InheritsFrom(cl)) {
866 if (!fRealDataClass->GetDataMember(
rname)) {
881 if (!fRealDataClass->GetBaseDataMember(
rname)) {
898 fRealDataClass->GetListOfRealData()->Add(
rd);
909 fRealDataClass->GetListOfRealData()->Add(
rd);
929 if (
dmclass->GetCollectionProxy()) {
945 && (!
valcl->IsLoaded()) ) {
956 if (GetObjectValidity() == kValidObjectGiven)
964 fRealDataClass->GetListOfRealData()->Add(
rd);
982 fBrowser =
b; fCount = 0;
997 if (fCount && !fBrowser)
return;
1017 mname.ReplaceAll(
"*",
"");
1030 if (
mname ==
"G__virtualinfo")
return;
1032 int size =
sizeof(
void*);
1052 for(
int i=0; i<
nmax; i++) {
1061 if (!fBrowser)
return;
1065 if (
clm->IsTObject()) {
1074 if (!
clm->IsTObject() ||
1087 if (
proxy==
nullptr) {
1104 char fmt[] = {
"#%09d"};
1105 fmt[3] =
'0'+(
int)log10(
double(
sz))+1;
1110 if (
proxy->HasPointers()) {
1178 fPersistentRef(nullptr),
1179 fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
1180 fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
1181 fAllPubMethod(nullptr), fClassMenuList(nullptr),
1182 fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
1183 fInstanceCount(0), fOnHeap(0),
1184 fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
1185 fTypeInfo(nullptr), fShowMembers(nullptr),
1186 fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
1187 fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
1188 fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
1189 fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
1190 fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
1192 fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
1193 fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
1198 ::Fatal(
"TClass::TClass",
"ROOT system not initialized");
1208 ::Fatal(
"TClass::TClass",
"gInterpreter not initialized");
1212 ::Warning(
"TClass::TClass",
"no dictionary for class %s is available",
name);
1226 fPersistentRef(nullptr),
1227 fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
1228 fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
1229 fAllPubMethod(nullptr), fClassMenuList(nullptr),
1230 fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
1231 fInstanceCount(0), fOnHeap(0),
1232 fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
1233 fTypeInfo(nullptr), fShowMembers(nullptr),
1234 fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
1235 fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
1236 fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
1237 fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
1238 fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
1240 fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
1241 fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
1254 fPersistentRef(nullptr),
1255 fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
1256 fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
1257 fAllPubMethod(nullptr), fClassMenuList(nullptr),
1258 fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
1259 fInstanceCount(0), fOnHeap(0),
1260 fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
1261 fTypeInfo(nullptr), fShowMembers(nullptr),
1262 fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
1263 fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
1264 fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
1265 fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
1266 fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
1268 fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
1269 fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
1281 "A TClass entry cannot be initialized in a state different from kForwardDeclared or kEmulated.");
1300 fPersistentRef(nullptr),
1301 fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
1302 fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
1303 fAllPubMethod(nullptr), fClassMenuList(nullptr),
1304 fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
1305 fInstanceCount(0), fOnHeap(0),
1306 fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
1307 fTypeInfo(nullptr), fShowMembers(nullptr),
1308 fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
1309 fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
1310 fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
1311 fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
1312 fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
1314 fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
1315 fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
1320 ::Fatal(
"TClass::TClass",
"ROOT system not initialized");
1326 ::Fatal(
"TClass::TClass",
"gInterpreter not initialized");
1351 fPersistentRef(nullptr),
1352 fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
1353 fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
1354 fAllPubMethod(nullptr), fClassMenuList(nullptr),
1355 fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
1356 fInstanceCount(0), fOnHeap(0),
1357 fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
1358 fTypeInfo(nullptr), fShowMembers(nullptr),
1359 fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
1360 fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
1361 fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
1362 fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
1363 fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
1365 fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
1366 fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
1382 fPersistentRef(nullptr),
1383 fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
1384 fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
1385 fAllPubMethod(nullptr),
1386 fClassMenuList(nullptr),
1387 fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
1388 fInstanceCount(0), fOnHeap(0),
1389 fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
1390 fTypeInfo(nullptr), fShowMembers(nullptr),
1391 fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
1392 fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
1393 fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
1394 fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
1395 fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
1396 fState(kHasTClassInit),
1397 fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
1398 fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
1413 if (
oldcl->CanIgnoreTObjectStreamer()) {
1420 info->Clear(
"build");
1421 info->SetClass(
this);
1424 info->SetClassVersion(1);
1432 oldcl->fStreamerInfo->Clear();
1434 oldcl->ReplaceWith(
this);
1450 ::Fatal(
"TClass::TClass",
"ROOT system not initialized");
1452 ::Error(
"TClass::Init",
"The name parameter is invalid (null or empty)");
1503 if (
oldcl->CanIgnoreTObjectStreamer()) {
1511 info->Clear(
"build");
1512 info->SetClass(
this);
1515 oldcl->fStreamerInfo->Clear();
1520 oldcl->fSchemaRules =
nullptr;
1526 oldcl->fFuncTemplate =
nullptr;
1529 (*fMethod).fClass =
this;
1530 oldcl->fMethod =
nullptr;
1541 ::Fatal(
"TClass::Init",
"gInterpreter not initialized");
1588 proto->FillTClass(
this);
1614 ::Error(
"TClass::Init",
"no interpreter information for class %s is available even though it has a TClass "
1615 "initialization routine.",
1662 oldcl->ReplaceWith(
this);
1677 while ( TNameMapNode*
htmp =
static_cast<TNameMapNode*
> (next()) ) {
1717 Warning(
"Init",
"Collection proxy for %s was not properly initialized!",
GetName());
1738 "The rule for class: \"%s\": version, \"%s\" and data members: \"%s\" has been skipped because %s.",
1760 while ( TNameMapNode*
htmp =
static_cast<TNameMapNode*
> (next()) ) {
1787 (*fUsingData).Delete();
1832 std::map<std::string, TObjArray*>::iterator it;
1833 std::map<std::string, TObjArray*>::iterator end = (*fConversionStreamerInfo).end();
1834 for( it = (*fConversionStreamerInfo).begin(); it != end; ++it ) {
1862 if (
rule.Length() > 0) {
1914 static const char *
suffix =
"class.rules";
1925 ::Error(
"TClass::ReadRules()",
"Cannot find rules file %s",
sname.Data());
1939 ::Error(
"TClass::ReadRules",
"no file name specified");
2001 ::Warning(
"TClass::AddRule",
"The rule for class: \"%s\": version, \"%s\" and data members: \"%s\" has been skipped because it conflicts with one of the other rules (%s).",
2077 obj->ShowMembers(
insp);
2098 }
else if (
actual !=
this) {
2099 return actual->Browse(obj,
b);
2175 Error(
"BuildRealData",
"Inspection for %s not supported!",
GetName());
2195 Error(
"BuildRealData",
"Cannot find any ShowMembers function for %s!",
GetName());
2230 Error(
"BuildEmulatedRealData",
"Missing StreamerInfo for %s",
GetName());
2251 if (
gDebug > 0)
printf(
" Class: %s, adding TRealData=%s, offset=%ld\n",cl->
GetName(),
rd->GetName(),
rd->GetThisOffset());
2260 if (
gDebug > 0)
printf(
" Class: %s, adding TRealData=%s, offset=%ld\n",cl->
GetName(),
rd->GetName(),
rd->GetThisOffset());
2390 }
else if (!
clbase->CanSplitBaseAllow()) {
2413 }
else if (!
c->CanSplitBaseAllow()) {
2515 Error(
"Clone",
"The name of the class must be changed when cloning a TClass object.");
2604 gROOT->ProcessLine(
"new TCanvas(\"R__class\",\"class\",20,20,1000,750);");
2652 if (
sizeof(
this) == 4)
2658 if (
sizeof(
this) == 4)
2666 Info(
"Dump",
"No ShowMembers function, dumping disabled");
2682 if (
text[i] ==
'\"' ||
text[i] ==
'[' ||
text[i] ==
'~' ||
2685 text[i] ==
'?' ||
text[i] ==
'>') {
2751 return sinfo->GetActualClass(
object);
2773 else return nullptr;
2783 if (cl ==
this)
return this;
2795 if (cl ==
c)
return c;
2796 c1 =
c->GetBaseClass(cl);
2814 if (cl ==
this)
return 0;
2816 if (!
fBase.load()) {
2823 if (!
sinfo)
return -1;
2850 Error(
"GetBaseClassOffsetRecurse",
"Unexpected element type for base class: %s\n",
element->IsA()->GetName());
2862 if (
fBase.load() ==
nullptr)
2879 return inh->GetDelta();
2881 off =
c->GetBaseClassOffsetRecurse(cl);
2882 if (off == -2)
return -2;
2884 return off +
inh->GetDelta();
2901 if (
this ==
toBase)
return 0;
2939 if (dm)
return this;
2959 struct TClassLocalStorage {
2960 TClassLocalStorage() : fCollectionProxy(nullptr), fStreamer(nullptr) {};
2965 static TClassLocalStorage *GetStorage(
const TClass *cl)
2981 return (TClassLocalStorage*)
local;
3009 TClassLocalStorage *
local = TClassLocalStorage::GetStorage(
this);
3012 return local->fCollectionProxy;
3023 TClassLocalStorage *
local = TClassLocalStorage::GetStorage(
this);
3025 if (
local->fStreamer==
nullptr) {
3027 const std::type_info &
orig = (
typeid(*fStreamer) );
3028 if (!
local->fStreamer) {
3029 Warning(
"GetStreamer",
"For %s, the TClassStreamer (%s) passed's call to Generate failed!",
GetName(),
orig.name());
3031 const std::type_info © = (
typeid(*
local->fStreamer) );
3033 Warning(
"GetStreamer",
"For %s, the TClassStreamer passed does not properly implement the Generate method (%s vs %s)\n",
GetName(),
orig.name(),copy.name());
3037 return local->fStreamer;
3081 if (!
name || !
name[0])
return nullptr;
3083 if (
strstr(
name,
"(anonymous)"))
return nullptr;
3084 if (
strstr(
name,
"(unnamed)"))
return nullptr;
3088 if (!
gROOT->GetListOfClasses())
return nullptr;
3169 if (
type->GetType() > 0)
3286 static constexpr size_t slen = std::char_traits<char>::length(
"pair");
3288 "unordered_multimap",
"set",
"unordered_set",
"multiset",
"unordered_multiset" };
3296 auto p =
collcl->GetCollectionProxy();
3298 cl =
p->GetValueClass();
3312 if (
posLess != std::string::npos) {
3319 printf(
"TClass::GetClass: Header Parsing - The representation of %s was not found in the type system. A lookup in the interpreter is about to be tried: this can cause parsing. This can be avoided selecting %s in the linkdef/selection file.\n",
normalizedName.c_str(),
normalizedName.c_str());
3339 funcPtr(
nullptr, 0,
nullptr, &res);
3374 if (!
ncl->IsZombie()) {
3388 if (!
gROOT->GetListOfClasses())
3396 if (cl && cl->
IsLoaded())
return cl;
3422 if (!load)
return nullptr;
3432 TIter next(
gROOT->GetListOfClassGenerators());
3486 if (!
gROOT->GetListOfClasses())
return nullptr;
3507 if (!load)
return nullptr;
3520 if (!
ncl->IsZombie()) {
3538 if (!
gROOT->GetListOfClasses())
return 0;
3543 if (iter.first == iter.second)
return false;
3544 std::vector<TClass*>::iterator
vectIt = classes.begin();
3612 if (
rd)
return rd->GetThisOffset();
3664 std::string::size_type pos =
objName.find_first_of(
"[");
3665 if (pos != std::string::npos) {
3684 if (
firstDot == std::string::npos) {
3714 if (
bracket != std::string::npos) {
3766 if (!
fBase.load()) {
3787 Fatal(
"GetListOfBases",
"gInterpreter not initialized");
3790 if (!
fBase.load()) {
3816 auto temp =
fEnums.load();
3888 if (!(*data).IsLoaded())
3891 }
else if (load) (*data).Load();
3905 }
else if (!load &&
fData)
3946 if (
gDebug>0)
Info(
"GetListOfMethods",
"Header Parsing - Asking for all the methods of class %s: this can involve parsing.",
GetName());
3979 if (
gDebug>0)
Info(
"GetListOfAllPublicMethods",
"Header Parsing - Asking for all the methods of class %s: this can involve parsing.",
GetName());
4023 if (
m &&
m->GetNargs() ==
method->GetNargs())
4048 return cl->IsLoaded();
4107 for (
int i = 0; i < 2; i++) {
4120 if (
result.FindObject(
this) ||
visited.FindObject(
this))
return;
4142 if (cl && !cl->HasDictionary()) {
4147 const auto &elements =
splitType.fElements;
4219 if (
result.FindObject(
this))
return;
4302 Warning(
"ResetClassInfo(Long_t tagnum)",
"Call to deprecated interface (does nothing)");
4351 (*fUsingData).Unload();
4355 (*fMethod).Unload();
4389 if (options==
nullptr || options[0]==0)
return;
4391 if (
strstr(options,
"streamerinfo")!=
nullptr) {
4395 std::map<std::string, TObjArray*>::iterator it;
4396 std::map<std::string, TObjArray*>::iterator end = (*fConversionStreamerInfo).end();
4397 for( it = (*fConversionStreamerInfo).begin(); it != end; ++it ) {
4398 it->second->ls(options);
4439 sig = sig+
","+
methodArg->GetFullTypeName();
4546 Fatal(
"GetMethod",
"gInterpreter not initialized");
4552 if (!
decl)
return nullptr;
4559 "\nDid not find matching TMethod <%s> with \"%s\" %sfor %s",
4592 Fatal(
"GetMethodWithPrototype",
"gInterpreter not initialized");
4598 if (!
decl)
return nullptr;
4601 Error(
"GetMethodWithPrototype",
4602 "\nDid not find matching TMethod <%s> with \"%s\" %sfor %s",
4637 Fatal(
"GetClassMethod",
"gInterpreter not initialized");
4643 if (!
decl)
return nullptr;
4663 Fatal(
"GetClassMethodWithPrototype",
"gInterpreter not initialized");
4670 if (!
decl)
return nullptr;
4688 return lm->GetSize();
4707 return lm->GetSize();
4769 Error(
"GetStreamerInfo",
"class: %s, attempting to access a wrong version: %d",
GetName(),
version);
4800 if (!
sinfo->IsCompiled()) {
4813 if (
sinfo->IsCompiled())
4874 sinfo->SetClass(
nullptr);
4876 sinfo->BuildCheck();
4880 Error(
"GetStreamerInfoAbstractEmulated",
"could not create TVirtualStreamerInfo");
4937 sinfo->SetClass(
nullptr);
4939 sinfo->BuildCheck();
4943 Error(
"GetStreamerInfoAbstractEmulated",
"could not create TVirtualStreamerInfo");
4980 if (
sinfo->IsCompiled()) {
4990 Error(
"IgnoreTObjectStreamer",
"Must be called before the creation of StreamerInfo");
5016 if (cl ==
this)
return kTRUE;
5045 if (cl ==
this)
return obj;
5121 if (obj.GetPtr() && obj.GetAllocator()) {
5125 return obj.GetPtr();
5147 Error(
"New",
"cannot create object of class %s",
GetName());
5164 Error(
"New",
"cannot create object of class %s",
GetName());
5176 Error(
"New",
"cannot create object of class %s",
GetName());
5215 Error(
"New",
"Failed to construct class '%s' using streamer info",
GetName());
5220 Fatal(
"New",
"This cannot happen!");
5234 if (obj.GetPtr() && obj.GetAllocator()) {
5238 return obj.GetPtr();
5305 Error(
"New with placement",
"Cannot construct class '%s' version %d at address %p, no streamer info available!",
GetName(),
fClassVersion,
arena);
5321 Error(
"New with placement",
"This cannot happen!");
5336 if (obj.GetPtr() && obj.GetAllocator()) {
5340 return obj.GetPtr();
5424 Error(
"NewArray",
"This cannot happen!");
5438 if (obj.GetPtr() && obj.GetAllocator()) {
5442 return obj.GetPtr();
5509 Error(
"NewArray with placement",
"Cannot construct class '%s' version %d at address %p, no streamer info available!",
GetName(),
fClassVersion,
arena);
5531 Error(
"NewArray with placement",
"This cannot happen!");
5543 if (obj ==
nullptr)
return;
5609 Error(
"Destructor",
"No streamer info available for class '%s' version %d at address %p, cannot destruct emulated object!",
GetName(),
fClassVersion,
p);
5615 Error(
"Destructor",
"Doing Dump() ...");
5628 Error(
"Destructor",
"No streamer info available for class '%s' version %d, cannot destruct object at addr: %p",
GetName(),
objVer,
p);
5635 Error(
"Destructor2",
"Doing Dump() ...");
5646 Error(
"Destructor",
"This cannot happen! (class %s)",
GetName());
5656 if (obj.
GetPtr() ==
nullptr)
5672 if (
ary ==
nullptr)
return;
5679 Error(
"DeleteArray",
"Destructor only is not supported!");
5734 Error(
"DeleteArray",
"No streamer info available for class '%s' version %d at address %p, cannot destruct object!",
GetName(),
fClassVersion,
ary);
5740 Error(
"DeleteArray",
"Doing Dump() ...");
5753 Error(
"DeleteArray",
"No streamer info available for class '%s' version %d at address %p, cannot destruct object!",
GetName(),
objVer,
ary);
5760 Error(
"DeleteArray",
"Doing Dump() ...");
5772 Error(
"DeleteArray",
"This cannot happen! (class '%s')",
GetName());
5782 if (obj.
GetPtr() ==
nullptr)
return;
5865 b.SetBufferOffset(pos);
5874 ::Error(
"TClass::Load",
"dictionary of class %s not found", s);
5926 if (
ncl)
ncl->PostLoadCheck();
5946 TIter next(
gROOT->GetListOfClassGenerators());
5987 ::Error(
"TClass::LoadClassInfo",
"no interpreter information for class %s is available"
5988 " even though it has a TClass initialization routine.",
6014 const char *
dfil,
const char *
ifil,
6028 const char *
dfil,
const char *
ifil,
6128 if (warn &&
info->GetOldVersion()<=2) {
6140 The class %s transitioned from not having a specified class version\n\
6141 to having a specified class version (the current class version is %d).\n\
6142 However too many different non-versioned layouts of the class have\n\
6143 already been loaded so far. To work around this problem you can\n\
6144 load fewer 'old' file in the same ROOT session or load the C++ library\n\
6145 describing the class %s before opening the files or increase the version\n\
6146 number of the class for example ClassDef(%s,%d).\n\
6147 Do not try to write objects with the current class definition,\n\
6148 the files might not be readable.\n",
6152 The StreamerInfo version %d for the class %s which was read\n\
6153 from a file previously opened has the same version as the active class\n\
6154 but a different checksum. You should update the version to ClassDef(%s,%d).\n\
6155 Do not try to write objects with the current class definition,\n\
6156 the files will not be readable.\n"
6179 if (
pcl && !
pcl->IsLoaded() && !
pcl->IsSyntheticPair() )
6186 if (
acl ==
this)
continue;
6187 if (
acl->fCollectionProxy &&
acl->fCollectionProxy->GetValueClass() ==
pcl) {
6188 acl->fCollectionProxy->Reset();
6192 TIter next(
pcl->GetStreamerInfos());
6194 if (
info->IsBuilt()) {
6195 info->Clear(
"build");
6283 if (
kl->fConvStreamerFunc) {
6285 }
else if (
kl->fStreamerFunc) {
6468 Fatal(
"SetUnloaded",
"The TClass for %s is being unloaded when in state %d\n",
6492 (*fMethod).Unload();
6498 (*fUsingData).Unload();
6597 //info is empty. Let's build the default Streamer descriptor
6599 char *temp = new char[10000];
6603 //add list of base classes
6604 TIter nextb(GetListOfBases());
6606 while ((base = (TBaseClass*) nextb())) {
6607 snprintf(local,100,"%s;",base->GetName());
6608 strlcat(temp,local,10000);
6611 //add list of data members and types
6612 TIter nextd(GetListOfDataMembers());
6613 while ((dm = (TDataMember *) nextd())) {
6614 if (dm->IsEnum()) continue;
6615 if (!dm->IsPersistent()) continue;
6616 Long_t property = dm->Property();
6617 if (property & kIsStatic) continue;
6618 TClass *acl = TClass::GetClass(dm->GetTypeName(),update);
6621 if (acl->GetClassVersion() == 0) continue;
6624 // dm->GetArrayIndex() returns an empty string if it does not
6626 const char * index = dm->GetArrayIndex();
6627 if (strlen(index)==0)
6628 snprintf(local,100,"%s %s;",dm->GetFullTypeName(),dm->GetName());
6630 snprintf(local,100,"%s %s[%s];",dm->GetFullTypeName(),dm->GetName(),index);
6631 strlcat(temp,local,10000);
6633 //fStreamerInfo = temp;
6722 for (
int i=0; i<
il; i++)
id =
id*3+
name[i];
6740 for (
int i=0; i<
il; i++)
id =
id*3+
name[i];
6742 if (
tbc->GetClassPointer() ==
nullptr) {
6743 Error(
"GetCheckSum",
"Calculating the checksum for (%s) requires the base class (%s) meta information to be available!",
6748 id =
id*3 +
tbc->GetClassPointer()->GetCheckSum();
6758 if (!
tdm->IsPersistent())
continue;
6770 for (i=0; i<
il; i++)
id =
id*3+
name[i];
6773 type =
tdm->GetTrueTypeName();
6782 type.ReplaceAll(
"ULong64_t",
"unsigned long long");
6783 type.ReplaceAll(
"Long64_t",
"long long");
6784 type.ReplaceAll(
"<signed char",
"<char");
6785 type.ReplaceAll(
",signed char",
",char");
6786 if (
type==
"signed char")
type =
"char";
6790 type =
tdm->GetFullTypeName();
6798 for (i=0; i<
il; i++)
id =
id*3+
type[i];
6800 int dim =
tdm->GetArrayDim();
6802 for (
int ii=0;
ii<dim;
ii++)
id =
id*3+
tdm->GetMaxIndex(
ii);
6811 const char *right =
strstr(left,
"]");
6814 while (left != right) {
6864 rd->AdoptStreamer(
p);
6870 Error(
"AdoptMemberStreamer",
"Cannot adope member streamer for %s::%s",
GetName(),
name);
6909 return b.ReadClassBuffer(
this,pointer,
version,start,count);
6918 return b.ReadClassBuffer(
this,pointer);
6930 b.WriteClassBuffer(
this,pointer);
6953 if (!
pThis->fIsOffsetStreamerSet) {
6954 pThis->CalculateStreamerOffset();
6982 if (
b.IsReading()) {
6985 b.WriteClassBuffer(
pThis,
object);
6995 pThis->fStreamerFunc(
b,
object);
7016 if (
b.IsReading()) {
7021 b.WriteClassBuffer(
pThis,
object);
7031 if (
pThis->fProperty==(-1)) {
7040 pThis->Fatal(
"StreamerDefault",
"fStreamerImpl not properly initialized (%d)",
pThis->fStreamerType);
7230 if (!
info)
continue;
7271 std::map<std::string, TObjArray*>::iterator it;
7274 it = (*fConversionStreamerInfo).find( cl->
GetName() );
7276 if( it != (*fConversionStreamerInfo).end() ) {
7312 info->SetClassVersion(-1);
7314 if( !
info->BuildFor(
this ) ) {
7319 if (!
info->IsCompiled()) {
7335 (*fConversionStreamerInfo)[cl->
GetName()] =
arr;
7337 if (
arr->At(
info->GetClassVersion())) {
7338 Error(
"GetConversionStreamerInfo",
"Conversion StreamerInfo from %s to %s version %d has already been created",
7340 delete arr->At(
info->GetClassVersion());
7342 arr->AddAtAndExpand(
info,
info->GetClassVersion() );
7379 std::map<std::string, TObjArray*>::iterator it;
7383 it = (*fConversionStreamerInfo).find( cl->
GetName() );
7385 if( it != (*fConversionStreamerInfo).end() ) {
7418 info->SetClassVersion(-1);
7420 if( !
info->BuildFor(
this ) ) {
7425 if (!
info->IsCompiled()) {
7441 (*fConversionStreamerInfo)[cl->
GetName()] =
arr;
7443 arr->AddAtAndExpand(
info,
info->GetClassVersion() );
7455 std::vector<::ROOT::Internal::TSchemaHelper> &&
rules)
7462 for (
const auto &it :
rules) {
7467 "TGenericClassInfo",
7468 "The rule for class: \"%s\": version, \"%s\" and data members: \"%s\" has been skipped because %s.",
7469 cl->GetName(), it.fVersion.c_str(), it.fTarget.c_str(),
errmsg.Data());
7494 Error(
"RegisterStreamerInfo",
7495 "Register StreamerInfo for %s on non-empty slot (%d).",
7540 "TEnvRec",
"TDataType",
"TObjArray",
"TList",
"THashList",
7541 "TClass",
"TCling",
"TInterpreter",
"TMethod",
"ROOT::Internal::TCheckHashRecursiveRemoveConsistency",
7542 "TCheckHashRecursiveRemoveConsistency",
"TGWindow",
7543 "TDirectory",
"TDirectoryFile",
"TObject",
"TH1",
7544 "TQClass",
"TGlobal" };
7563 return clRef.HasConsistentHashMember();
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
TClass *(* DictFuncPtr_t)()
void(* MemberStreamerFunc_t)(TBuffer &, void *, Int_t)
TClass *(* IsAGlobalFunc_t)(const TClass *, const void *obj)
void(* ClassStreamerFunc_t)(TBuffer &, void *)
void(* ClassConvStreamerFunc_t)(TBuffer &, void *, const TClass *)
R__EXTERN TClassTable * gClassTable
TVirtualMutex * gInterpreterMutex
TClass::ENewType & TClass__GetCallingNew()
static bool IsFromRootCling()
ROOT::TMapDeclIdToTClass DeclIdMap_t
ROOT::TMapTypeToTClass IdMap_t
void(* tcling_callfunc_Wrapper_t)(void *, int, void **, void *)
const Bool_t kIterBackward
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t cursor
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 ColorStruct_t color const char filename
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 ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
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 ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h prop
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 result
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 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
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
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 ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
Option_t Option_t TPoint TPoint const char mode
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 ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
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 ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t property
Option_t Option_t TPoint TPoint const char text
R__EXTERN TVirtualMutex * gInterpreterMutex
R__EXTERN TInterpreter * gCling
Int_t Remove(Int_t query, Bool_t all=kFALSE)
R__EXTERN TVirtualMutex * gROOTMutex
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
R__EXTERN TSystem * gSystem
R__EXTERN void **(* gThreadTsd)(void *, Int_t)
#define R__LOCKGUARD2(mutex)
#define R__LOCKGUARD(mutex)
#define R__WRITE_LOCKGUARD(mutex)
#define R__READ_LOCKGUARD(mutex)
void SetClass(TClass *cls)
Set the TClass associated with this rule set.
static bool Check(TClass &classRef)
A spin mutex-as-code-guard class.
const_iterator begin() const
const_iterator end() const
DeclIdMap_t::key_type key_type
DeclIdMap_t::size_type size_type
multimap< TDictionary::DeclId_t, TClass * > DeclIdMap_t
size_type CountElementsWithKey(const key_type &key)
std::pair< const_iterator, const_iterator > equal_range
equal_range Find(const key_type &key) const
void Remove(const key_type &key)
DeclIdMap_t::const_iterator const_iterator
DeclIdMap_t::mapped_type mapped_type
void Add(const key_type &key, mapped_type obj)
mapped_type Find(const key_type &key) const
IdMap_t::size_type size_type
IdMap_t::mapped_type mapped_type
IdMap_t::const_iterator const_iterator
std::map< std::string, TClass * > IdMap_t
IdMap_t::key_type key_type
void Remove(const key_type &key)
void Add(const key_type &key, mapped_type &obj)
~TAutoInspector() override
Bool_t IsTreatingNonAccessibleTypes() override
TAutoInspector(TBrowser *b)
void Inspect(TClass *cl, const char *parent, const char *name, const void *addr, Bool_t isTransient) override
This method is called from ShowMembers() via AutoBrowse().
Each class (see TClass) has a linked list of its base class(es).
ROOT::ESTLType IsSTLContainer()
Return which type (if any) of STL container the data member is.
TClass * GetClassPointer(Bool_t load=kTRUE)
Get pointer to the base class TClass.
Using a TBrowser one can browse all ROOT objects.
Buffer base class used for serializing objects.
void Inspect(TClass *cl, const char *parent, const char *name, const void *addr, Bool_t isTransient) override
This method is called from ShowMembers() via BuildRealdata().
TBuildRealData(void *obj, TClass *cl)
Objects following this interface can be passed onto the TROOT object to implement a user customized w...
TClassRef is used to implement a permanent reference to a TClass object.
virtual TClassStreamer * Generate() const
static DictFuncPtr_t GetDict(const char *cname)
Given the class name returns the Dictionary() function of a class (uses hash of name).
static TProtoClass * GetProtoNorm(const char *cname)
Given the class normalized name returns the TClassProto object for the class.
static DictFuncPtr_t GetDictNorm(const char *cname)
Given the normalized class name returns the Dictionary() function of a class (uses hash of name).
~InsertTClassInRegistryRAII()
InsertTClassInRegistryRAII(TClass::EState &state, const char *name, TDeclNameRegistry &emuRegistry)
Bool_t HasDeclName(const char *name) const
void AddQualifiedName(const char *name)
Extract this part of the name.
TDeclNameRegistry(Int_t verbLevel=0)
TDeclNameRegistry class constructor.
std::atomic_flag fSpinLock
TClass instances represent classes, structs and namespaces in the ROOT type system.
UInt_t GetCheckSum(ECheckSum code=kCurrentCheckSum) const
Call GetCheckSum with validity check.
Bool_t IsSyntheticPair() const
RepoCont_t fObjectVersionRepository
ShowMembersFunc_t fShowMembers
TDataMember * GetDataMember(const char *datamember) const
Return pointer to datamember object with name "datamember".
TList * GetListOfUsingDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of using declarations of a class.
void ForceReload(TClass *oldcl)
we found at least one equivalent.
ROOT::DelArrFunc_t fDeleteArray
Bool_t CanSplit() const
Return true if the data member of this TClass can be saved separately.
TClassStreamer * fStreamer
void SetDirectoryAutoAdd(ROOT::DirAutoAdd_t dirAutoAddFunc)
Install a new wrapper around the directory auto add function.
void * NewArray(Long_t nElements, ENewType defConstructor=kClassNew) const
Return a pointer to a newly allocated array of objects of this class.
static TDeclNameRegistry fNoInfoOrEmuOrFwdDeclNameRegistry
TListOfFunctionTemplates * fFuncTemplate
ClassStreamerFunc_t fStreamerFunc
void AdoptReferenceProxy(TVirtualRefProxy *proxy)
Adopt the Reference proxy pointer to indicate that this class represents a reference.
TMethod * GetClassMethod(Longptr_t faddr)
Look for a method in this class that has the interface function address faddr.
TVirtualStreamerInfo * DetermineCurrentStreamerInfo()
Determine and set pointer to current TVirtualStreamerInfo.
void Browse(TBrowser *b) override
This method is called by a browser to get the class information.
ROOT::ESTLType GetCollectionType() const
Return the 'type' of the STL the TClass is representing.
void Draw(Option_t *option="") override
Draw detailed class inheritance structure.
void AdoptMemberStreamer(const char *name, TMemberStreamer *strm)
Adopt the TMemberStreamer pointer to by p and use it to Stream non basic member name.
void ResetInstanceCount()
ClassStreamerFunc_t GetStreamerFunc() const
Get a wrapper/accessor function around this class custom streamer (member function).
void RemoveStreamerInfo(Int_t slot)
Remove and delete the StreamerInfo in the given slot.
void SetCanSplit(Int_t splitmode)
Set the splitability of this class:
TList * CreateListOfDataMembers(std::atomic< TListOfDataMembers * > &data, TDictionary::EMemberSelection selection, bool load)
Create the list containing the TDataMembers (of actual data members or members pulled in through usin...
TVirtualStreamerInfo * GetStreamerInfoAbstractEmulated(Int_t version=0) const
For the case where the requestor class is emulated and this class is abstract, returns a pointer to t...
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
void SetMerge(ROOT::MergeFunc_t mergeFunc)
Install a new wrapper around 'Merge'.
ConvSIMap_t fConversionStreamerInfo
ROOT::DirAutoAdd_t fDirAutoAdd
Bool_t HasDataMemberInfo() const
TVirtualRefProxy * fRefProxy
cached streamer info used in the last read.
TList * GetMenuList() const
Return the list of menu items associated with the class.
ROOT::MergeFunc_t fMerge
saved info to call a IsA member function
TMethod * GetMethod(const char *method, const char *params, Bool_t objectIsConst=kFALSE)
Find the best method (if there is one) matching the parameters.
static TClass * Load(TBuffer &b)
Load class description from I/O buffer and return class object.
EState fState
cached of the streaming method to use
ROOT::DesFunc_t GetDestructor() const
Return the wrapper around the destructor.
TMethod * GetMethodWithPrototype(const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Find the method with a given prototype.
void CopyCollectionProxy(const TVirtualCollectionProxy &)
Replaces the collection proxy for this class.
Int_t fStreamerType
saved info to call Streamer
static void RegisterReadRules(ROOT::TSchemaRule::RuleType_t, const char *classname, std::vector<::ROOT::Internal::TSchemaHelper > &&rules)
Register a set of read rules for a target class.
void ls(Option_t *opt="") const override
The ls function lists the contents of a class on stdout.
std::atomic< TList * > fBase
std::atomic< Char_t > fCanSplit
Bool_t HasDictionary() const
Check whether a class has a dictionary or not.
const TList * GetListOfAllPublicMethods(Bool_t load=kTRUE)
Returns a list of all public methods of this class and its base classes.
TList * GetListOfAllPublicDataMembers(Bool_t load=kTRUE)
Returns a list of all public data members of this class and its base classes.
static void AddClassToDeclIdMap(TDictionary::DeclId_t id, TClass *cl)
static: Add a TClass* to the map of classes.
virtual ~TClass()
TClass dtor. Deletes all list that might have been created.
Bool_t fIsSyntheticPair
Indicates whether this class can be split or not. Values are -1, 0, 1, 2.
void Destructor(void *obj, Bool_t dtorOnly=kFALSE)
Explicitly call destructor for object.
std::atomic< TVirtualStreamerInfo * > fCurrentInfo
Current 'state' of the class (Emulated,Interpreted,Loaded)
TList * GetListOfFunctionTemplates(Bool_t load=kTRUE)
Return TListOfFunctionTemplates for a class.
void * DynamicCast(const TClass *base, void *obj, Bool_t up=kTRUE)
Cast obj of this class type up to baseclass cl if up is true.
const char * fImplFileName
void RegisterStreamerInfo(TVirtualStreamerInfo *info)
Register the StreamerInfo in the given slot, change the State of the TClass as appropriate.
std::atomic< UInt_t > fCheckSum
void UnregisterAddressInRepository(const char *where, void *location, const TClass *what) const
std::atomic< TListOfFunctions * > fMethod
static void RemoveClassDeclId(TDictionary::DeclId_t id)
void SetNewArray(ROOT::NewArrFunc_t newArrayFunc)
Install a new wrapper around 'new []'.
Bool_t CallShowMembers(const void *obj, TMemberInspector &insp, Bool_t isTransient=kFALSE) const
Call ShowMembers() on the obj of this class type, passing insp and parent.
const char * fDeclFileName
void SetCollectionProxy(const ROOT::Detail::TCollectionProxyInfo &)
Create the collection proxy object (and the streamer object) from using the information in the TColle...
static Bool_t HasDictionarySelection(const char *clname)
Check whether a class has a dictionary or ROOT can load one.
void AdoptSchemaRules(ROOT::Detail::TSchemaRuleSet *rules)
Adopt a new set of Data Model Evolution rules.
static void StreamerInstrumented(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of instrumented class with a library.
TVirtualStreamerInfo * SetStreamerInfo(Int_t version, const char *info="")
Info is a string describing the names and types of attributes written by the class Streamer function.
static std::atomic< Int_t > fgClassCount
TVirtualStreamerInfo * GetCurrentStreamerInfo()
ROOT::DirAutoAdd_t GetDirectoryAutoAdd() const
Return the wrapper around the directory auto add function.
void AddImplFile(const char *filename, int line)
TCollection * GetListOfMethodOverloads(const char *name) const
Return the collection of functions named "name".
std::atomic< TListOfEnums * > fEnums
static Bool_t HasNoInfoOrEmuOrFwdDeclaredDecl(const char *)
TVirtualMutex * fOVRMutex
TList * GetListOfEnums(Bool_t load=kTRUE)
Return a list containing the TEnums of a class.
Bool_t IsStartingWithTObject() const
Returns true if this class inherits from TObject and if the start of the TObject parts is at the very...
TList * GetListOfMethods(Bool_t load=kTRUE)
Return list containing the TMethods of a class.
TClass()
Internal, default constructor.
Int_t GetNmethods()
Return the number of methods of this class Note that in case the list of methods is not yet created,...
std::atomic< Bool_t > fIsOffsetStreamerSet
Indicates whether the ClassInfo is supposed to be available.
void IgnoreTObjectStreamer(Bool_t ignore=kTRUE)
When the class kIgnoreTObjectStreamer bit is set, the automatically generated Streamer will not call ...
TClassStreamer * GetStreamer() const
Return the Streamer Class allowing streaming (if any).
static IdMap_t * GetIdMap()
void SetDelete(ROOT::DelFunc_t deleteFunc)
Install a new wrapper around 'delete'.
static Int_t AutoBrowse(TObject *obj, TBrowser *browser)
Browse external object inherited from TObject.
ROOT::NewFunc_t GetNew() const
Return the wrapper around new ThisClass().
TClass * GetBaseClass(const char *classname)
Return pointer to the base class "classname".
Longptr_t GetDataMemberOffset(const char *membername) const
return offset for member name.
Int_t GetNdata()
Return the number of data members of this class Note that in case the list of data members is not yet...
void SetDestructor(ROOT::DesFunc_t destructorFunc)
Install a new wrapper around the destructor.
virtual void PostLoadCheck()
Do the initialization that can only be done after the CINT dictionary has been fully populated and ca...
void LoadClassInfo() const
Try to load the ClassInfo if available.
void SetResetAfterMerge(ROOT::ResetAfterMergeFunc_t resetFunc)
Install a new wrapper around 'ResetAfterMerge'.
TVirtualStreamerInfo * GetStreamerInfoImpl(Int_t version, Bool_t silent) const
Bool_t MatchLegacyCheckSum(UInt_t checksum) const
Return true if the checksum passed as argument is one of the checksum value produced by the older che...
TViewPubFunctions * fAllPubMethod
Bool_t HasInterpreterInfo() const
static void AddClass(TClass *cl)
static: Add a class to the list and map of classes.
void GetMissingDictionariesForBaseClasses(TCollection &result, TCollection &visited, bool recurse)
Verify the base classes always.
ROOT::Detail::TSchemaRuleSet * fSchemaRules
Pointer to reference proxy if this class represents a reference.
std::atomic< Long_t > fProperty
static void StreamerDefault(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Default streaming in cases where either we have no way to know what to do or if Property() has not ye...
void SetUnloaded()
Call this method to indicate that the shared library containing this class's code has been removed (u...
ROOT::DelArrFunc_t GetDeleteArray() const
Return the wrapper around delete [] ThisObject.
Bool_t HasInterpreterInfoInMemory() const
ClassConvStreamerFunc_t fConvStreamerFunc
void BuildRealData(void *pointer=nullptr, Bool_t isTransient=kFALSE)
Build a full list of persistent data members.
void SetRuntimeProperties()
Internal routine to set calculate the class properties that can only be known at run-time,...
void BuildEmulatedRealData(const char *name, Longptr_t offset, TClass *cl, Bool_t isTransient=kFALSE)
Build the list of real data for an emulated class.
std::unordered_map< std::string, std::vector< ROOT::Internal::TSchemaHelper > > SchemaHelperMap_t
static TClass * LoadClass(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
const std::type_info * GetTypeInfo() const
void SetStreamerImpl(Int_t streamerType)
Internal routine to set fStreamerImpl based on the value of fStreamerType.
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
void Move(void *arenaFrom, void *arenaTo) const
Register the fact that an object was moved from the memory location 'arenaFrom' to the memory locatio...
static DeclIdMap_t * GetDeclIdMap()
Short_t GetDeclFileLine() const
void SetStreamerFunc(ClassStreamerFunc_t strm)
Set a wrapper/accessor function around this class custom streamer.
const char * GetImplFileName() const
TList * GetListOfRealData() const
Int_t Size() const
Return size of object of this class.
void SetCurrentStreamerInfo(TVirtualStreamerInfo *info)
Set pointer to current TVirtualStreamerInfo.
static DictFuncPtr_t GetDict(const char *cname)
Return a pointer to the dictionary loading function generated by rootcint.
Longptr_t fOffsetStreamer
Properties that can only be evaluated at run-time.
ROOT::NewArrFunc_t GetNewArray() const
Return the wrapper around new ThisClass[].
static void StreamerTObjectEmulated(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of TObjects when we do not have the library defining the class.
ROOT::ResetAfterMergeFunc_t GetResetAfterMerge() const
Return the wrapper around Merge.
TMethod * GetClassMethodWithPrototype(const char *name, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Find the method with a given prototype.
void SetGlobalIsA(IsAGlobalFunc_t)
This function installs a global IsA function for this class.
void GetMissingDictionariesForMembers(TCollection &result, TCollection &visited, bool recurse)
Verify the Data Members.
TObjArray * fStreamerInfo
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
TObject * Clone(const char *newname="") const override
Create a Clone of this TClass object using a different name but using the same 'dictionary'.
TVirtualCollectionProxy * fCollectionProxy
static ENewType IsCallingNew()
Static method returning the defConstructor flag passed to TClass::New().
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
void Store(TBuffer &b) const
Store class description on I/O buffer.
void InterpretedShowMembers(void *obj, TMemberInspector &insp, Bool_t isTransient)
Do a ShowMembers() traversal of all members and base classes' members using the reflection informatio...
static THashTable * fgClassTypedefHash
void Init(const char *name, Version_t cversion, const std::type_info *info, TVirtualIsAProxy *isa, const char *dfil, const char *ifil, Int_t dl, Int_t il, ClassInfo_t *classInfo, Bool_t silent)
Initialize a TClass object.
std::atomic< TListOfDataMembers * > fData
static void StreamerStreamerInfo(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of where we should directly use the StreamerInfo.
const TObjArray * GetStreamerInfos() const
void SetClassVersion(Version_t version)
Private function.
char * EscapeChars(const char *text) const
Introduce an escape character (@) in front of a special chars.
const std::type_info * fTypeInfo
std::atomic< TVirtualStreamerInfo * > fLastReadInfo
cached current streamer info.
static void StreamerTObject(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of TObjects.
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
static Bool_t AddRule(const char *rule)
Add a schema evolution customization rule.
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
static void RemoveClass(TClass *cl)
static: Remove a class from the list and map of classes
Bool_t HasLocalHashMember() const
Returns true if this class has an definition and/or overload of the member function Hash.
void DeleteArray(void *ary, Bool_t dtorOnly=kFALSE)
Explicitly call operator delete[] for an array.
ClassConvStreamerFunc_t GetConvStreamerFunc() const
Get a wrapper/accessor function around this class custom conversion streamer (member function).
Bool_t IsForeign() const
Return kTRUE is the class is Foreign (the class does not have a Streamer method).
ClassInfo_t * GetClassInfo() const
TViewPubDataMembers * fAllPubData
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
void AdoptStreamer(TClassStreamer *strm)
Adopt a TClassStreamer object.
TClass * GetBaseDataMember(const char *datamember)
Return pointer to (base) class that contains datamember.
void Dump() const override
Dump contents of object on stdout.
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
Int_t GetBaseClassOffset(const TClass *toBase, void *address=nullptr, bool isDerivedObject=true)
ObjectPtr NewObjectArray(Long_t nElements, ENewType defConstructor=kClassNew) const
Return a pointer to a newly allocated array of objects of this class.
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
void ResetCaches()
To clean out all caches.
std::atomic< Bool_t > fVersionUsed
saved remember if fOffsetStreamer has been set.
Long_t ClassProperty() const
Return the C++ property of this class, eg.
const char * GetSharedLibs()
Get the list of shared libraries containing the code for class cls.
void CalculateStreamerOffset() const
Calculate the offset between an object of this class to its base class TObject.
void GetMissingDictionariesForPairElements(TCollection &result, TCollection &visited, bool recurse)
void ReplaceWith(TClass *newcl) const
void RegisterAddressInRepository(const char *where, void *location, const TClass *what) const
Long_t Property() const override
Returns the properties of the TClass as a bit field stored as a Long_t value.
Bool_t HasDefaultConstructor(Bool_t testio=kFALSE) const
Return true if we have access to a constructor usable for I/O.
void GetMenuItems(TList *listitems)
Returns list of methods accessible by context menu.
void SetNew(ROOT::NewFunc_t newFunc)
Install a new wrapper around 'new'.
std::atomic< TMethodCall * > fIsAMethod
static Int_t ReadRules()
Read the class.rules files from the default location:.
Bool_t CanSplitBaseAllow()
Pointer to the function implementing streaming for this class.
void MoveAddressInRepository(const char *where, void *oldadd, void *newadd, const TClass *what) const
std::atomic< StreamerImpl_t > fStreamerImpl
void SetContextMenuTitle(const char *title)
Change (i.e. set) the title of the TNamed.
void SetMemberStreamer(const char *name, MemberStreamerFunc_t strm)
Install a new member streamer (p will be copied).
std::atomic< TClass ** > fPersistentRef
IsAGlobalFunc_t fGlobalIsA
pointer to the class's IsA proxy.
TVirtualStreamerInfo * GetConversionStreamerInfo(const char *onfile_classname, Int_t version) const
Return a Conversion StreamerInfo from the class 'classname' for version number 'version' to this clas...
Short_t GetImplFileLine() const
TMethod * GetMethodAllAny(const char *method)
Return pointer to method without looking at parameters.
std::atomic< UChar_t > fRuntimeProperties
TVirtualStreamerInfo * FindConversionStreamerInfo(const char *onfile_classname, UInt_t checksum) const
Return a Conversion StreamerInfo from the class 'classname' for the layout represented by 'checksum' ...
Int_t GetBaseClassOffsetRecurse(const TClass *toBase)
Return data member offset to the base class "cl".
ROOT::DelFunc_t GetDelete() const
Return the wrapper around delete ThisObject.
static TClass * LoadClassDefault(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
void SetClassSize(Int_t sizof)
TMethod * FindClassOrBaseMethodWithId(DeclId_t faddr)
Find a method with decl id in this class or its bases.
static void StreamerExternal(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
There is special streamer for the class.
Long_t fClassProperty
Property See TClass::Property() for details.
TString fContextMenuTitle
static void StreamerTObjectInitialized(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of TObjects when fIsOffsetStreamerSet is known to have been set.
static void ConvStreamerInstrumented(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of instrumented class with a library.
std::atomic< Bool_t > fCanLoadClassInfo
Whether info was loaded from a root pcm.
void SetConvStreamerFunc(ClassConvStreamerFunc_t strm)
Set a wrapper/accessor function around this class custom conversion streamer.
TVirtualStreamerInfo * FindStreamerInfo(TObjArray *arr, UInt_t checksum) const
Find the TVirtualStreamerInfo in the StreamerInfos corresponding to checksum.
void GetMissingDictionaries(THashTable &result, bool recurse=false)
Get the classes that have a missing dictionary starting from this one.
void MakeCustomMenuList()
Makes a customizable version of the popup menu list, i.e.
TVirtualStreamerInfo * FindStreamerInfoAbstractEmulated(UInt_t checksum) const
For the case where the requestor class is emulated and this class is abstract, returns a pointer to t...
static SchemaHelperMap_t & GetReadRulesRegistry(ROOT::TSchemaRule::RuleType_t type)
Return the registry for the unassigned read rules.
TMethod * GetMethodAny(const char *method)
Return pointer to method without looking at parameters.
TVirtualIsAProxy * GetIsAProxy() const
Return the proxy implementing the IsA functionality.
ROOT::MergeFunc_t GetMerge() const
Return the wrapper around Merge.
ROOT::ResetAfterMergeFunc_t fResetAfterMerge
Bool_t IsFolder() const override
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
std::atomic< Bool_t > fHasRootPcmInfo
C++ Property of the class (is abstract, has virtual table, etc.)
TClass * GetActualClass(const void *object) const
Return a pointer to the real class of the object.
ROOT::DesFunc_t fDestructor
const char * GetDeclFileName() const
Return name of the file containing the declaration of this class.
ObjectPtr NewObject(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
TRealData * GetRealData(const char *name) const
Return pointer to TRealData element with name "name".
void SetDeleteArray(ROOT::DelArrFunc_t deleteArrayFunc)
Install a new wrapper around 'delete []'.
Bool_t fHasCustomStreamerMember
The class has a Streamer method and it is implemented by the user or an older (not StreamerInfo based...
TFunctionTemplate * GetFunctionTemplate(const char *name)
void ResetClassInfo()
Make sure that the current ClassInfo is up to date.
ROOT::NewArrFunc_t fNewArray
Int_t ReadBuffer(TBuffer &b, void *pointer, Int_t version, UInt_t start, UInt_t count)
Function called by the Streamer functions to deserialize information from buffer b into object at p.
void GetMissingDictionariesWithRecursionCheck(TCollection &result, TCollection &visited, bool recurse)
From the second level of recursion onwards it is different state check.
bool IsClassStructOrUnion() const
std::atomic< TListOfDataMembers * > fUsingData
TListOfFunctions * GetMethodList()
Return (create an empty one if needed) the list of functions.
void ResetMenuList()
Resets the menu list to it's standard value.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Int_t WriteBuffer(TBuffer &b, void *pointer, const char *info="")
Function called by the Streamer functions to serialize object at p to buffer b.
static TClass * LoadClassCustom(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
Collection abstract base class.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
All ROOT classes may have RTTI (run time type identification) support added.
const char * GetTrueTypeName() const
Get the desugared type name of this data member, including const and volatile qualifiers.
Bool_t IsPersistent() const
Long_t Property() const override
Get property description word. For meaning of bits see EProperty.
Bool_t IsBasic() const
Return true if data member is a basic type, e.g. char, int, long...
Bool_t IsaPointer() const
Return true if data member is a pointer.
TDataType * GetDataType() const
const char * GetTypeName() const
Get the decayed type name of this data member, removing const and volatile qualifiers,...
Basic data type descriptor (datatype information is obtained from CINT).
static void GetDateTime(UInt_t datetime, Int_t &date, Int_t &time)
Static function that returns the date and time.
This class defines an abstract interface that must be implemented by all classes that contain diction...
EMemberSelection
Kinds of members to include in lists.
void Inspect(TClass *cl, const char *parent, const char *name, const void *addr, Bool_t isTransient) override
Print value of member mname.
TDumpMembers(bool noAddr)
static TEnum * GetEnum(const std::type_info &ti, ESearchAction sa=kALoadAndInterpLookup)
This class stores a (key,value) pair using an external hash.
Dictionary for function template This class describes one single function template.
Global functions class (global functions are obtained from CINT).
THashTable implements a hash table to store TObject's.
virtual Bool_t ClassInfo_HasMethod(ClassInfo_t *, const char *) const
virtual const char * DataMemberInfo_Name(DataMemberInfo_t *) const
virtual const char * DataMemberInfo_TypeName(DataMemberInfo_t *) const
virtual int DataMemberInfo_TypeSize(DataMemberInfo_t *) const
virtual void * ClassInfo_New(ClassInfo_t *) const
virtual Bool_t ClassInfo_IsValid(ClassInfo_t *) const
virtual Int_t AutoParse(const char *cls)=0
virtual void ClassInfo_Delete(ClassInfo_t *) const
virtual void ClassInfo_DeleteArray(ClassInfo_t *, void *, bool) const
virtual Long_t ClassInfo_Property(ClassInfo_t *) const
virtual int ClassInfo_Size(ClassInfo_t *) const
virtual const char * ClassInfo_FullName(ClassInfo_t *) const
virtual int SetClassAutoLoading(int) const
virtual const char * ClassInfo_Title(ClassInfo_t *) const
virtual Long_t DataMemberInfo_TypeProperty(DataMemberInfo_t *) const
virtual int DataMemberInfo_Next(DataMemberInfo_t *) const
virtual DataMemberInfo_t * DataMemberInfo_Factory(ClassInfo_t *, TDictionary::EMemberSelection) const
virtual Long_t DataMemberInfo_Property(DataMemberInfo_t *) const
virtual int DataMemberInfo_ArrayDim(DataMemberInfo_t *) const
virtual void DataMemberInfo_Delete(DataMemberInfo_t *) const
virtual int DataMemberInfo_MaxIndex(DataMemberInfo_t *, Int_t) const
TDictionary::DeclId_t DeclId_t
virtual Bool_t ClassInfo_HasDefaultConstructor(ClassInfo_t *, Bool_t=kFALSE) const
virtual Long_t ClassInfo_ClassProperty(ClassInfo_t *) const
virtual Longptr_t ClassInfo_GetBaseOffset(ClassInfo_t *, ClassInfo_t *, void *=nullptr, bool=true) const
virtual void ClassInfo_Destruct(ClassInfo_t *, void *) const
TIsAProxy implementation class.
A collection of TDataMember objects designed for fast access given a DeclId_t and for keep track of T...
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
A collection of TFunction objects designed for fast access given a DeclId_t and for keep track of TFu...
TObject * FindObject(const char *name) const override
Specialize FindObject to do search for the a function just by name or create it if its not already in...
void Load()
Load all the functions known to the interpreter for the scope 'fClass' into this collection.
void Delete(Option_t *option="") override
Delete all TFunction object files.
A collection of TFunction objects designed for fast access given a DeclId_t and for keep track of TFu...
TFunction * Get(DeclId_t id)
Return (after creating it if necessary) the TMethod or TFunction describing the function correspondin...
virtual TList * GetListForObject(const char *name) const
Return the set of overloads for this name, collecting all available ones.
TObject * FindObject(const TObject *obj) const override
Find object using its hash value (returned by its Hash() member).
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
void Add(TObject *obj) override
void AddLast(TObject *obj) override
Add object at the end of the list.
virtual TObjLink * FirstLink() const
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Abstract base class for accessing the data-members of a class.
virtual void Inspect(TClass *cl, const char *parent, const char *name, const void *addr)
Each ROOT method (see TMethod) has a linked list of its arguments.
Each ROOT class (see TClass) has a linked list of methods.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
void ls(Option_t *option="") const override
List TNamed name and title.
Int_t GetEntriesFast() const
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
Int_t GetEntries() const override
Return the number of objects in array (i.e.
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
TObject * At(Int_t idx) const override
TObject * UncheckedAt(Int_t i) const
TObject * RemoveAt(Int_t idx) override
Remove object at index idx.
Int_t GetLast() const override
Return index of last object in array.
void Add(TObject *obj) override
Wrapper around a TObject so it can be stored in a TList.
Collectable string class.
Mother of all ROOT objects.
static void SetObjectStat(Bool_t stat)
Turn on/off tracking of objects in the TObjectTable.
virtual const char * GetName() const
Returns name of object.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
R__ALWAYS_INLINE Bool_t IsZombie() const
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
static Bool_t GetObjectStat()
Get status of object stat flag.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
Class used by TMap to store (key,value) pairs.
Persistent version of a TClass.
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
The TRealData class manages the effective list of all data members for a given class.
const char * GetName() const override
Returns name of object.
TClass * GetClassPointer() const override
Returns a pointer to the TClass of this element.
Describe one element (data member) to be Streamed.
TClass * GetClassPointer() const override
Returns a pointer to the TClass of this element.
static constexpr Ssiz_t kNPOS
const char * Data() const
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
UInt_t Hash(ECaseCompare cmp=kExact) const
Return hash value.
TString & Remove(Ssiz_t pos)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual const char * PrependPathName(const char *dir, TString &name)
Concatenate a directory and a file name.
View implementing the TList interface and giving access all the TDictionary describing public data me...
void Load()
Load all the DataMembers known to the interpreter for the scope 'fClass' and all its bases classes.
void Delete(Option_t *option="") override
Delete is not allowed in this class.
View implementing the TList interface and giving access all the TFunction describing public methods i...
void Load()
Load all the functions known to the interpreter for the scope 'fClass' and all its bases classes.
RAII helper class that ensures that PushProxy() / PopProxy() are called when entering / leaving a C++...
Defines a common interface to inspect/change the contents of an object that represents a collection.
virtual UInt_t Sizeof() const =0
Return the sizeof() of the collection object.
virtual TClass::ObjectPtr NewObjectArray(Int_t nElements) const
Construct an array of nElements container objects and return the base address of the array.
virtual void Destructor(void *p, Bool_t dtorOnly=kFALSE) const
Execute the container destructor.
virtual void DeleteArray(void *p, Bool_t dtorOnly=kFALSE) const
Execute the container array destructor.
virtual TClass * GetValueClass() const =0
If the value type is a user-defined class, return a pointer to the TClass representing the value type...
virtual TClass::ObjectPtr NewObject() const
Construct a new container object and return its address.
virtual TVirtualCollectionProxy * Generate() const =0
Returns a clean object of the actual class that derives from TVirtualCollectionProxy.
virtual Bool_t Reset()
Reset the information gathered from StreamerInfos and value's TClass.
virtual Bool_t HasPointers() const =0
Return true if the content is of type 'pointer to'.
virtual void SetClass(TClass *cl)=0
This class implements a mutex interface.
small helper class to store/restore gPad context in TPad methods
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual void SetClass(TClass *classptr)=0
virtual TVirtualRefProxy * Clone() const =0
Abstract Interface class describing Streamer information for one class.
virtual void DeleteArray(void *p, Bool_t dtorOnly=kFALSE)=0
static const char * GetElementCounterStart(const char *dmTitle)
Given a comment/title declaring an array counter, for example:
virtual Int_t GetSize() const =0
static TVirtualStreamerInfo * Factory()
Static function returning a pointer to a new TVirtualStreamerInfo object.
virtual void Destructor(void *p, Bool_t dtorOnly=kFALSE)=0
R__EXTERN void * gMmallocDesc
Bool_t HasConsistentHashMember(TClass &clRef)
Return true is the Hash/RecursiveRemove setup is consistent, i.e.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
void(* DirAutoAdd_t)(void *, TDirectory *)
R__EXTERN TVirtualRWMutex * gCoreMutex
void(* ResetAfterMergeFunc_t)(void *, TFileMergeInfo *)
void(* DesFunc_t)(void *)
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 *(* 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(* DelArrFunc_t)(void *)
void *(* NewFunc_t)(void *)
Long64_t(* MergeFunc_t)(void *, TCollection *, TFileMergeInfo *)
bool IsStdPairBase(std::string_view name)
std::string ResolveTypedef(const char *tname, bool resolveAll=false)
bool IsStdArray(std::string_view name)
bool IsStdClass(const char *type)
return true if the class belongs to the std namespace
bool IsStdPair(std::string_view name)
bool IsInterpreterDetail(const char *type)
Return true if the type is one the interpreter details which are only forward declared (ClassInfo_t e...
char * DemangleTypeIdName(const std::type_info &ti, int &errorCode)
Demangle in a portable way the type id name.
ROOT::ESTLType IsSTLCont(std::string_view type)
type : type name: vector<list<classA,allocator>,allocator> result: 0 : not stl container code of cont...
std::string ShortType(const char *typeDesc, int mode)
Return the absolute type of typeDesc.
bool IsArtificial(std::string_view name)
void GetNormalizedName(std::string &norm_name, std::string_view name)
Return the normalized name.
bool IsSTLBitset(const char *type)
Return true is the name is std::bitset<number> or bitset<number>
UInt_t Find(std::list< std::pair< const Node< T > *, Float_t > > &nlist, const Node< T > *node, const T &event, UInt_t nfind)
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
TMatrixT< Element > & Add(TMatrixT< Element > &target, Element scalar, const TMatrixT< Element > &source)
Modify addition: target += scalar * source.
TVirtualStreamerInfo * GetAllocator() const
TClass::ENewType & fCurrentValue
TClass__GetCallingNewRAII(TClass::ENewType newvalue)
TClass::ENewType fOldValue
~TClass__GetCallingNewRAII()