91   arr->AddAtAndExpand(
arr->At(last),last+1);
 
 
  244   struct TPreventRecursiveBuildGuard {
 
  285      if (
proxy->GetValueClass()) {
 
  286         title.
Form(
"<%s%s> Used to call the proper TStreamerInfo case",
proxy->GetValueClass()->GetName(),
proxy->HasPointers() ? 
"*" : 
"");
 
  300      Warning(
"Build", 
"Due to some major, backward-incompatible improvements planned for ROOT::RVec, direct I/O of " 
  301                       "ROOT::RVec objects will break between v6.24 and v6.26. Please use std::vectors instead. See " 
  302                       "the release notes of v6.24 for more information.");
 
  313   ROOT::TSchemaRuleSet::TMatches 
rules;
 
  339               Error(
"Build()", 
"Cannot stream virtual base %s of class %s",
 
  343         const char* bname  = base->
GetName();
 
  346         if (!
strcmp(bname, 
"string")) {
 
  353               if (!
element->GetClassPointer()->IsLoaded()) {
 
  355                     Error(
"Build",
"The class \"%s\" is compiled and its base class \"%s\" is a collection and we do not have a dictionary for it, we will not be able to read or write this base class.",
GetName(),bname);
 
  369               Warning(
"Build", 
"%s: base class %s has no streamer or dictionary it will not be saved", 
GetName(), 
clm->GetName());
 
  388                  Warning(
"Build", 
"%s: base class %s has no streamer or dictionary it will not be saved", 
GetName(), 
clm->GetName());
 
  503            dsize = 
sizeof(
char*);
 
  514               if ((
fName == 
"TString") || (
fName == 
"TClass")) {
 
  532         static const char* 
full_string_name = 
"basic_string<char,char_traits<char>,allocator<char> >";
 
  544                        Error(
"Build",
"The class \"%s\" is %s and for its data member \"%s\" we do not have a dictionary for the collection \"%s\". Because of this, we will not be able to read or write this data member.",
GetName(), 
category, 
dmName, 
dmType);
 
  547                  if (!
element->GetClassPointer()->IsLoaded()) {
 
  577                  if (
clm->IsTObject()) {
 
  582                        Error(
"Build", 
"%s: %s has no streamer or dictionary, data member %s will not be saved",
 
  587            } 
else if (
clm->IsTObject()) {
 
  594                  Warning(
"Build", 
"%s: %s has no streamer or dictionary, data member \"%s\" will not be saved",
 
  607      for (
Int_t i = 0; i < ndim; ++i) {
 
 
  744            if (
element->GetTitle()[0] == 
'<') {
 
  750                  else if (
content[
c] == 
'>') --level;
 
  761                       "Update the collection proxy of the class \"%s\" \n" 
  762                       "\tto be similar to \"%s\".",
 
  767   The class %s had a collection proxy when written but it is not an STL\n \ 
  768   collection and we did not record the type of the content of the collection.\n \ 
  769   We will claim the content is a bool (i.e. no data will be read).",
 
  803         ::Warning(
"TClass::TClass", 
"no dictionary for class %s is available", 
GetName());
 
  812            if (
element->GetTitle()[0] == 
'<') {
 
  818                  else if (
content[
c] == 
'>') --level;
 
  829                       "Update the collection proxy of the class \"%s\" \n" 
  830                       "\tto be similar to \"%s\".",
 
  835   The class %s had a collection proxy when written but it is not an STL\n \ 
  836   collection and we did not record the type of the content of the collection.\n \ 
  837   We will claim the content is a bool (i.e. no data will be read).",
 
  916            if (
fCheckSum == 
info->GetCheckSum() && (
info->GetOnFileClassVersion()==1 || 
info->GetOnFileClassVersion()==0)) {
 
  974#ifdef TEST_FOR_BACKWARD_COMPATIBILITY_ABSTRACT_CLASSES 
 1028         if (
info->IsBuilt()) {
 
 1042                  e2->SetTitle(
e1->GetTitle());
 
 1056   The class %s transitioned from not having a specified class version\n\ 
 1057   to having a specified class version (the current class version is %d).\n\ 
 1058   However too many different non-versioned layouts of the class have been\n\ 
 1059   loaded so far.  This prevent the proper reading of objects written with\n\ 
 1060   the class layout version %d, in particular from the file:\n\ 
 1062   To work around this issue, load fewer 'old' files in the same ROOT session.",
 
 1066   The class %s transitioned from not having a specified class version\n\ 
 1067   to having a specified class version (the current class version is %d).\n\ 
 1068   However too many different non-versioned layouts of the class have been\n\ 
 1069   loaded so far.  This prevent the proper reading of objects written with\n\ 
 1070   the class layout version %d.\n\ 
 1071   To work around this issue, load fewer 'old' files in the same ROOT session.",
 
 1078   The StreamerInfo for version %d of class %s read from the file %s\n\ 
 1079   has a different checksum than the previously loaded StreamerInfo.\n\ 
 1080   Reading objects of type %s from the file %s \n\ 
 1081   (and potentially other files) might not work correctly.\n\ 
 1082   Most likely the version number of the class was not properly\n\ 
 1083   updated [See ClassDef(%s,%d)].",
 
 1087   The StreamerInfo from %s does not match existing one (%s:%d)\n\ 
 1088   The existing one has not been used yet and will be discarded.\n\ 
 1089   Reading the file %s will work properly, however writing object of\n\ 
 1090   type %s will not work properly.  Most likely the version number\n\ 
 1091   of the class was not properly updated [See ClassDef(%s,%d)].",
 
 1097   The StreamerInfo for version %d of class %s\n\ 
 1098   has a different checksum than the previously loaded StreamerInfo.\n\ 
 1099   Reading objects of type %s\n\ 
 1100   (and potentially other files) might not work correctly.\n\ 
 1101   Most likely the version number of the class was not properly\n\ 
 1102   updated [See ClassDef(%s,%d)].",
 
 1106   The StreamerInfo does not match existing one (%s:%d)\n\ 
 1107   The existing one has not been used yet and will be discarded.\n\ 
 1108   Reading should work properly, however writing object of\n\ 
 1109   type %s will not work properly.  Most likely the version number\n\ 
 1110   of the class was not properly updated [See ClassDef(%s,%d)].",
 
 1142#ifdef TEST_FOR_BACKWARD_COMPATIBILITY_ABSTRACT_CLASSES 
 1170                  if (
bc->GetClassPointer()->GetCollectionType()) {
 
 1178   The StreamerInfo of class %s read from file %s\n\ 
 1179   has the same version (=%d) as the active class but a different checksum.\n\ 
 1180   You should update the version to ClassDef(%s,%d).\n\ 
 1181   Do not try to write objects with the current class definition,\n\ 
 1185   The StreamerInfo of class %s \n\ 
 1186   has the same version (=%d) as the active class but a different checksum.\n\ 
 1187   You should update the version to ClassDef(%s,%d).\n\ 
 1188   Do not try to write objects with the current class definition,\n\ 
 1196               Fatal(
"BuildCheck", 
"\n\ 
 1197   The StreamerInfo of unversioned class %s \n\ 
 1198   has the same version (=%d) as the active class but an old checksum.\n\ 
 
 1299      Warning( 
"BuildFor", 
"The build of %s streamer info for %s has been requested, but no matching conversion rules were specified", 
GetName(), 
in_memory_cl->GetName() );
 
 
 1324         switch (
oldClass->GetName()[i-1]) {
 
 1325            case '>' : ++
nest; 
break;
 
 1366            Error(
"ImportStreamerInfo",
"Unable to clone the StreamerInfo for %s.",(*next)->GetName());
 
 1394      return newClass->GetCollectionProxy()
 
 1395             && 
newClass->GetCollectionProxy()->GetValueClass()
 
 1396             && !
newClass->GetCollectionProxy()->HasPointers();
 
 1513      if (
name.compare(0,6,
"const ")==0) {
 
 1541            case '<': --level; 
break;
 
 1542            case '>': ++level; 
break;
 
 1543            case ':': 
if (level == 0) {
 
 1581         if (
info->GetElements()->GetEntriesFast() != 2) {
 
 1605            std::vector<std::string> inside;
 
 1661         std::vector<std::string> inside;
 
 1687   struct TBuildOldGuard {
 
 1787   ROOT::TSchemaRuleSet::TMatches 
rules;
 
 1818#if defined(PROPER_IMPLEMEMANTION_OF_BASE_CLASS_RENAMING) 
 1841                  Error(
"BuildOld", 
"Could not find base class: %s for %s and could not find any matching rename rule\n", base->
GetName(), 
GetName());
 
 1851                  Error(
"BuildOld", 
"Could not find base class: %s for %s, renaming rule was found but is malformed\n", base->
GetName(), 
GetName());
 
 1864                  Warning(
"BuildOld", 
"Missing base class: %s skipped", base->
GetName());
 
 1975               } 
else if (
bc->GetClassPointer()->GetCollectionProxy()
 
 1976                          && !
bc->GetClassPointer()->IsLoaded()
 
 1977                          && 
bc->GetClassPointer()->GetCollectionProxy()->GetCollectionType() != 
ROOT::kSTLvector) {
 
 1978                  Error(
"BuildOld",
"The class \"%s\" is compiled and its base class \"%s\" is a collection and we do not have a dictionary for it, we will not be able to read or write this base class.",
GetName(),
bc->GetName());
 
 1985               asize = 
bc->GetClassPointer()->Size();
 
 2008                     Error(
"BuildOld", 
"Could not find STL base class: %s for %s\n", 
element->GetName(), 
GetName());
 
 2048      const char* 
dmType = 
nullptr;
 
 2106               Error(
"BuildOld",
"The class \"%s\" is compiled and for its data member \"%s\", we do not have a dictionary for the collection \"%s\", we will not be able to read or write this data member.",
GetName(),dm->
GetName(),
elemDm->GetName());
 
 2121            if (
rd && 
rd->GetDataMember()) {
 
 2122               element->SetOffset(
rd->GetThisOffset());
 
 2124               dm = 
rd->GetDataMember();
 
 2137               if (pattern && pattern != 
this && pattern->IsBuilt()) {
 
 2145               Error(
"BuildCheck", 
"Reading RVecs that were written directly to file before ROOT v6.24 is not " 
 2146                                   "supported, the program will likely crash.");
 
 2233                Warning(
"BuildOld", 
"Can not properly load the TStreamerInfo from %s into %s due to a conflict for the class version %d", 
oldClass->GetName(), 
newClass->GetName(), 
oldv);
 
 2285                        switch( 
element->GetType() ) {
 
 2321            } 
else if (
newClass->GetSchemaRules()->HasRuleWithSourceClass( 
oldClass->GetName() )) {
 
 2334                   newClass->GetSchemaRules()->HasRuleWithSourceClass( 
oldClass->GetName() ) ) {
 
 2345         if (
element->GetNewType() != -2) {
 
 2352                     } 
else if (
newClass->GetCollectionProxy()) {
 
 2360                     } 
else if (
newClass->GetCollectionProxy()) {
 
 2367                  if (
newClass->GetCollectionProxy()) {
 
 2375                  } 
else if (
newClass->IsTObject()) {
 
 2477            asize = 
sizeof(std::vector<int>);
 
 2554      if (
element->GetNewType() == -2) {
 
 
 2657      TMemberInfo(
TClass *parent) : fParent(parent) {};
 
 2666      void SetClassName(
const char *
name) {
 
 2669      void SetComment(
const char *title) {
 
 2670         const char *left = 
strstr(title,
"[");
 
 2672            const char *right = 
strstr(left,
"]");
 
 2675               fComment.
Append(left,right-left);
 
 2696            if (fDataType != 
other.fDataType) {
 
 2697               if ( (fDataType == 4 && 
other.fDataType == 16)
 
 2698                    || (fDataType == 16 && 
other.fDataType == 4) ) {
 
 2700               } 
else if ( (fDataType == 14 && 
other.fDataType == 17)
 
 2701                           || (fDataType == 17 && 
other.fDataType == 14) ) {
 
 2703               } 
else if ( (fDataType == 3 && 
other.fDataType == 6)
 
 2704                          ||(fDataType == 6 && 
other.fDataType == 3) ){
 
 2713         } 
else if (fClassName != 
other.fClassName) {
 
 2714            if ( (fClassName == 
"long" && (
other.fClassName == 
"long long" || 
other.fClassName == 
"Long64_t"))
 
 2715                  || ( (fClassName == 
"long long" || fClassName == 
"Long64_t") && 
other.fClassName == 
"long") ) {
 
 2717            } 
else if ( (fClassName == 
"unsigned long" && (
other.fClassName == 
"unsigned long long" || 
other.fClassName == 
"ULong64_t"))
 
 2718                       || ( (fClassName == 
"unsigned long long" || fClassName == 
"ULong64_t") && 
other.fClassName == 
"unsigned long") ) {
 
 2737         return fComment != 
other.fComment;
 
 2763      } 
else if (
element->IsaPointer()) {
 
 
 2883      if (
el && 
el->IsBase()) {
 
 2914                       "The in-memory layout version %d for class '%s' has a base class (%s) that the on-file layout version %d does not have.",
 
 2918                       "The on-file layout version %d for class '%s'  has a base class (%s) that the in-memory layout version %d does not have",
 
 2922                       "One base class of the on-file layout version %d and of the in memory layout version %d for '%s' is different: '%s' vs '%s'",
 
 2937            msg.Form(
"   The StreamerInfo of class %s read from %s%s\n" 
 2938                     "   has the same version (=%d) as the active class but a different checksum.\n" 
 2939                     "   You should update the version to ClassDef(%s,%d).\n" 
 2940                     "   The objects on this file might not be readable because:\n" 
 2941                     "   The in-memory layout version %d for class '%s' has a base class (%s) with version %d but the on-file layout version %d recorded the version number %d for this base class (%s).",
 
 2959               msg.Form(
"   The StreamerInfo of the base class %s (of class %s) read from %s%s\n" 
 2960                        "   refers to a checksum (%x) that can not be found neither in memory nor in the file.\n",
 
 2962                        file ? 
"file " : 
"", file ? file->
GetName() : 
"",
 
 2974            msg.Form(
"   The StreamerInfo of class %s read from %s%s\n" 
 2975                     "   has the same version (=%d) as the active class but a different checksum.\n" 
 2976                     "   You should update the version to ClassDef(%s,%d).\n" 
 2977                     "   The objects on this file might not be readable because:\n" 
 2978                     "   The in-memory layout version %d for class '%s' has a base class (%s) with checksum %x but the on-file layout version %d recorded the checksum value %x for this base class (%s).",
 
 2994            msg.Form(
"   The StreamerInfo of class %s read from %s%s\n" 
 2995                     "   has the same version (=%d) as the active class but a different checksum.\n" 
 2996                     "   You should update the version to ClassDef(%s,%d).\n" 
 2997                     "   The objects on this file might not be readable because:\n" 
 2998                     "   The in-memory layout version %d for class '%s' has a base class (%s) with version %d but the on-file layout version %d recorded the version number %d for this base class (%s).",
 
 3014            msg.Form(
"   The StreamerInfo of class %s read from %s%s\n" 
 3015                     "   has the same version (=%d) as the active class but a different checksum.\n" 
 3016                     "   You should update the version to ClassDef(%s,%d).\n" 
 3017                     "   The objects on this file might not be readable because:\n" 
 3018                     "   The in-memory layout version %d for class '%s' has a base class (%s) with checksum %x but the on-file layout version %d recorded the checksum value %x for this base class (%s).",
 
 3035   TMemberInfo 
other(cl ? cl : 
info->GetClass());
 
 3044         local.SetName( 
el->GetName() );
 
 3045         local.SetClassName( 
el->GetTypeName() );
 
 3046         local.SetComment( 
el->GetTitle() );
 
 3047         local.SetDataType( 
el->GetType() );
 
 3056            other.SetClassName( 
tdm->GetTrueTypeName() );
 
 3057            other.SetComment( 
tdm->GetTitle() );
 
 3058            if (
tdm->GetDataType()) {
 
 3060               if (
tdm->IsaPointer()) {
 
 3067                  if (
tdm->GetArrayDim()) {
 
 3070                     other.SetDataType( 
tdm->GetDataType()->GetType() );
 
 3096               Warning(
"CompareContent",
"The following data member of\nthe in-memory layout version %d of class '%s' is missing from \nthe on-file layout version %d:\n" 
 3101            } 
else if (
other.fName.Length()==0) {
 
 3102               Warning(
"CompareContent",
"The following data member of\nthe in-memory layout version %d of class '%s' is missing from \nthe on-file layout version %d:\n" 
 3107               Warning(
"CompareContent",
"The following data member of\nthe on-file layout version %d of class '%s' differs from \nthe in-memory layout version %d:\n" 
 
 3197         si->ForceWriteInfo(file, 
force);
 
 3232      if (
element->IsTransient()) 
continue;
 
 
 3254      if (allocator) 
return allocator->
GetClass();
 
 
 3304   for (
int i=0; i<
il; i++) 
id = 
id*3+
name[i];
 
 3316            for (
int i=0; i<
il; i++) 
id = 
id*3+
name[i];
 
 3327      if (
el->IsBase()) 
continue;
 
 3332      if ( 
el->GetType()==3 && 
gROOT->GetType(
el->GetTypeName())==0) {
 
 3342      for (i=0; i<
il; i++) 
id = 
id*3+
name[i];
 
 3356         type = 
el->GetTypeName();
 
 3364         type.ReplaceAll(
"ULong64_t",
"unsigned long long");
 
 3365         type.ReplaceAll(
"Long64_t",
"long long");
 
 3366         type.ReplaceAll(
"signed char",
"char");
 
 3367         type.ReplaceAll(
"<signed char",
"<char");
 
 3368         type.ReplaceAll(
",signed char",
",char");
 
 3369         if (
type==
"signed char") 
type = 
"char";
 
 3373      for (i=0; i<
il; i++) 
id = 
id*3+
type[i];
 
 3375      int dim = 
el->GetArrayDim();
 
 3377         for (i=0;i<dim;i++) 
id = 
id*3+
el->GetMaxIndex(i);
 
 3388            const char *right = 
strstr(left,
"]");
 
 3391               while (left != right) {
 
 
 3413         if(
element->GetArrayLength() <= 1) {
 
 
 3461         if(
element->GetArrayLength() <= 1) {
 
 3478         } 
else if (
element->GetArrayLength() > 1) {
 
 3480            if (
element->GetArrayDim() == 1) {
 
 3482            } 
else if (
element->GetArrayDim() >= 2) {
 
 3483               fprintf(file,
"   for (Int_t i=0;i<%d;i++) reinterpret_cast<%s *>(%s", 
element->GetArrayLength(), 
element->GetTypeName(), 
ename);
 
 3484               fprintf(file,
")[i] = reinterpret_cast<%s const *>(rhs.%s)[i];\n", 
element->GetTypeName(), 
ename);
 
 
 3523         if (
element->GetArrayLength() <= 1) {
 
 3535   fprintf(file,
"   // This is NOT a copy constructor. This is actually a move constructor (for stl container's sake).\n");
 
 3536   fprintf(file,
"   // Use at your own risk!\n");
 
 3537   fprintf(file,
"   (void)rhs; // avoid warning about unused parameter\n");
 
 
 3548   fprintf(file,
"   // This is NOT a copy operator=. This is actually a move operator= (for stl container's sake).\n");
 
 3549   fprintf(file,
"   // Use at your own risk!\n");
 
 3550   fprintf(file,
"   (void)rhs; // avoid warning about unused parameter\n");
 
 3558         if (
element->GetArrayLength() <= 1) {
 
 3570   fprintf(file, 
"   return *this;\n");
 
 
 3588            if(
element->GetArrayLength() <= 1) {
 
 3594            if(
element->GetArrayLength() <= 1) {
 
 3613         } 
else if (
element->HasCounter()) {
 
 3621         const char *prefix = 
"";
 
 3624         } 
else if ( 
element->IsBase() ) {
 
 3632            if (
proxy->HasPointers()) {
 
 3633               fprintf(file,
"   std::for_each( (%s %s).rbegin(), (%s %s).rend(), DeleteObjectFunctor() );\n",prefix,
ename,prefix,
ename);
 
 3641                  std::vector<std::string> inside;
 
 3644                  if ((!inside[1].empty() && inside[1][inside[1].
size()-1]==
'*')
 
 3645                     || (!inside[2].empty() && inside[2][inside[2].
size()-1]==
'*')) {
 
 3646                     fprintf(file,
"   std::for_each( (%s %s).rbegin(), (%s %s).rend(), DeleteObjectFunctor() );\n",prefix,
ename,prefix,
ename);
 
 
 3724      if (!
element->IsBase()) 
continue;
 
 3744                  fprintf(fp,
"// Nested classes forward declaration.\n");
 
 3750               if (
subinfo->GetClassVersion() == -3) {
 
 3758                  fprintf(fp, 
"}; // end of class.\n");
 
 3761                  Error(
"GenerateDeclaration",
"Nested classes %s thought to be inside a namespace inside the class %s",
subinfo->GetName(),
GetName());
 
 3769   fprintf(fp,
"// Nested classes declaration.\n");
 
 3786   fprintf(fp,
"// Data Members.\n");
 
 3799         if (
element->IsBase()) 
continue;
 
 3904         fprintf(fp,
"   ClassDef(%s,%d); // Generated by MakeProject.\n",
protoname.Data(),0);
 
 3912      fprintf(fp,
"} // namespace\n");
 
 3916      fprintf(fp,
"#endif // generic template declaration\n");
 
 
 4019            case '<': --
nest; 
break;
 
 4053      Error(
"MakeProject",
"Cannot open output file:%s\n",
filename.Data());
 
 4060      Error(
"MakeProject",
"Cannot open output file:%s\n",
filename.Data());
 
 4067   char *
inclist = 
new char[50000];
 
 4072   fprintf(fp,
"//////////////////////////////////////////////////////////\n");
 
 4073   fprintf(fp,
"//   This class has been generated by TFile::MakeProject\n");
 
 4074   fprintf(fp,
"//     (%s by ROOT version %s)\n",
td.AsString(),
gROOT->GetVersion());
 
 4075   fprintf(fp,
"//      from the StreamerInfo in file %s\n",
gDirectory->GetFile()->GetName());
 
 4076   fprintf(fp,
"//////////////////////////////////////////////////////////\n");
 
 4099      Error(
"GenerateHeaderFile",
"Could not open %s for appending",
sourcename.Data());
 
 
 4132      char *
rdmc = (
char*)
rdm->GetName();
 
 4137      if (
rdm->GetDataMember() != dm) 
continue;
 
 4144         if (
rdm->IsObject()) {
 
 
 4311   ::Obsolete(
"TStreamerInfo::GetStreamerElementReal", 
"v5-34-20", 
"v6-00-02");
 
 4314   if (
j < 0) 
return 0;
 
 
 4330template <
typename T>
 
 4352#if defined(_MSC_VER) && (_MSC_VER <= 1200) 
 4374#if defined(_MSC_VER) && (_MSC_VER <= 1200) 
 4380#define READ_ARRAY(TYPE_t)                               \ 
 4382            Int_t sub_instance, index;                   \ 
 4383            Int_t instance = k;                          \ 
 4385               index = instance / len;                   \ 
 4386               sub_instance = instance % len;            \ 
 4391            TYPE_t **val =(TYPE_t**)(ladd);              \ 
 4392            return T((val[sub_instance])[index]); \ 
 4410#if defined(_MSC_VER) && (_MSC_VER <= 1200) 
 
 4434template <
typename T>
 
 4443      if (i < 0) 
return 0;
 
 4461            if (
j >= nc) 
return 0;
 
 
 4476template <
typename T>
 
 4483   if (
j >= nc) 
return 0;
 
 4485   char *pointer = (
char*)
clones->UncheckedAt(
j);
 
 
 4498template <
typename T>
 
 4502   if (
j >= nc) 
return 0;
 
 4504   char *pointer = (
char*)
cont->At(
j);
 
 
 4517template <
typename T>
 
 4522   if (
j >= nc) 
return 0;
 
 4524   char **ptr = (
char**)
cont->At(
j);
 
 4525   char *pointer = *ptr;
 
 
 4536   if (
rules.empty()) 
return;
 
 4542      if( 
rule->IsRenameRule() || 
rule->IsAliasRule() )
 
 4550            if ( 
rule->GetAttributes()[0] != 0 ) {
 
 4553               if (
attr.Contains(
"owner")) {
 
 4554                  if (
attr.Contains(
"notowner")) {
 
 4581            Warning(
"InsertArtificialElements",
"For class %s in StreamerInfo %d is missing the source data member %s when trying to apply the rule:\n   %s",
 
 4589      if (!
rule) 
continue;
 
 4592      std::vector<TStreamerArtificial*> 
toAdd;
 
 4594      if (
rule->GetTarget()==0) {
 
 4602         newel->SetReadFunc( 
rule->GetReadFunctionPointer() );
 
 4603         newel->SetReadRawFunc( 
rule->GetReadRawFunctionPointer() );
 
 4606         toAdd.reserve(
rule->GetTarget()->GetEntriesFast());
 
 4617               newel->SetReadFunc( 
rule->GetReadFunctionPointer() );
 
 4618               newel->SetReadRawFunc( 
rule->GetReadRawFunctionPointer() );
 
 4646               if (
loc == -1 || (i+1)>
loc) {
 
 
 4695      while ((obj = next()))
 
 4708         Printf(
"   i=%2d, %-15s type=%3d, offset=%3d, len=%d, method=%ld%s",
 
 4733         Printf(
"   i=%2d, %-15s type=%3d, offset=%3d, len=%d, method=%ld%s",
 
 4745               Printf(
"      j=%2d, %-15s type=%3d, offset=%3d, len=%d, method=%ld%s",
 
 
 4765   char* 
p = (
char*) obj;
 
 4804            char** 
r = (
char**) 
eaddr;
 
 4819               void** 
r = (
void**) 
eaddr;
 
 4826               const char* title = 
element->GetTitle();
 
 4834                  void** 
r = (
void**) 
eaddr;
 
 4839                  void** 
r = (
void**) 
eaddr;
 
 4869                !
cle->GetCollectionProxy()) {
 
 4873               if (
cle->GetCollectionProxy())
 
 4874                  cle->GetCollectionProxy()->New(
eaddr);
 
 
 4913      Error(
"NewArray", 
"TClass pointer is null!");
 
 4919   char* 
p = (
char*) 
ary;
 
 
 4944#define DeleteBasicPointer(addr,element,name)                           \ 
 4946      name **f = (name**)(addr);                                        \ 
 4947      int n = element->GetArrayLength() ? element->GetArrayLength() : 1;\ 
 4948      for(int j=0;j<n;j++) {                                            \ 
 
 4963   char *
p = (
char*)obj;
 
 5006         void** 
r = (
void**) 
eaddr;
 
 5009               cle->Destructor(
r[
j]);
 
 5021         void** 
r = (
void**) 
eaddr;
 
 5024               cle->Destructor(
r[
j]);
 
 5030      if (etype == 
kBase) {
 
 5045      if (etype == 
kSTL) {
 
 5058               cle->GetCollectionProxy()->Clear(); 
 
 
 5095   if (obj == 0) 
return;
 
 5097   char* 
p = (
char*) obj;
 
 5103      if (allocator != 
this) {
 
 
 5121   if (
ary == 0) 
return;
 
 5128   char* memBegin = (
char*) &
r[-2];
 
 
 5170               std::string *
st = (std::string*)(pointer);
 
 
 5208   for (
Int_t k=0;k < nc;k++) {
 
 5209      char *pointer = (
char*)
clones->UncheckedAt(k);
 
 5213      if (k < nc-1) 
printf(
", ");
 
 
 5233   for (
Int_t k=0;k < nc;k++) {
 
 5234      char *pointer = (
char*)
cont->At(k);
 
 5238      if (k < nc-1) 
printf(
", ");
 
 
 5261   if (
R__b.IsReading()) {
 
 5267         R__b.ClassMember(
"TNamed");
 
 5270         R__b.ClassMember(
"fCheckSum",
"UInt_t");
 
 5272         R__b.ClassMember(
"fClassVersion",
"Int_t");
 
 5275         R__b.ClassMember(
"fElements",
"TObjArray*");
 
 5283         if (
R__b.GetParent() && 
R__b.GetVersionOwner() < 50000)
 
 5293                  switch (
el->GetType()) {
 
 5312                     (*fElements)[i] = 
rel;
 
 5331      R__b.ClassMember(
"TNamed");
 
 5333      R__b.ClassMember(
"fCheckSum",
"UInt_t");
 
 5335      R__b.ClassMember(
"fClassVersion",
"Int_t");
 
 5342      R__b.ClassMember(
"fElements",
"TObjArray*");
 
 5353            } 
else if (
el != 0) {
 
 
 5377         Warning(
"TagFile",
"This function is deprecated, use TBuffer::TagStreamerInfo instead");
 
 5382         Error(
"TagFile",
"StreamerInfo: %s number: %d out of range[0,%d] in file: %s",
 
 
 5398#define DOLOOP for (k = 0, pointer = arr[0]; k < narr; pointer = arr[++k]) 
 5484         char **val = (
char**)
ladd;
 
 5485         if (*val) 
printf(
"%s",*val);
 
 5492         printf(
"(%s*)%zx",
el ? 
el->GetClass()->GetName() : 
"unknown_type",(size_t)(*obj));
 
 5500         printf(
"(%s*)%zx",
el ? 
el->GetClass()->GetName() : 
"unknown_type",(size_t)(*obj));
 
 5532         printf(
"(%s*)0x%zx",
el ? 
el->GetClass()->GetName() : 
"unknown_type",(size_t)(*obj));
 
 5540         printf(
"(%s*)0x%zx",
el ? 
el->GetClass()->GetName() : 
"unknown_type",(size_t)(*obj));
 
 5604               std::string *
st = (std::string*)(
ladd);
 
 5610            printf(
"(unknown_type*)0x%zx",(
size_t)(
ladd));
 
 
 5692   const char *
dmTitle = 
"Emulation";
 
 5695   if (
dt && 
dt->GetType() > 0 ) {  
 
 5701            Error(
"Pair Emulation Building",
"%s is not yet supported in pair emulation",
 
 5711      static const char *
full_string_name = 
"basic_string<char,char_traits<char>,allocator<char> >";
 
 5728               el->SetSize(
sizeof(
int)); 
 
 5737         if (
clm->IsTObject()) {
 
 5744      if (
clm->IsTObject()) {
 
 
 5767      const char *
msg = 
"problematic";
 
 5772            msg = 
"not specified";
 
 5776      Error(
"GenerateInfoForPair",
 
 5777            "Called with inconsistent offset and size. For \"std::pair<%s,%s>\" the requested offset is %ld but the size is %s (%ld)",
 
 5783   pname += (pname[pname.length()-1]==
'>') ? 
" >" : 
">";
 
 
 5834         Error(
"GenerateInfoForPair", 
"The class name passed is not a pair: %s", 
pairclassname.c_str());
 
 5838   std::vector<std::string> inside;
 
 5843         Error(
"GenerateInfoForPair", 
"Could not find the pair arguments in %s", 
pairclassname.c_str());
 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
const Bool_t kIterBackward
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Bool_t operator!=(const TDatime &d1, const TDatime &d2)
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
Int_t gErrorIgnoreLevel
Error handling routines.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void input
 
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 r
 
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 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 GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t attr
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
 
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
 
R__EXTERN TVirtualMutex * gInterpreterMutex
 
static void R__WriteMoveConstructorBody(FILE *file, const TString &protoname, TIter &next)
Write down the body of the 'move' constructor.
 
static TStreamerElement * R__CreateEmulatedElement(const char *dmName, const std::string &dmFull, Int_t offset, bool silent)
 
static void R__TObjArray_InsertAt(TObjArray *arr, TObject *obj, Int_t at)
 
static void R__TObjArray_InsertAfter(TObjArray *arr, TObject *newobj, TObject *oldobj)
 
static bool R__IsUniquePtr(TStreamerElement *element)
Return true if the element is auto_ptr or unique_ptr.
 
#define READ_ARRAY(TYPE_t)
 
static void R__WriteConstructorBody(FILE *file, TIter &next)
 
#define DeleteBasicPointer(addr, element, name)
 
static constexpr int str_length(const char *str)
 
static void R__WriteMoveBodyPointersArrays(FILE *file, const TString &protoname, TIter &next)
Write down the pointers and arrays part of the body of the 'move' constructor.
 
static void R__TObjArray_InsertBefore(TObjArray *arr, TObject *newobj, TObject *oldobj)
 
static void R__WriteOddOperatorEqualBody(FILE *file, const TString &protoname, TIter &next)
Write down the body of the 'move' constructor.
 
static void R__WriteDestructorBody(FILE *file, TIter &next)
 
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
 
R__EXTERN TSystem * gSystem
 
#define R__LOCKGUARD(mutex)
 
Array of chars or bytes (8 bits per element).
 
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.
 
TClass * GetClassPointer(Bool_t load=kTRUE)
Get pointer to the base class TClass.
 
const char * GetTitle() const override
Get base class description (comment).
 
Buffer base class used for serializing objects.
 
TClassRef is used to implement a permanent reference to a TClass object.
 
static DictFuncPtr_t GetDict(const char *cname)
Given the class name returns the Dictionary() function of a class (uses hash of name).
 
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
 
TDataMember * GetDataMember(const char *datamember) const
Return pointer to datamember object with name "datamember".
 
ROOT::ESTLType GetCollectionType() const
Return the 'type' of the STL the TClass is representing.
 
void RemoveStreamerInfo(Int_t slot)
Remove and delete the StreamerInfo in the given slot.
 
Bool_t HasDataMemberInfo() const
 
void CopyCollectionProxy(const TVirtualCollectionProxy &)
Replaces the collection proxy for this class.
 
Bool_t fIsSyntheticPair
Indicates whether this class can be split or not. Values are -1, 0, 1, 2.
 
void RegisterStreamerInfo(TVirtualStreamerInfo *info)
Register the StreamerInfo in the given slot, change the State of the TClass as appropriate.
 
TVirtualStreamerInfo * GetCurrentStreamerInfo()
 
void IgnoreTObjectStreamer(Bool_t ignore=kTRUE)
When the class kIgnoreTObjectStreamer bit is set, the automatically generated Streamer will not call ...
 
TClass * GetBaseClass(const char *classname)
Return pointer to the base class "classname".
 
Longptr_t GetDataMemberOffset(const char *membername) const
return offset for member name.
 
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...
 
Bool_t HasInterpreterInfo() const
 
void BuildRealData(void *pointer=nullptr, Bool_t isTransient=kFALSE)
Build a full list of persistent data members.
 
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
 
TList * GetListOfRealData() const
 
Int_t Size() const
Return size of object of this class.
 
Bool_t CanIgnoreTObjectStreamer()
 
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
 
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
 
const TObjArray * GetStreamerInfos() const
 
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
 
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
 
Bool_t IsForeign() const
Return kTRUE is the class is Foreign (the class does not have a Streamer method).
 
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,...
 
Int_t GetBaseClassOffset(const TClass *toBase, void *address=nullptr, bool isDerivedObject=true)
 
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
 
Int_t GetClassSize() const
 
Long_t Property() const override
Returns the properties of the TClass as a bit field stored as a Long_t value.
 
Bool_t IsVersioned() const
 
void SetClassSize(Int_t sizof)
 
Version_t GetClassVersion() const
 
TRealData * GetRealData(const char *name) const
Return pointer to TRealData element with name "name".
 
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.
 
An array of clone (identical) objects.
 
static TVirtualCollectionProxy * GenEmulatedProxy(const char *class_name, Bool_t silent)
Generate emulated collection proxy for a given class.
 
static TClassStreamer * GenEmulatedClassStreamer(const char *class_name, Bool_t silent)
Generate emulated class streamer for a given collection class.
 
static Proxy_t * GenExplicitProxy(const ::ROOT::TCollectionProxyInfo &info, TClass *cl)
Generate proxy from static functions.
 
static TClassStreamer * GenExplicitClassStreamer(const ::ROOT::TCollectionProxyInfo &info, TClass *cl)
Generate class streamer from static functions.
 
virtual Int_t GetEntries() const
 
Small helper to read a TBuffer containing a TClonesArray into any valid collection.
 
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.
 
Int_t GetUnitSize() const
Get the sizeof the underlying type of the data member (i.e.
 
Bool_t IsBasic() const
Return true if data member is a basic type, e.g. char, int, long...
 
Int_t IsSTLContainer()
The return type is defined in TDictionary (kVector, kList, etc.)
 
Bool_t IsaPointer() const
Return true if data member is a pointer.
 
TDataType * GetDataType() const
 
Longptr_t GetOffset() const
Get offset from "this".
 
const char * GetTypeName() const
Get the decayed type name of this data member, removing const and volatile qualifiers,...
 
const char * GetArrayIndex() const
If the data member is pointer and has a valid array size in its comments GetArrayIndex returns a stri...
 
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).
 
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.
 
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
 
static TEnum * GetEnum(const std::type_info &ti, ESearchAction sa=kALoadAndInterpLookup)
 
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
 
const TList * GetStreamerInfoCache()
Returns the cached list of StreamerInfos used in this file.
 
TArrayC * GetClassIndex() const
 
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
 
static TString GetHeaderName(const char *name, const TList *extrainfos, Bool_t includeNested=kFALSE)
Return the header name containing the description of name.
 
static UInt_t GenerateForwardDeclaration(FILE *fp, const char *clname, char *inclist, Bool_t implementEmptyClass, Bool_t needGenericTemplate, const TList *extrainfos)
Insert a (complete) forward declaration for the class 'clname'.
 
static void AddInclude(FILE *fp, const char *header, Bool_t system, char *inclist)
Add an include statement, if it has not already been added.
 
static UInt_t GenerateIncludeForTemplate(FILE *fp, const char *clname, char *inclist, Bool_t forward, const TList *extrainfos)
Add to the header file, the #include needed for the argument of this template.
 
static void GeneratePostDeclaration(FILE *fp, const TVirtualStreamerInfo *info, char *inclist)
Add to the header file anything that need to appear after the class declaration (this includes some #...
 
static UInt_t GenerateClassPrefix(FILE *fp, const char *clname, Bool_t top, TString &protoname, UInt_t *numberOfClasses, Int_t implementEmptyClass=kFALSE, Bool_t needGenericTemplate=kFALSE)
Write the start of the class (forward) declaration.
 
static TString UpdateAssociativeToVector(const char *name)
 
Abstract base class for accessing the data-members of a class.
 
The TNamed class is the base class for all named ROOT classes.
 
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
 
const char * GetName() const override
Returns name of object.
 
void Streamer(TBuffer &) override
Stream an object of class TObject.
 
const char * GetTitle() const override
Returns title of object.
 
virtual void SetName(const char *name)
Set the name of the TNamed.
 
Int_t GetEntriesFast() const
 
void AddAt(TObject *obj, Int_t idx) override
Add object at position ids.
 
TObject * Last() const override
Return the object in the last filled slot. Returns 0 if no entries.
 
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
 
void AddLast(TObject *obj) override
Add object in the next empty slot in the array.
 
TObject * UncheckedAt(Int_t i) const
 
Bool_t IsEmpty() const override
 
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
 
Collectable string class.
 
Mother of all ROOT objects.
 
friend class TClonesArray
 
virtual const char * GetName() const
Returns name of object.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
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 ls(Option_t *option="") const
The ls function lists the contents of a class on stdout.
 
@ kCanDelete
if object in a list can be deleted
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
void Obsolete(const char *method, const char *asOfVers, const char *removedFromVers) const
Use this method to declare a method obsolete.
 
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 SetNewBaseClass(TClass *cl)
 
TVirtualStreamerInfo * GetBaseStreamerInfo() const
 
TClass * GetClassPointer() const override
Returns a pointer to the TClass of this element.
 
virtual TClass * GetClassPointer() const
Returns a pointer to the TClass of this element.
 
TClass * GetNewClass() const
 
Int_t GetArrayLength() const
 
TClass * GetClass() const
 
ActionContainer_t fActions
 
void Update(const TClass *oldcl, TClass *newcl)
Update the TClass pointer cached in this object.
 
TClass * fClass
Not Owned.
 
TStreamerElement * fElem
Not Owned.
 
Describes a persistent version of a class.
 
Int_t fNVirtualInfoLoc
! Number of virtual info location to update.
 
Int_t fOnFileClassVersion
!Class version identifier as stored on file.
 
Int_t GetSize() const override
Return total size of all persistent elements of the class (with offsets).
 
Int_t GetClassVersion() const override
 
void Destructor(void *p, Bool_t dtorOnly=kFALSE) override
Emulated destructor for this class.
 
TVirtualStreamerInfo * GenerateInfoForPair(const std::string &pairclassname, bool silent, size_t hint_pair_offset, size_t hint_pair_size) override
Generate the TClass and TStreamerInfo for the requested pair.
 
TClassStreamer * GenExplicitClassStreamer(const ::ROOT::Detail::TCollectionProxyInfo &info, TClass *cl) override
Generate class streamer from static functions.
 
TVirtualCollectionProxy * GenEmulatedProxy(const char *class_name, Bool_t silent) override
Generate emulated collection proxy for a given class.
 
Int_t fNfulldata
!number of elements
 
TCompInfo * fComp
![fNslots with less than fElements->GetEntries()*1.5 used] Compiled info
 
TVirtualCollectionProxy * GenExplicitProxy(const ::ROOT::Detail::TCollectionProxyInfo &info, TClass *cl) override
Generate proxy from static functions.
 
T GetTypedValue(char *pointer, Int_t i, Int_t j, Int_t len) const
Return value of element i in object at pointer.
 
TStreamerInfoActions::TActionSequence * fWriteMemberWiseVecPtr
! List of write action resulting from the compilation for use in member wise streaming.
 
TClassStreamer * GenEmulatedClassStreamer(const char *class_name, Bool_t silent) override
Generate emulated class streamer for a given collection class.
 
Int_t GenerateHeaderFile(const char *dirname, const TList *subClasses=nullptr, const TList *extrainfos=nullptr) override
Generate header file for the class described by this TStreamerInfo the function is called by TFile::M...
 
TStreamerInfoActions::TActionSequence * fReadText
! List of text read action resulting from the compilation, used for JSON.
 
void ls(Option_t *option="") const override
List the TStreamerElement list and also the precomputed tables if option contains the string "incOrig...
 
TCompInfo ** fCompFull
![fElements->GetEntries()]
 
TObjArray * fElements
Array of TStreamerElements.
 
void InsertArtificialElements(std::vector< const ROOT::TSchemaRule * > &rules)
Insert new members as expressed in the array of TSchemaRule(s).
 
Int_t GetOnFileClassVersion() const override
 
Int_t GetOffset(const char *) const override
Return the offset of the data member as indicated by this StreamerInfo.
 
void PrintValue(const char *name, char *pointer, Int_t i, Int_t len, Int_t lenmax=1000) const
print value of element i in object at pointer The function may be called in two ways: -method1 len < ...
 
Int_t GetDataMemberOffset(TDataMember *dm, TMemberStreamer *&streamer) const
Compute data member offset.
 
EReadWrite
Status bits See TVirtualStreamerInfo::EStatusBits for the values.
 
@ kArtificial
Cache the value in memory than is not part of the object but is accessible via a SchemaRule.
 
@ kNeedObjectForVirtualBaseClass
 
@ kUChar
Equal to TDataType's kchar.
 
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
 
T GetTypedValueSTLP(TVirtualCollectionProxy *cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
Return value of element i in object number j in a TClonesArray and eventually element k in a sub-arra...
 
T GetTypedValueSTL(TVirtualCollectionProxy *cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
Return value of element i in object number j in a TClonesArray and eventually element k in a sub-arra...
 
void BuildEmulated(TFile *file) override
Create an Emulation TStreamerInfo object.
 
void DeleteArray(void *p, Bool_t dtorOnly=kFALSE) override
Destroy an array of emulated objects, with optional delete.
 
Bool_t BuildFor(const TClass *cl) override
Check if we can build this for foreign class - do we have some rules to do that.
 
void Build(Bool_t isTransient=kFALSE) override
Build the I/O data structure for the current class version.
 
void BuildOld() override
rebuild the TStreamerInfo structure
 
TStreamerInfoActions::TActionSequence * fReadMemberWise
! List of read action resulting from the compilation for use in member wise streaming.
 
Int_t GetType(Int_t id) const
 
Int_t fClassVersion
Class version identifier.
 
Int_t fNdata
!number of optimized elements
 
void * New(void *obj=nullptr) override
An emulated object is created at address obj, if obj is null we allocate memory for the object.
 
TStreamerInfo()
Default ctor.
 
TStreamerInfoActions::TActionSequence * fReadMemberWiseVecPtr
! List of read action resulting from the compilation for use in member wise streaming.
 
TStreamerInfoActions::TActionSequence * fReadObjectWise
! List of read action resulting from the compilation.
 
TClass * GetActualClass(const void *obj) const override
Assuming that obj points to (the part of) an object that is of the type described by this streamerInf...
 
TStreamerElement * GetStreamerElementReal(Int_t i, Int_t j) const
Obsolete: this routine is obsolete and should not longer be used.
 
TClass * IsA() const override
 
TClass * fClass
!pointer to class
 
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...
 
~TStreamerInfo() override
TStreamerInfo dtor.
 
TCompInfo ** fCompOpt
![fNdata]
 
void TagFile(TFile *fFile) override
Mark the classindex of the current file as using this TStreamerInfo.
 
Int_t GetNewType(Int_t id) const
 
void SetClass(TClass *cl) override
Replace the TClass this streamerInfo is pointing to (belongs to)
 
UInt_t fCheckSum
Checksum of original class.
 
void Streamer(TBuffer &) override
Stream an object of class TStreamerInfo.
 
Int_t GetSizeElements() const
Return total size of all persistent elements of the class use GetSize if you want to get the real siz...
 
TClass * GetClass() const override
 
static std::atomic< Int_t > fgCount
Number of TStreamerInfo instances.
 
T GetTypedValueClones(TClonesArray *clones, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
 
UInt_t GenerateIncludes(FILE *fp, char *inclist, const TList *extrainfos)
Add to the header file, the #include need for this class.
 
void ComputeSize()
Compute total size of all persistent elements of the class.
 
Int_t fNumber
!Unique identifier
 
void PrintValueSTL(const char *name, TVirtualCollectionProxy *cont, Int_t i, Int_t eoffset, Int_t lenmax=1000) const
Print value of element i in a TClonesArray.
 
TStreamerInfoActions::TActionSequence * fWriteObjectWise
! List of write action resulting from the compilation.
 
void CallShowMembers(const void *obj, TMemberInspector &insp, Bool_t isTransient) const override
Emulated a call ShowMembers() on the obj of this class type, passing insp and parent.
 
void Clear(Option_t *="") override
If opt contains 'built', reset this StreamerInfo as if Build or BuildOld was never called on it (usef...
 
TObjArray * GetElements() const override
 
Int_t fSize
!size of the persistent class
 
static T GetTypedValueAux(Int_t type, void *ladd, int k, Int_t len)
Get the value from inside a collection.
 
void GenerateDeclaration(FILE *fp, FILE *sfp, const TList *subClasses, Bool_t top=kTRUE)
Write the Declaration of class.
 
static void PrintValueAux(char *ladd, Int_t atype, TStreamerElement *aElement, Int_t aleng, Int_t *count)
print value of element in object at pointer, type atype, leng aleng or *count The function may be cal...
 
void * NewArray(Long_t nElements, void *ary=nullptr) override
An array of emulated objects is created at address ary, if ary is null, we allocate memory for the ar...
 
TStreamerElement * GetStreamerElement(const char *datamember, Int_t &offset) const override
Return the StreamerElement of "datamember" inside our class or any of its base classes.
 
UInt_t GetCheckSum() const override
 
void Compile() override
loop on the TStreamerElement list regroup members with same type Store predigested information into l...
 
void BuildCheck(TFile *file=nullptr, Bool_t load=kTRUE) override
Check if built and consistent with the class dictionary.
 
Bool_t CompareContent(TClass *cl, TVirtualStreamerInfo *info, Bool_t warn, Bool_t complete, TFile *file) override
Return True if the current StreamerInfo in cl or info is equivalent to this TStreamerInfo.
 
TStreamerInfoActions::TActionSequence * fWriteMemberWise
! List of write action resulting from the compilation for use in member wise streaming.
 
Int_t fNslots
!total number of slots in fComp.
 
void ForceWriteInfo(TFile *file, Bool_t force=kFALSE) override
Recursively mark streamer infos for writing to a file.
 
Version_t fOldVersion
! Version of the TStreamerInfo object read from the file
 
void DestructorImpl(void *p, Bool_t dtorOnly)
Internal part of the destructor.
 
TStreamerInfoActions::TActionSequence * fWriteText
! List of text write action resulting for the compilation, used for JSON.
 
ULong_t * fVirtualInfoLoc
![fNVirtualInfoLoc] Location of the pointer to the TStreamerInfo inside the object (when emulated)
 
void Update(const TClass *oldClass, TClass *newClass) override
function called by the TClass constructor when replacing an emulated class by the real class
 
void PrintValueClones(const char *name, TClonesArray *clones, Int_t i, Int_t eoffset, Int_t lenmax=1000) const
Print value of element i in a TClonesArray.
 
void ToLower()
Change string to lower-case.
 
void Clear()
Clear string without changing its capacity.
 
const char * Data() const
 
TString & Append(const char *cs)
 
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
 
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
 
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 EDataType GetType() const =0
If the value type is a fundamental data type, return its type (see enumeration EDataType).
 
@ kCustomAlloc
The collection has a custom allocator.
 
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 Int_t GetCollectionType() const =0
Return the type of the proxied collection (see enumeration TClassEdit::ESTLType)
 
Abstract Interface class describing Streamer information for one class.
 
Bool_t fIsBuilt
true if the StreamerInfo has been optimized
 
Bool_t IsCompiled() const
 
std::atomic< Bool_t > fIsCompiled
true if the StreamerInfo has been 'built' (i.e. has all the StreamerElements it should have)
 
static const char * GetElementCounterStart(const char *dmTitle)
Given a comment/title declaring an array counter, for example:
 
static TStreamerBasicType * GetElementCounter(const char *countName, TClass *cl)
Get pointer to a TStreamerBasicType in TClass *cl static function.
 
virtual TObjArray * GetElements() const =0
 
void ResetClassVersion(TClass *, const char *, Short_t)
Global function to update the version number.
 
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)
 
std::string GetLong64_Name(const char *original)
Replace 'long long' and 'unsigned long long' by 'Long64_t' and 'ULong64_t'.
 
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 GetStdArrayProperties(const char *typeName, std::string &typeNameBuf, std::array< int, 5 > &maxIndices, int &ndim)
 
std::string GetNameForIO(const std::string &templateInstanceName, TClassEdit::EModType mode=TClassEdit::kNone, bool *hasChanged=nullptr)
 
int GetSplit(const char *type, std::vector< std::string > &output, int &nestedLoc, EModType mode=TClassEdit::kNone)
Stores in output (after emptying it) the split type.
 
bool IsUniquePtr(std::string_view name)
 
bool IsSTLBitset(const char *type)
Return true is the name is std::bitset<number> or bitset<number>