109#define RTLD_DEFAULT ((void *)::GetModuleHandle(NULL)) 
  110#define dlsym(library, function_name) ::GetProcAddress((HMODULE)library, function_name) 
  136   static constexpr const char kUndeterminedClassInfoName[] = 
"<NOT YET DETERMINED FROM fClassInfo>";
 
  138   class TMmallocDescTemp {
 
  142      TMmallocDescTemp(
void *
value = 
nullptr) :
 
  163      TNameMapNode(
const char *typedf, 
const char *orig)  :
 
  176  const static bool foundSymbol = dlsym(RTLD_DEFAULT, 
"usedToIdentifyRootClingByDlSym");
 
  199   auto strLen = 
name ? strlen(
name) : 0;
 
  200   if (strLen == 0) 
return;
 
  202   const char* endCharPtr = strchr(
name, 
'<');
 
  203   endCharPtr = !endCharPtr ? &
name[strLen] : endCharPtr;
 
  205   const char* beginCharPtr = endCharPtr;
 
  206   while (beginCharPtr!=
name){
 
  207      if (*beginCharPtr==
':'){
 
  213   beginCharPtr = beginCharPtr!=endCharPtr ? beginCharPtr : 
name;
 
  214   std::string s(beginCharPtr, endCharPtr);
 
  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)
 
  281      fCurrentValue = newvalue;
 
  286      fCurrentValue = fOldValue;
 
  306   std::pair<RepoCont_t::iterator, Bool_t> tmp = 
fObjectVersionRepository.insert(RepoCont_t::value_type>(location, version));
 
  308      Warning(where, 
"Reregistering an object of class '%s' version %d at address %p", 
what->GetName(), version, 
p);
 
  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())) {
 
  342   size_t objsize = 
what->Size();
 
  343   long delta = (
char*)newadd - (
char*)oldadd;
 
  347      RepoCont_t::iterator tmp = cur++;
 
  348      if (oldadd <= tmp->
first && tmp->first < ( ((
char*)oldadd) + objsize) ) {
 
  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) {
 
  418         fMap.
Add(realkey, 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);
 
  471#ifdef R__COMPLETE_MEM_TERMINATION 
  473   return &gIdMapObject;
 
  482#ifdef R__COMPLETE_MEM_TERMINATION 
  484   return &gDeclIdMapObject;
 
  499   gROOT->GetListOfClasses()->Add(cl);
 
  513   if (!cl || !
id) 
return;
 
  525   gROOT->GetListOfClasses()->Remove(oldcl);
 
  560   void Inspect(
TClass *cl, 
const char *parent, 
const char *
name, 
const void *addr, 
Bool_t isTransient) 
override;
 
  576   const Int_t kvalue = 30;
 
  578   const Int_t ktitle = 50;
 
  580   const Int_t ktitle = 42;
 
  582   const Int_t kline  = 1024;
 
  585   UInt_t *cdatime = 
nullptr;
 
  590   const char *memberName;
 
  591   const char *memberFullTypeName;
 
  592   const char *memberTitle;
 
  598      if (member->GetDataType()) {
 
  599         memberDataType = (
EDataType)member->GetDataType()->GetType();
 
  601      memberName = member->GetName();
 
  602      memberFullTypeName = member->GetFullTypeName();
 
  603      memberTitle = member->GetTitle();
 
  604      isapointer = member->IsaPointer();
 
  605      isbasic = member->IsBasic();
 
  607      isarray = member->GetArrayDim();
 
  613      const char *
cursor = mname;
 
  617      if ( pos != 
kNPOS ) {
 
  621      if (!element) 
return;
 
  626      memberName = element->
GetName();
 
  631      isbasic = membertype !=
nullptr;
 
  639   if (strcmp(memberName,
"fDatime") == 0 && memberDataType == 
kUInt_t) {
 
  643   if (strcmp(memberName,
"fBits") == 0 && memberDataType == 
kUInt_t) {
 
  648   static TClassRef stdClass(
"std::string");
 
  649   Bool_t isStdString = (dataClass == stdClass);
 
  652   for (i = 0;i < kline; i++) 
line[i] = 
' ';
 
  658   char *pointer = (
char*)add;
 
  659   char **ppointer = (
char**)(pointer);
 
  662      char **p3pointer = (
char**)(*ppointer);
 
  667            snprintf(&
line[kvalue],kline-kvalue,
"->%zx ", (
size_t)p3pointer);
 
  669      } 
else if (membertype) {
 
  671            i = strlen(*ppointer);
 
  672            if (kvalue+i > kline) i=kline-1-kvalue;
 
  674            for (
Int_t j = 0; j < i; j++) {
 
  675               if (!std::isprint((*ppointer)[j])) {
 
  681               strncpy(
line + kvalue, *ppointer, i);
 
  689      } 
else if (!strcmp(memberFullTypeName, 
"char*") ||
 
  690                 !strcmp(memberFullTypeName, 
"const char*")) {
 
  691         i = strlen(*ppointer);
 
  692         if (kvalue+i >= kline) i=kline-1-kvalue;
 
  694         for (
Int_t j = 0; j < i; j++) {
 
  695            if (!std::isprint((*ppointer)[j])) {
 
  701            strncpy(
line + kvalue, *ppointer, std::min( i, kline - kvalue));
 
  708            snprintf(&
line[kvalue],kline-kvalue,
"->%zx ", (
size_t)p3pointer);
 
  711   } 
else if (membertype) {
 
  713         cdatime = (
UInt_t*)pointer;
 
  715         snprintf(&
line[kvalue],kline-kvalue,
"%d/%d",cdate,ctime);
 
  723         std::string *str = (std::string*)pointer;
 
  725      } 
else if (isTString) {
 
  730            snprintf(&
line[kvalue],kline-kvalue,
"->%zx ", (
size_t)pointer);
 
  735   if (isdate == 
kFALSE && strcmp(memberFullTypeName, 
"char*") && strcmp(memberFullTypeName, 
"const char*")) {
 
  736      i = strlen(&
line[0]); 
line[i] = 
' ';
 
  737      assert(250 > ktitle);
 
  738      strlcpy(&
line[ktitle],memberTitle,250-ktitle+1); 
 
  742      strncat(
line, 
" ...", kline-strlen(
line)-1);
 
  760      fRealDataObject = obj;
 
  764   void Inspect(
TClass *cl, 
const char *parent, 
const char *
name, 
const void *addr, 
Bool_t isTransient) 
override;
 
  783      isTransientMember = 
kTRUE;
 
  790   if (cl != fRealDataClass) {
 
  791      if (!fRealDataClass->InheritsFrom(cl)) {
 
  797         if (!fRealDataClass->GetDataMember(rname)) {
 
  812            if (!fRealDataClass->GetBaseDataMember(rname)) {
 
  827      fRealDataClass->GetListOfRealData()->Add(rd);
 
  837      fRealDataClass->GetListOfRealData()->Add(rd);
 
  882                  void* addrForRecursion = 
nullptr;
 
  883                  if (GetObjectValidity() == kValidObjectGiven)
 
  884                     addrForRecursion = 
const_cast<void*
>(add);
 
  891      fRealDataClass->GetListOfRealData()->Add(rd);
 
  909      fBrowser = 
b; fCount = 0;
 
  913   void Inspect(
TClass *cl, 
const char *parent, 
const char *
name, 
const void *addr, 
Bool_t isTransient) 
override;
 
  921                             const void *addr, 
Bool_t )
 
  923   if(tit && strchr(tit,
'.'))    return ;
 
  924   if (fCount && !fBrowser) 
return;
 
  931   int ln = strcspn(
name,
"[ ");
 
  935   if (!classInfo)               
return;
 
  945      if ((found = (iname==mname))) 
break;
 
  957   if (mname == 
"G__virtualinfo")  
return;
 
  959   int  size = 
sizeof(
void*);
 
  979   for(
int i=0; i<nmax; i++) {
 
  981      char *ptr = (
char*)addr + i*
size;
 
  988      if (!fBrowser)      
return;
 
  996         bwname = actualClass->
GetName();
 
 1003          strcmp(bwname.
Data(),actualClass->
GetName())==0) {
 
 1005         int l = strcspn(bwname.
Data(),
"[ ");
 
 1006         if (
l<bwname.
Length() && bwname[
l]==
'[') {
 
 1007            char cbuf[13]; 
snprintf(cbuf,13,
"[%02d]",i);
 
 1010            bwname = (
const char*)ts;
 
 1014      if (proxy==
nullptr) {
 
 1016         fBrowser->Add(obj,clm,bwname);
 
 1021         if (valueCl==
nullptr) {
 
 1023            fBrowser->Add( obj, clm, bwname );
 
 1027            TClass *actualCl = 
nullptr;
 
 1029            int sz = proxy->
Size();
 
 1031            char fmt[] = {
"#%09d"};
 
 1032            fmt[3]  = 
'0'+(
int)log10(
double(sz))+1;
 
 1034            for (
int ii=0;ii<sz;ii++) {
 
 1035               void *
p = proxy->
At(ii);
 
 1047               fBrowser->Add( 
p, actualCl, ts );
 
 1089      TMmallocDescTemp setreset;
 
 1105   fPersistentRef(nullptr),
 
 1106   fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
 
 1107   fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
 
 1108   fAllPubMethod(nullptr), fClassMenuList(nullptr),
 
 1109   fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
 
 1110   fInstanceCount(0), fOnHeap(0),
 
 1111   fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
 
 1112   fTypeInfo(nullptr), fShowMembers(nullptr),
 
 1113   fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
 
 1114   fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
 
 1115   fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
 
 1116   fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
 
 1117   fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
 
 1119   fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
 
 1120   fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
 
 1125      ::Fatal(
"TClass::TClass", 
"ROOT system not initialized");
 
 1128      TMmallocDescTemp setreset;
 
 1135      ::Fatal(
"TClass::TClass", 
"gInterpreter not initialized");
 
 1139      ::Warning(
"TClass::TClass", 
"no dictionary for class %s is available", 
name);
 
 1153   fPersistentRef(nullptr),
 
 1154   fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
 
 1155   fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
 
 1156   fAllPubMethod(nullptr), fClassMenuList(nullptr),
 
 1157   fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
 
 1158   fInstanceCount(0), fOnHeap(0),
 
 1159   fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
 
 1160   fTypeInfo(nullptr), fShowMembers(nullptr),
 
 1161   fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
 
 1162   fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
 
 1163   fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
 
 1164   fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
 
 1165   fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
 
 1167   fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
 
 1168   fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
 
 1171   Init(
name, cversion, 
nullptr, 
nullptr, 
nullptr, 
nullptr, -1, -1, 
nullptr, silent);
 
 1181   fPersistentRef(nullptr),
 
 1182   fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
 
 1183   fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
 
 1184   fAllPubMethod(nullptr), fClassMenuList(nullptr),
 
 1185   fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
 
 1186   fInstanceCount(0), fOnHeap(0),
 
 1187   fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
 
 1188   fTypeInfo(nullptr), fShowMembers(nullptr),
 
 1189   fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
 
 1190   fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
 
 1191   fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
 
 1192   fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
 
 1193   fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
 
 1195   fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
 
 1196   fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
 
 1208              "A TClass entry cannot be initialized in a state different from kForwardDeclared or kEmulated.");
 
 1209   Init(
name, cversion, 
nullptr, 
nullptr, 
nullptr, 
nullptr, -1, -1, 
nullptr, silent);
 
 1227   fPersistentRef(nullptr),
 
 1228   fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
 
 1229   fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
 
 1230   fAllPubMethod(nullptr), fClassMenuList(nullptr),
 
 1231   fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
 
 1232   fInstanceCount(0), fOnHeap(0),
 
 1233   fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
 
 1234   fTypeInfo(nullptr), fShowMembers(nullptr),
 
 1235   fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
 
 1236   fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
 
 1237   fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
 
 1238   fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
 
 1239   fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
 
 1241   fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
 
 1242   fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
 
 1247      ::Fatal(
"TClass::TClass", 
"ROOT system not initialized");
 
 1253      ::Fatal(
"TClass::TClass", 
"gInterpreter not initialized");
 
 1255   if (!classInfo || !
gInterpreter->ClassInfo_IsValid(classInfo)) {
 
 1262      Init(
fName, cversion, 
nullptr, 
nullptr, dfil, ifil, dl, il, classInfo, silent);
 
 1278   fPersistentRef(nullptr),
 
 1279   fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
 
 1280   fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
 
 1281   fAllPubMethod(nullptr), fClassMenuList(nullptr),
 
 1282   fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
 
 1283   fInstanceCount(0), fOnHeap(0),
 
 1284   fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
 
 1285   fTypeInfo(nullptr), fShowMembers(nullptr),
 
 1286   fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
 
 1287   fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
 
 1288   fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
 
 1289   fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
 
 1290   fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
 
 1292   fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
 
 1293   fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
 
 1296   Init(
name,cversion, 
nullptr, 
nullptr, dfil, ifil, dl, il, 
nullptr, silent);
 
 1306               const char *dfil, 
const char *ifil, 
Int_t dl, 
Int_t il,
 
 1309   fPersistentRef(nullptr),
 
 1310   fStreamerInfo(nullptr), fConversionStreamerInfo(nullptr), fRealData(nullptr),
 
 1311   fBase(nullptr), fData(nullptr), fUsingData(nullptr), fEnums(nullptr), fFuncTemplate(nullptr), fMethod(nullptr), fAllPubData(nullptr),
 
 1312   fAllPubMethod(nullptr),
 
 1313   fClassMenuList(nullptr),
 
 1314   fDeclFileName(
""), fImplFileName(
""), fDeclFileLine(0), fImplFileLine(0),
 
 1315   fInstanceCount(0), fOnHeap(0),
 
 1316   fCheckSum(0), fCollectionProxy(nullptr), fClassVersion(0), fClassInfo(nullptr),
 
 1317   fTypeInfo(nullptr), fShowMembers(nullptr),
 
 1318   fStreamer(nullptr), fIsA(nullptr), fGlobalIsA(nullptr), fIsAMethod(nullptr),
 
 1319   fMerge(nullptr), fResetAfterMerge(nullptr), fNew(nullptr), fNewArray(nullptr), fDelete(nullptr), fDeleteArray(nullptr),
 
 1320   fDestructor(nullptr), fDirAutoAdd(nullptr), fStreamerFunc(nullptr), fConvStreamerFunc(nullptr), fSizeof(-1),
 
 1321   fCanSplit(-1), fIsSyntheticPair(
kFALSE), fHasCustomStreamerMember(
kFALSE), fProperty(0), fClassProperty(0), fHasRootPcmInfo(
kFALSE), fCanLoadClassInfo(
kFALSE),
 
 1322   fIsOffsetStreamerSet(
kFALSE), fVersionUsed(
kFALSE), fRuntimeProperties(0), fOffsetStreamer(0), fStreamerType(
TClass::
kDefault),
 
 1323   fState(kHasTClassInit),
 
 1324   fCurrentInfo(nullptr), fLastReadInfo(nullptr), fRefProxy(nullptr),
 
 1325   fSchemaRules(nullptr), fStreamerImpl(&
TClass::StreamerDefault)
 
 1329   Init(
name, cversion, &info, isa, dfil, ifil, dl, il, 
nullptr, silent);
 
 1347      info->
Clear(
"build");
 
 1371                  const char *dfil, 
const char *ifil, 
Int_t dl, 
Int_t il,
 
 1372                  ClassInfo_t *givenInfo,
 
 1376      ::Fatal(
"TClass::TClass", 
"ROOT system not initialized");
 
 1378      ::Error(
"TClass::Init", 
"The name parameter is invalid (null or empty)");
 
 1419   TClass **persistentRef = 
nullptr;
 
 1437         info->
Clear(
"build");
 
 1455         (*fMethod).
fClass = 
this;
 
 1467      ::Fatal(
"TClass::Init", 
"gInterpreter not initialized");
 
 1470      bool invalid = !
gInterpreter->ClassInfo_IsValid(givenInfo);
 
 1471      bool notloaded = !
gInterpreter->ClassInfo_IsLoaded(givenInfo);
 
 1472      auto property = 
gInterpreter->ClassInfo_Property(givenInfo);
 
 1514            proto->FillTClass(
this);
 
 1540            ::Error(
"TClass::Init", 
"no interpreter information for class %s is available even though it has a TClass " 
 1541                                    "initialization routine.",
 
 1559   if (!givenInfo && strchr (
name, 
'<')) {
 
 1571      if (resolvedThis != 
name) {
 
 1595      if (resolvedThis != 
fName) {
 
 1597         if (oldcl && oldcl != 
this) {
 
 1603      while ( TNameMapNode* htmp = 
static_cast<TNameMapNode*
> (next()) ) {
 
 1604         if (resolvedThis != htmp->String()) 
continue;
 
 1606         if (oldcl && oldcl != 
this) {
 
 1624   if (persistentRef) {
 
 1631   if ( isStl || !strncmp(
GetName(),
"stdext::hash_",13) || !strncmp(
GetName(),
"__gnu_cxx::hash_",16) ) {
 
 1642         } 
else if (!silent) {
 
 1643            Warning(
"Init",
"Collection proxy for %s was not properly initialized!",
GetName());
 
 1668      while ( TNameMapNode* htmp = 
static_cast<TNameMapNode*
> (next()) ) {
 
 1669         if (resolvedThis == htmp->String() && htmp->fOrigName == 
GetName()) {
 
 1695      (*fUsingData).Delete();
 
 1740      std::map<std::string, TObjArray*>::iterator it;
 
 1741      std::map<std::string, TObjArray*>::iterator end = (*fConversionStreamerInfo).end();
 
 1742      for( it = (*fConversionStreamerInfo).begin(); it != end; ++it ) {
 
 1752   Int_t ReadRulesContent(FILE *
f)
 
 1764      while ((
c = fgetc(
f)) != EOF) {
 
 1770               if (rule.Length() > 0) {
 
 1822   static const char *suffix = 
"class.rules";
 
 1828   FILE * 
f = fopen(sname,
"r");
 
 1830      res = ReadRulesContent(
f);
 
 1833      ::Error(
"TClass::ReadRules()", 
"Cannot find rules file %s", sname.
Data());
 
 1847      ::Error(
"TClass::ReadRules", 
"no file name specified");
 
 1856   Int_t count = ReadRulesContent(
f);
 
 1909      ::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).",
 
 1971   obj->ShowMembers(insp);
 
 1992   } 
else if (actual != 
this) {
 
 1993      return actual->
Browse(obj, 
b);
 
 2042      isTransient = 
kTRUE;
 
 2047   TMmallocDescTemp setreset;
 
 2058   static TClassRef clRefString(
"std::string");
 
 2059   if (clRefString == 
this) {
 
 2069      Error(
"BuildRealData", 
"Inspection for %s not supported!", 
GetName());
 
 2081      if ( isTransient ) {
 
 2089         Error(
"BuildRealData", 
"Cannot find any ShowMembers function for %s!", 
GetName());
 
 2124      Error(
"BuildEmulatedRealData",
"Missing StreamerInfo for %s",
GetName());
 
 2190      TMmallocDescTemp setreset;
 
 2217         if (strcmp(
GetName(), 
"string") == 0) {
 
 2225         gInterpreter->InspectMembers(insp, obj, 
this, isTransient);
 
 2229         sinfo->CallShowMembers(obj, insp, isTransient);
 
 2244   return gInterpreter->InspectMembers(insp, obj, 
this, isTransient);
 
 2307      } 
else if (!
c->CanSplitBaseAllow()) {
 
 2351      static TClassRef stdStringClass(
"std::string");
 
 2408   if (new_name == 
nullptr || new_name[0]==
'\0' || 
fName == new_name) {
 
 2409      Error(
"Clone",
"The name of the class must be changed when cloning a TClass object.");
 
 2439   copy->
fName = new_name;
 
 2498         gROOT->ProcessLine(
"new TCanvas(\"R__class\",\"class\",20,20,1000,750);");
 
 2546      if (
sizeof(
this) == 4)
 
 2549         Printf(
"==> Dumping object at: 0x%016lx, name=%s, class=%s\n",prObj,tobj->
GetName(),
GetName());
 
 2552      if (
sizeof(
this) == 4)
 
 2553         Printf(
"==> Dumping object at: 0x%08lx, class=%s\n",prObj,
GetName());
 
 2555         Printf(
"==> Dumping object at: 0x%016lx, class=%s\n",prObj,
GetName());
 
 2560      Info(
"Dump", 
"No ShowMembers function, dumping disabled");
 
 2570   static const UInt_t maxsize = 255;
 
 2571   static char name[maxsize+2]; 
 
 2575   for (
UInt_t i = 0; i < nch && icur < maxsize; ++i, ++icur) {
 
 2576      if (
text[i] == 
'\"' || 
text[i] == 
'[' || 
text[i] == 
'~' ||
 
 2579          text[i] == 
'?'  || 
text[i] == 
'>') {
 
 2623         return realTObject->
IsA();
 
 2658   if (strcmp(
GetName(), classname) == 0) 
return this;
 
 2667   else return nullptr;
 
 2677   if (cl == 
this) 
return this;
 
 2689         if (cl == 
c) 
return c;
 
 2708   if (cl == 
this) 
return 0;
 
 2710   if (!
fBase.load()) {
 
 2717         if (!sinfo) 
return -1;
 
 2729                  if (!baseclass) 
return -1;
 
 2731                  if (subOffset == -2) 
return -2;
 
 2732                  if (subOffset != -1) 
return offset+subOffset;
 
 2737                  if (!baseclass) 
return -1;
 
 2739                  if (subOffset == -2) 
return -2;
 
 2740                  if (subOffset != -1) 
return offset+subOffset;
 
 2744                  Error(
"GetBaseClassOffsetRecurse",
"Unexpected element type for base class: %s\n",element->
IsA()->
GetName());
 
 2756   if (
fBase.load() == 
nullptr)
 
 2759      lnk = 
fBase.load()->FirstLink();
 
 2775         off = 
c->GetBaseClassOffsetRecurse(cl);
 
 2776         if (off == -2) 
return -2;
 
 2795   if (
this == toBase) 
return 0;
 
 2811   if(derived && base) {
 
 2833   if (dm) 
return this;
 
 2842         if (cdm) 
return cdm;
 
 2853   struct TClassLocalStorage {
 
 2854      TClassLocalStorage() : fCollectionProxy(nullptr), fStreamer(nullptr) {};
 
 2859      static TClassLocalStorage *GetStorage(
const TClass *cl)
 
 2865            if (*thread_ptr==
nullptr) *thread_ptr = 
new TExMap();
 
 2872               local = (
ULongptr_t) 
new TClassLocalStorage();
 
 2875            return (TClassLocalStorage*)local;
 
 2903      TClassLocalStorage *local = TClassLocalStorage::GetStorage(
this);
 
 2906      return local->fCollectionProxy;
 
 2917      TClassLocalStorage *local = TClassLocalStorage::GetStorage(
this);
 
 2919      if (local->fStreamer==
nullptr) {
 
 2921         const std::type_info &orig = ( 
typeid(*fStreamer) );
 
 2922         if (!local->fStreamer) {
 
 2923            Warning(
"GetStreamer",
"For %s, the TClassStreamer (%s) passed's call to Generate failed!",
GetName(),orig.name());
 
 2925            const std::type_info © = ( 
typeid(*local->fStreamer) );
 
 2926            if (strcmp(orig.name(),copy.name())!=0) {
 
 2927               Warning(
"GetStreamer",
"For %s, the TClassStreamer passed does not properly implement the Generate method (%s vs %s)\n",
GetName(),orig.name(),copy.name());
 
 2931      return local->fStreamer;
 
 2975   if (!
name || !
name[0]) 
return nullptr;
 
 2977   if (strstr(
name, 
"(anonymous)")) 
return nullptr;
 
 2978   if (strstr(
name, 
"(unnamed)")) 
return nullptr;
 
 2979   if (strncmp(
name,
"class ",6)==0) 
name += 6;
 
 2980   if (strncmp(
name,
"struct ",7)==0) 
name += 7;
 
 2982   if (!
gROOT->GetListOfClasses())  
return nullptr;
 
 3037      if (!cl && !load) 
return nullptr;
 
 3039      TClass *loadedcl = (dict)();
 
 3049   std::string normalizedName;
 
 3058      if (normalizedName != 
name) {
 
 3070      normalizedName = cl->
GetName(); 
 
 3071      checkTable = load && (normalizedName != 
name);
 
 3074   if (!load) 
return nullptr;
 
 3100   TClass *loadedcl = 
nullptr;
 
 3122      if (!loadedcl && !ispair && !ispairbase) {
 
 3125            auto underlyingTypeName = theDataType->GetTypeName();
 
 3128            if (underlyingTypeDict){
 
 3129               loadedcl = underlyingTypeDict();
 
 3135   if (loadedcl) 
return loadedcl;
 
 3139   if (loadedcl) 
return loadedcl;
 
 3146      if (hint_pair_offset && hint_pair_size) {
 
 3154         static const size_t slen = strlen(
"pair");
 
 3155         static const char *associativeContainer[] = { 
"map", 
"unordered_map", 
"multimap",
 
 3156            "unordered_multimap", 
"set", 
"unordered_set", 
"multiset", 
"unordered_multiset" };
 
 3157         for(
auto contname : associativeContainer) {
 
 3158            std::string collname = contname;
 
 3159            collname.append( normalizedName.c_str() + slen );
 
 3166                  cl = 
p->GetValueClass();
 
 3179      std::string::size_type posLess = normalizedName.find(
'<');
 
 3180      if (posLess != std::string::npos) {
 
 3187      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());
 
 3189   if (normalizedName.length()) {
 
 3199         auto ci = 
gInterpreter->ClassInfo_Factory(normalizedName.c_str());
 
 3201         auto method = 
gInterpreter->MethodInfo_Factory(funcDecl);
 
 3207            funcPtr(
nullptr, 0, 
nullptr, &res);
 
 3219         std::string alternative;
 
 3220         gInterpreter->GetInterpreterTypeName(normalizedName.c_str(), alternative, 
kTRUE);
 
 3221         if (alternative.empty())
 
 3223         const char *altname = alternative.c_str();
 
 3224         if (strncmp(altname, 
"std::", 5) == 0) {
 
 3229         if (altname != normalizedName && strcmp(altname, 
name) != 0) {
 
 3256   if (!
gROOT->GetListOfClasses())
 
 3264   if (cl && cl->
IsLoaded()) 
return cl;
 
 3290   if (!load) 
return nullptr;
 
 3300   TIter next(
gROOT->GetListOfClassGenerators());
 
 3312   if (!autoload_old) {
 
 3319      cl = 
GetClass(typeinfo, load, hint_pair_offset, hint_pair_size);
 
 3325   if (hint_pair_offset) {
 
 3330         free(demangled_name);
 
 3354   if (!
gROOT->GetListOfClasses())    
return nullptr;
 
 3375   if (!load) 
return nullptr;
 
 3377   TClass *loadedcl = 
nullptr;
 
 3381   if (loadedcl) 
return loadedcl;
 
 3406   if (!
gROOT->GetListOfClasses())    
return 0;
 
 3411   if (iter.first == iter.second) 
return false;
 
 3412   std::vector<TClass*>::iterator vectIt = classes.begin();
 
 3414      vectIt = classes.insert(vectIt, it->second);
 
 3442       || datamember == 
nullptr) 
return nullptr;
 
 3445   const char *start_name = datamember;
 
 3446   while (*start_name == 
'*') ++start_name;
 
 3451   if (
const char *s = strchr(start_name, 
'[')){
 
 3481   if (strchr(
name,
'[')==
nullptr) {
 
 3523   std::string givenName(
name);
 
 3526   std::string::size_type firstBracket = givenName.find_first_of(
"[");
 
 3527   if (firstBracket != std::string::npos) {
 
 3529      std::string nameNoDim(givenName.substr(0, firstBracket));
 
 3533         std::string objName(obj->
GetName());
 
 3534         std::string::size_type pos = objName.find_first_of(
"[");
 
 3536         if (pos != std::string::npos) {
 
 3538            if (objName == nameNoDim) {
 
 3547   std::ostringstream ptrname;
 
 3548   ptrname << 
"*" << givenName;
 
 3555   std::string::size_type firstDot = givenName.find_first_of(
".");
 
 3556   if (firstDot == std::string::npos) {
 
 3567   std::string::size_type lastDot = givenName.find_last_of(
".");
 
 3568   std::ostringstream starname;
 
 3569   starname << givenName.substr(0, lastDot) << 
".*" << givenName.substr(lastDot + 1);
 
 3585   std::string::size_type bracket = starname.str().find_first_of(
"[");
 
 3586   if (bracket != std::string::npos) {
 
 3595   std::string firstDotName(givenName.substr(firstDot + 1));
 
 3638   if (!
fBase.load()) {
 
 3659         Fatal(
"GetListOfBases", 
"gInterpreter not initialized");
 
 3662      if (!
fBase.load()) {
 
 3688   auto temp = 
fEnums.load();
 
 3690      if (requestListLoading) {
 
 3705   if (!requestListLoading) {
 
 3760      if (!(*data).IsLoaded())
 
 3763   } 
else if (load) (*data).Load();
 
 3777   } 
else if (!load && 
fData)
 
 3818      if (
gDebug>0) 
Info(
"GetListOfMethods",
"Header Parsing - Asking for all the methods of class %s: this can involve parsing.",
GetName());
 
 3851      if (
gDebug>0) 
Info(
"GetListOfAllPublicMethods",
"Header Parsing - Asking for all the methods of class %s: this can involve parsing.",
GetName());
 
 3881   while ((baseClass = (
TBaseClass *) nextBase())) {
 
 3889   while ((method = (
TMethod*)next())) {
 
 3895         if (
m && 
m->GetNargs() == method->
GetNargs())
 
 3920      return cl->IsLoaded();
 
 3948   TIter nextMemb(ldm);
 
 3959      TClass* dmTClass = 
nullptr;
 
 3979   for (
int i = 0; i < 2; i++) {
 
 3995   if (
this == sCIString) 
return;
 
 4007      auto checkDicts = [&](
const string &clName){
 
 4014         if (cl && !cl->HasDictionary()) {
 
 4015            cl->GetMissingDictionariesWithRecursionCheck(
result, visited, recurse);
 
 4019      const auto &elements = splitType.
fElements;
 
 4020      const auto &templName = elements[0];
 
 4023      if (templName == 
"pair") {
 
 4031      if (templName == 
"unique_ptr" || templName == 
"array") {
 
 4032         checkDicts(elements[1]);
 
 4039      if (templName == 
"tuple") {
 
 4042         const auto nTemplArgs = elements.size() - 1;
 
 4044         for (
auto iTemplArg = 1U; iTemplArg < nTemplArgs; ++iTemplArg) {
 
 4045            checkDicts(elements[iTemplArg]);
 
 4091   if (
result.FindObject(
this)) 
return;
 
 4094   if (
this == sCIString) 
return;
 
 4103   if (strncmp(
fName, 
"unique_ptr<", 11) == 0 || strncmp(
fName, 
"array<", 6) == 0 || strncmp(
fName, 
"tuple<", 6) == 0) {
 
 4156   while ((acl = (
TClass*)nextClass())) {
 
 4157      if (acl == newcl) 
continue;
 
 4162         info->
Update(
this, newcl);
 
 4174   Warning(
"ResetClassInfo(Long_t tagnum)",
"Call to deprecated interface (does nothing)");
 
 4223      (*fUsingData).Unload();
 
 4227      (*fMethod).Unload();
 
 4261   if (options==
nullptr || options[0]==0) 
return;
 
 4263   if (strstr(options,
"streamerinfo")!=
nullptr) {
 
 4267         std::map<std::string, TObjArray*>::iterator it;
 
 4268         std::map<std::string, TObjArray*>::iterator end = (*fConversionStreamerInfo).end();
 
 4269         for( it = (*fConversionStreamerInfo).begin(); it != end; ++it ) {
 
 4270            it->second->ls(options);
 
 4296   TClass  *classPtr = 
nullptr;
 
 4297   TIter next(methodList);
 
 4299   while ((method = (
TMethod*) next())) {
 
 4301      if (classPtr != method->
GetClass()) {
 
 4309      TIter nextarg(margsList);
 
 4310      while ((methodArg = (
TMethodArg*)nextarg())) {
 
 4360      if(
fMethod.compare_exchange_strong(expected, temp.get()) ) {
 
 4396         m = 
c->GetMethodAllAny(method);
 
 4418      Fatal(
"GetMethod", 
"gInterpreter not initialized");
 
 4424   if (!decl) 
return nullptr;
 
 4431         "\nDid not find matching TMethod <%s> with \"%s\" %sfor %s",
 
 4432         method,params,objectIsConst ? 
"const " : 
"", 
GetName());
 
 4442      return static_cast<TMethod *
>(method);
 
 4446         if (
TFunction* method = base->FindClassOrBaseMethodWithId(declId))
 
 4447            return static_cast<TMethod *
>(method);
 
 4464      Fatal(
"GetMethodWithPrototype", 
"gInterpreter not initialized");
 
 4468                                                            objectIsConst, 
mode);
 
 4470   if (!decl) 
return nullptr;
 
 4473   Error(
"GetMethodWithPrototype",
 
 4474         "\nDid not find matching TMethod <%s> with \"%s\" %sfor %s",
 
 4475         method,
proto,objectIsConst ? 
"const " : 
"", 
GetName());
 
 4490      if (faddr == (
Longptr_t)
m->InterfaceMethod())
 
 4509      Fatal(
"GetClassMethod", 
"gInterpreter not initialized");
 
 4515   if (!decl) 
return nullptr;
 
 4535      Fatal(
"GetClassMethodWithPrototype", 
"gInterpreter not initialized");
 
 4542   if (!decl) 
return nullptr;
 
 4641      Error(
"GetStreamerInfo", 
"class: %s, attempting to access a wrong version: %d", 
GetName(), version);
 
 4660      TMmallocDescTemp setreset;
 
 4669         sinfo->
Build(silent);
 
 4714   newname += 
"@@emulated";
 
 4739         for (
Int_t i = -1; sinfo == 
nullptr && i < ninfos; ++i)
 
 4752            Error(
"GetStreamerInfoAbstractEmulated", 
"could not create TVirtualStreamerInfo");
 
 4777   newname += 
"@@emulated";
 
 4792      if (!sinfo && (checksum != 
fCheckSum)) {
 
 4802         for (
Int_t i = -1; sinfo == 
nullptr && i < ninfos; ++i)
 
 4815            Error(
"GetStreamerInfoAbstractEmulated", 
"could not create TVirtualStreamerInfo");
 
 4862         Error(
"IgnoreTObjectStreamer",
"Must be called before the creation of StreamerInfo");
 
 4888   if (cl == 
this) 
return kTRUE;
 
 4898            if (!clbase) 
return kFALSE; 
 
 4917   if (cl == 
this) 
return obj;
 
 4980   auto obj = 
NewObject(defConstructor, quiet);
 
 4981   if (obj.GetPtr() && obj.GetAllocator()) {
 
 4985   return obj.GetPtr();
 
 5007         Error(
"New", 
"cannot create object of class %s", 
GetName());
 
 5024         Error(
"New", 
"cannot create object of class %s", 
GetName());
 
 5036         Error(
"New", 
"cannot create object of class %s", 
GetName());
 
 5065         p = { sinfo->
New(), sinfo};
 
 5075         Error(
"New", 
"Failed to construct class '%s' using streamer info", 
GetName());
 
 5080      Fatal(
"New", 
"This cannot happen!");
 
 5093   auto obj = 
NewObject(arena, defConstructor);
 
 5094   if (obj.GetPtr() && obj.GetAllocator()) {
 
 5098   return obj.GetPtr();
 
 5120         Error(
"New with placement", 
"cannot create object of class %s version %d at address %p", 
GetName(), 
fClassVersion, arena);
 
 5136         Error(
"New with placement", 
"cannot create object of class %s version %d at address %p", 
GetName(), 
fClassVersion, arena);
 
 5165         Error(
"New with placement", 
"Cannot construct class '%s' version %d at address %p, no streamer info available!", 
GetName(), 
fClassVersion, arena);
 
 5171         p = { sinfo->
New(arena), sinfo };
 
 5181      Error(
"New with placement", 
"This cannot happen!");
 
 5196   if (obj.GetPtr() && obj.GetAllocator()) {
 
 5200   return obj.GetPtr();
 
 5274         p = { sinfo->
NewArray(nElements), sinfo };
 
 5284      Error(
"NewArray", 
"This cannot happen!");
 
 5298   if (obj.GetPtr() && obj.GetAllocator()) {
 
 5302   return obj.GetPtr();
 
 5324         Error(
"NewArray with placement", 
"cannot create object of class %s version %d at address %p", 
GetName(), 
fClassVersion, arena);
 
 5340         Error(
"NewArray with placement", 
"cannot create object of class %s version %d at address %p", 
GetName(), 
fClassVersion, arena);
 
 5369         Error(
"NewArray with placement", 
"Cannot construct class '%s' version %d at address %p, no streamer info available!", 
GetName(), 
fClassVersion, arena);
 
 5375         p = { sinfo->
NewArray(nElements, arena), sinfo };
 
 5391      Error(
"NewArray with placement", 
"This cannot happen!");
 
 5403   if (obj == 
nullptr) 
return;
 
 5410   } 
else if ((!dtorOnly) && 
fDelete) {
 
 5453               objVer = iter->second;
 
 5455                  currentVersion = 
kTRUE;
 
 5462      if (!inRepo || currentVersion) {
 
 5469            Error(
"Destructor", 
"No streamer info available for class '%s' version %d at address %p, cannot destruct emulated object!", 
GetName(), 
fClassVersion, 
p);
 
 5475                  Error(
"Destructor", 
"Doing Dump() ...");
 
 5488            Error(
"Destructor", 
"No streamer info available for class '%s' version %d, cannot destruct object at addr: %p", 
GetName(), objVer, 
p);
 
 5495                  Error(
"Destructor2", 
"Doing Dump() ...");
 
 5506      Error(
"Destructor", 
"This cannot happen! (class %s)", 
GetName());
 
 5516   if (obj.
GetPtr() == 
nullptr)
 
 5532   if (ary == 
nullptr) 
return;
 
 5539         Error(
"DeleteArray", 
"Destructor only is not supported!");
 
 5578               objVer = iter->second;
 
 5580                  currentVersion = 
kTRUE;
 
 5587      if (!inRepo || currentVersion) {
 
 5594            Error(
"DeleteArray", 
"No streamer info available for class '%s' version %d at address %p, cannot destruct object!", 
GetName(), 
fClassVersion, ary);
 
 5600                  Error(
"DeleteArray", 
"Doing Dump() ...");
 
 5613            Error(
"DeleteArray", 
"No streamer info available for class '%s' version %d at address %p, cannot destruct object!", 
GetName(), objVer, ary);
 
 5620                  Error(
"DeleteArray", 
"Doing Dump() ...");
 
 5632      Error(
"DeleteArray", 
"This cannot happen! (class '%s')", 
GetName());
 
 5642   if (obj.
GetPtr() == 
nullptr) 
return;
 
 5718   char *s = 
new char[maxsize];
 
 5722   b.ReadString(s, maxsize); 
 
 5723   while (strlen(s) == (maxsize - 1)) {
 
 5725      b.SetBufferOffset(pos);
 
 5726      maxsize = 2*maxsize;
 
 5728      s = 
new char[maxsize];
 
 5729      b.ReadString(s, maxsize); 
 
 5734      ::Error(
"TClass::Load", 
"dictionary of class %s not found", s);
 
 5806   TIter next(
gROOT->GetListOfClassGenerators());
 
 5833   bool autoParse = !
gInterpreter->IsAutoParsingSuspended();
 
 5847         ::Error(
"TClass::LoadClassInfo", 
"no interpreter information for class %s is available" 
 5848                                          " even though it has a TClass initialization routine.",
 
 5871                          const char *dfil, 
const char *ifil,
 
 5876   TMmallocDescTemp setreset;
 
 5877   return new TClass(
cname, 
id, info, isa, dfil, ifil, dl, il);
 
 5885                          const char *dfil, 
const char *ifil,
 
 5890   TMmallocDescTemp setreset;
 
 5997   The class %s transitioned from not having a specified class version\n\ 
 5998   to having a specified class version (the current class version is %d).\n\ 
 5999   However too many different non-versioned layouts of the class have\n\ 
 6000   already been loaded so far.  To work around this problem you can\n\ 
 6001   load fewer 'old' file in the same ROOT session or load the C++ library\n\ 
 6002   describing the class %s before opening the files or increase the version\n\ 
 6003   number of the class for example ClassDef(%s,%d).\n\ 
 6004   Do not try to write objects with the current class definition,\n\ 
 6005   the files might not be readable.\n",
 
 6009   The StreamerInfo version %d for the class %s which was read\n\ 
 6010   from a file previously opened has the same version as the active class\n\ 
 6011   but a different checksum. You should update the version to ClassDef(%s,%d).\n\ 
 6012   Do not try to write objects with the current class definition,\n\ 
 6013   the files will not be readable.\n" 
 6024      if (strncmp(
GetName(), 
"map<", 4) == 0)
 
 6026      else if (strncmp(
GetName(), 
"multimap<", 9) == 0)
 
 6028      else if (strncmp(
GetName(), 
"unordered_map<", 14) == 0)
 
 6030      else if (strncmp(
GetName(), 
"unordered_multimap<", 19) == 0)
 
 6033         std::string pairname(
"pair");
 
 6034         pairname.append(
GetName() + noffset);
 
 6036         if ( pcl && !pcl->IsLoaded() && !pcl->IsSyntheticPair() )
 
 6042            while (
auto acl = (
TClass*)nextClass()) {
 
 6043               if (acl == 
this) 
continue;
 
 6044               if (acl->fCollectionProxy && acl->fCollectionProxy->GetValueClass() == pcl) {
 
 6045                  acl->fCollectionProxy->Reset();
 
 6049            TIter next(pcl->GetStreamerInfos());
 
 6051               if (info->IsBuilt()) {
 
 6052                  info->Clear(
"build");
 
 6104   TMmallocDescTemp setreset;
 
 6319      Fatal(
"SetUnloaded",
"The TClass for %s is being unloaded when in state %d\n",
 
 6343      (*fMethod).Unload();
 
 6349      (*fUsingData).Unload();
 
 6355   if (fState <= kForwardDeclared && !fStreamerInfo->IsEmpty()) {
 
 6448   //info is empty. Let's build the default Streamer descriptor
 
 6450   char *temp = new char[10000];
 
 6454   //add list of base classes
 
 6455   TIter nextb(GetListOfBases());
 
 6457   while ((base = (TBaseClass*) nextb())) {
 
 6458      snprintf(local,100,"%s;",base->GetName());
 
 6459      strlcat(temp,local,10000);
 
 6462   //add list of data members and types
 
 6463   TIter nextd(GetListOfDataMembers());
 
 6464   while ((dm = (TDataMember *) nextd())) {
 
 6465      if (dm->IsEnum()) continue;
 
 6466      if (!dm->IsPersistent()) continue;
 
 6467      Long_t property = dm->Property();
 
 6468      if (property & kIsStatic) continue;
 
 6469      TClass *acl = TClass::GetClass(dm->GetTypeName(),update);
 
 6472         if (acl->GetClassVersion() == 0) continue;
 
 6475      // dm->GetArrayIndex() returns an empty string if it does not
 
 6477      const char * index = dm->GetArrayIndex();
 
 6478      if (strlen(index)==0)
 
 6479         snprintf(local,100,"%s %s;",dm->GetFullTypeName(),dm->GetName());
 
 6481         snprintf(local,100,"%s %s[%s];",dm->GetFullTypeName(),dm->GetName(),index);
 
 6482      strlcat(temp,local,10000);
 
 6484   //fStreamerInfo = temp;
 
 6573   for (
int i=0; i<il; i++) 
id = 
id*3+
name[i];
 
 6582      TIter nextBase(tlb);
 
 6591         for (
int i=0; i<il; i++) 
id = 
id*3+
name[i];
 
 6594               Error(
"GetCheckSum",
"Calculating the checksum for (%s) requires the base class (%s) meta information to be available!",
 
 6603   TList *tlm = ((
TClass*)
this)->GetListOfDataMembers();
 
 6605      TIter nextMemb(tlm);
 
 6621         for (i=0; i<il; i++) 
id = 
id*3+
name[i];
 
 6633                  type.ReplaceAll(
"ULong64_t",
"unsigned long long");
 
 6634                  type.ReplaceAll(
"Long64_t",
"long long");
 
 6635                  type.ReplaceAll(
"<signed char",
"<char");
 
 6636                  type.ReplaceAll(
",signed char",
",char");
 
 6637                  if (
type==
"signed char") 
type = 
"char";
 
 6649         for (i=0; i<il; i++) 
id = 
id*3+
type[i];
 
 6653            for (
int ii=0;ii<dim;ii++) 
id = 
id*3+tdm->
GetMaxIndex(ii);
 
 6660               left = strstr(tdm->
GetTitle(),
"[");
 
 6662               const char *right = strstr(left,
"]");
 
 6665                  while (left != right) {
 
 6721   Error(
"AdoptMemberStreamer",
"Cannot adope member streamer for %s::%s",
GetName(), 
name);
 
 6760   return b.ReadClassBuffer(
this,pointer,version,start,count);
 
 6769   return b.ReadClassBuffer(
this,pointer);
 
 6781   b.WriteClassBuffer(
this,pointer);
 
 6794   streamer->
Stream(
b,
object,onfile_class);
 
 6826   if (
b.IsReading()) {
 
 6827      b.ReadClassEmulated(pThis, 
object, onfile_class);
 
 6829      b.WriteClassBuffer(pThis, 
object);
 
 6860   if (
b.IsReading()) {
 
 6861      b.ReadClassBuffer(pThis, 
object, onfile_class);
 
 6865      b.WriteClassBuffer(pThis, 
object);
 
 6884      pThis->
Fatal(
"StreamerDefault", 
"fStreamerImpl not properly initialized (%d)", pThis->
fStreamerType);
 
 7048      for (
Int_t i=-1;i<ninfos;++i) {
 
 7070   for (
Int_t i=-1;i<ninfos;i++) {
 
 7074      if (!info) 
continue;
 
 7115      std::map<std::string, TObjArray*>::iterator it;
 
 7118      it = (*fConversionStreamerInfo).find( cl->
GetName() );
 
 7120      if( it != (*fConversionStreamerInfo).end() ) {
 
 7124      if( arr && version >= -1 && version < arr->GetSize() && arr->
At( version ) )
 
 7136   if( version >= -1 && version < clSI->GetSize() )
 
 7179      (*fConversionStreamerInfo)[cl->
GetName()] = arr;
 
 7182      Error(
"GetConversionStreamerInfo", 
"Conversion StreamerInfo from %s to %s version %d has already been created",
 
 7223      std::map<std::string, TObjArray*>::iterator it;
 
 7227      it = (*fConversionStreamerInfo).find( cl->
GetName() );
 
 7229      if( it != (*fConversionStreamerInfo).end() ) {
 
 7285      (*fConversionStreamerInfo)[cl->
GetName()] = arr;
 
 7304         Error(
"RegisterStreamerInfo",
 
 7305               "Register StreamerInfo for %s on non-empty slot (%d).",
 
 7349   static const char *handVerified[] = {
 
 7350      "TEnvRec",    
"TDataType",      
"TObjArray",    
"TList",   
"THashList",
 
 7351      "TClass",     
"TCling",         
"TInterpreter", 
"TMethod", 
"ROOT::Internal::TCheckHashRecursiveRemoveConsistency",
 
 7352      "TCheckHashRecursiveRemoveConsistency", 
"TGWindow",
 
 7353      "TDirectory", 
"TDirectoryFile", 
"TObject",      
"TH1",
 
 7354      "TQClass", 
"TGlobal" };
 
 7357      for (
auto cursor : handVerified) {
 
RooAbsTestStatistic * create(const char *name, const char *title, RooAbsReal &real, RooAbsData &adata, const RooArgSet &projDeps, RooAbsTestStatistic::Configuration const &cfg) override
 
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
 
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
 
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)
 
Bool_t AddRule(TSchemaRule *rule, EConsistencyCheck checkConsistency=kCheckAll, TString *errmsg=nullptr)
The consistency check always fails if the TClass object was not set! if checkConsistency is: kNoCheck...
 
void SetClass(TClass *cls)
Set the TClass associated with this rule set.
 
static bool Check(TClass &classRef)
 
A spin mutex-as-code-guard class.
 
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)
 
Bool_t SetFromRule(const char *rule)
Set the content fot this object from the rule See TClass::AddRule for details on the syntax.
 
const char * GetTargetString() const
Get the target data members of this rule as a simple string (i.e. the in memory data member).
 
const char * GetVersion() const
Get the version string.
 
const char * GetTargetClass() const
Get the targte class of this rule (i.e. the in memory class).
 
Bool_t IsTreatingNonAccessibleTypes() override
 
TAutoInspector(TBrowser *b)
 
virtual ~TAutoInspector()
 
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).
 
Int_t GetDelta()
Get offset from "this" to part of base class.
 
ROOT::ESTLType IsSTLContainer()
Return which type (if any) of STL container the data member is.
 
Long_t Property() const override
Get property description word. For meaning of bits see EProperty.
 
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...
 
virtual TClass * GetClass(const char *classname, Bool_t load)=0
 
TClassRef is used to implement a permanent reference to a TClass object.
 
virtual void Stream(TBuffer &b, void *objp, const TClass *onfileClass)
 
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
 
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 [] ThiObject.
 
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.
 
static TClass * LoadClass(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
 
const std::type_info * GetTypeInfo() const
 
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.
 
Bool_t CanIgnoreTObjectStreamer()
 
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,...
 
Bool_t HasConsistentHashMember()
Return 'true' if we can guarantee that if this class (or any class in this class inheritance hierarch...
 
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.
 
void SetStreamerImpl()
Internal routine to set fStreamerImpl based on the value of fStreamerType.
 
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 ThiObject.
 
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...
 
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.
 
void ls(Option_t *option="") const override
List (ls) all objects in this collection.
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
virtual void Add(TObject *obj)=0
 
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
 
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.
 
Int_t GetMaxIndex(Int_t dim) const
Return maximum index for array dimension "dim".
 
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.
 
Int_t GetArrayDim() const
Return number of array dimensions.
 
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,...
 
const char * GetFullTypeName() const
Get the concrete type name of this data member, including const and volatile qualifiers.
 
Basic data type descriptor (datatype information is obtained from CINT).
 
Long_t Property() const override
Get property description word. For meaning of bits see EProperty.
 
const char * AsString(void *buf) const
Return string containing value in buffer formatted according to the basic data type.
 
TString GetTypeName()
Get basic type of typedef, e,g.: "class TDirectory*" -> "TDirectory".
 
static TDataType * GetDataType(EDataType type)
Given a EDataType type, get the TDataType* that represents it.
 
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.
 
Long64_t GetValue(ULong64_t hash, Long64_t key)
Return the value belonging to specified key and hash value.
 
void AddAt(UInt_t slot, ULong64_t hash, Long64_t key, Long64_t value)
Add an (key,value) pair to the table.
 
Dictionary for function template This class describes one single function template.
 
Global functions class (global functions are obtained from CINT).
 
Int_t GetNargs() const
Number of function arguments.
 
THashTable implements a hash table to store TObject's.
 
void Add(TObject *obj) override
Add object to the hash table.
 
const TList * GetListForObject(const char *name) const
Return the TList corresponding to object's name based hash value.
 
TObject * Remove(TObject *obj) override
Remove object from the hashtable.
 
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
 
TObject * Remove(TObject *obj) override
Remove object from the list.
 
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.
 
void AddFirst(TObject *obj) override
Add object at the beginning of the list.
 
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.
 
const char * GetFullTypeName() const
Get full type description of method argument, e.g.: "class TDirectory*".
 
Each ROOT class (see TClass) has a linked list of methods.
 
TClass * GetClass() const
 
EMenuItemKind IsMenuItem() const
 
virtual TList * GetListOfMethodArgs()
Returns methodarg list and additionally updates fDataMember in TMethod by calling FindDataMember();.
 
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
 
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
virtual void SetName(const char *name)
Set the name of the TNamed.
 
void ls(Option_t *option="") const override
List TNamed name and title.
 
Int_t GetEntriesFast() const
 
void Clear(Option_t *option="") override
Remove all objects from the array.
 
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.
 
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
 
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.
 
TObject * GetObject() const
 
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.
 
virtual void Browse(TBrowser *b)
Browse object. May be overridden for another default action.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
 
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.
 
virtual TClass * IsA() const
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
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.
 
void AdoptStreamer(TMemberStreamer *p)
 
Long_t GetThisOffset() const
 
void SetIsObject(Bool_t isObject)
 
TClass * GetClassPointer() const override
Returns a pointer to the TClass of this element.
 
virtual const char * GetFullName() const
Return element name including dimensions, if any Note that this function stores the name into a stati...
 
virtual TClass * GetClassPointer() const
Returns a pointer to the TClass of this element.
 
Int_t GetArrayDim() const
 
virtual Bool_t IsaPointer() const
 
const char * GetTypeName() const
 
TClass * IsA() const override
 
virtual Bool_t IsBase() const
Return kTRUE if the element represent a base class.
 
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
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.
 
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, 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.
 
void Delete(Option_t *option="") override
Delete is not allowed in this class.
 
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 Int_t GetProperties() const
Return miscallenous properties of the proxy (see TVirtualCollectionProxy::EProperty)
 
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 void * At(UInt_t idx)=0
Return the address of the value at index idx
 
virtual UInt_t Size() const =0
Return the current number of elements in the container.
 
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 TVirtualPad * cd(Int_t subpadnumber=0)=0
 
virtual void DrawClassObject(const TObject *obj, Option_t *option="")=0
 
virtual void SetClass(TClass *classptr)=0
 
virtual TVirtualRefProxy * Clone() const =0
 
Abstract Interface class describing Streamer information for one class.
 
virtual TVirtualStreamerInfo * GenerateInfoForPair(const std::string &pairclassname, bool silent, size_t hint_pair_offset, size_t hint_pair_size)=0
Generate the TClass and TStreamerInfo for the requested pair.
 
virtual void DeleteArray(void *p, Bool_t dtorOnly=kFALSE)=0
 
virtual void Clear(Option_t *="") override=0
Set name and title to empty strings ("").
 
virtual void SetClassVersion(Int_t vers)=0
 
virtual TClassStreamer * GenEmulatedClassStreamer(const char *class_name, Bool_t silent)=0
 
Bool_t IsCompiled() const
 
virtual TVirtualStreamerInfo * NewInfo(TClass *cl)=0
 
virtual TClass * GetActualClass(const void *obj) const =0
 
virtual UInt_t GetCheckSum() const =0
 
virtual Int_t GetOffset(const char *) const =0
 
static const char * GetElementCounterStart(const char *dmTitle)
Given a comment/title declaring an array counter, for example:
 
virtual void Build(Bool_t isTransient=kFALSE)=0
 
virtual void BuildCheck(TFile *file=nullptr, Bool_t load=kTRUE)=0
 
virtual Bool_t BuildFor(const TClass *cl)=0
 
virtual TVirtualCollectionProxy * GenExplicitProxy(const ::ROOT::Detail::TCollectionProxyInfo &info, TClass *cl)=0
 
virtual void * NewArray(Long_t nElements, void *ary=nullptr)=0
 
virtual TVirtualCollectionProxy * GenEmulatedProxy(const char *class_name, Bool_t silent)=0
 
virtual void SetClass(TClass *cl)=0
 
virtual TObjArray * GetElements() const =0
 
virtual Int_t GetSize() const =0
 
virtual void BuildOld()=0
 
static TVirtualStreamerInfo * Factory()
Static function returning a pointer to a new TVirtualStreamerInfo object.
 
virtual void * New(void *obj=nullptr)=0
 
virtual Version_t GetOldVersion() const =0
 
virtual Int_t GetOnFileClassVersion() const =0
 
virtual void Destructor(void *p, Bool_t dtorOnly=kFALSE)=0
 
virtual Bool_t CompareContent(TClass *cl, TVirtualStreamerInfo *info, Bool_t warn, Bool_t complete, TFile *file)=0
 
virtual Int_t GetClassVersion() const =0
 
virtual void Update(const TClass *oldClass, TClass *newClass)=0
 
virtual TClass * GetClass() const =0
 
R__EXTERN void * gMmallocDesc
 
Bool_t HasConsistentHashMember(TClass &clRef)
Return true is the Hash/RecursiveRemove setup is consistent, i.e.
 
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
 
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.
 
bool IsTemplate()
Check if the type is a template.
 
std::vector< std::string > fElements
 
TVirtualStreamerInfo * GetAllocator() const
 
TClass::ENewType & fCurrentValue
 
TClass__GetCallingNewRAII(TClass::ENewType newvalue)
 
TClass::ENewType fOldValue
 
~TClass__GetCallingNewRAII()