39# define INLINE_TEMPLATE_ARGS 
   41# define INLINE_TEMPLATE_ARGS inline 
   54      return isEmulated || (isVector && hasDefaultAlloc);
 
   57   template <
typename From>
 
   58   struct WithFactorMarker {
 
   62   template <
typename From>
 
   63   struct NoFactorMarker {
 
  105      printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d," 
  106             " %s, offset=%d (%s), elemnId=%d \n",
 
  122         printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d," 
  123                " %s, bufpos=%d, arr=%p, offset=%d (%s)\n",
 
  133      printf(
"TLoopConfiguration: unconfigured\n");
 
  142      void PrintDebug(
TBuffer &, 
void *)
 const {
 
  158      void PrintDebug(
TBuffer &, 
void *)
 const {
 
  164         printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d," 
  165                " %s, offset=%d (%s)\n",
 
  170      void AddToOffset(
Int_t delta)
 
  192      char *obj = (
char*)addr;
 
  193      TGenericConfiguration *conf = (TGenericConfiguration*)config;
 
  199      char *obj = (
char*)addr;
 
  200      TGenericConfiguration *conf = (TGenericConfiguration*)config;
 
  201      return ((
TStreamerInfo*)conf->fInfo)->WriteBufferAux(buf, &obj, &(conf->fCompInfo),  0,  1,  1, config->
fOffset, 2);
 
  204   template <
typename T>
 
  207      T *
x = (T*)( ((
char*)addr) + config->
fOffset );
 
  214      TBitsConfiguration *conf = (TBitsConfiguration*)config;
 
  226            uid = ( obj->
GetUniqueID() & 0xffffff) + (gpid<<24);
 
  247   template <
typename T>
 
  250      T *
x = (T *)(((
char *)addr) + config->
fOffset);
 
  258      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  266      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  274      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  282      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  292      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  299      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  306      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  314      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  327      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  334      void *
x = (
void *)(((
char *)addr) + config->
fOffset);
 
  341   template<
bool kIsTextT>
 
  366            char **contp = (
char **)((
char *)addr + ioffset);
 
  368               char *cont = contp[j];
 
  370               Int_t nobjects = cont ? proxy->
Size() : 0;
 
  384      } 
else if (pstreamer == 
nullptr) {
 
  386         char **contp = (
char **)((
char *)addr + ioffset);
 
  388            char *cont = contp[j];
 
  404   template<
bool kIsTextT>
 
  427         if( vers < 9 && newClass && newClass!=oldClass ) {
 
  428            Error( 
"ReadBuffer", 
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
 
  452               void **contp = (
void**)((
char *) addr + ioffset);
 
  454                  void *cont = contp[j];
 
  456                     contp[j] = cle->
New();
 
  462                  env = newProxy->
Allocate(nobjects,
true);
 
  475      } 
else if (pstreamer == 
nullptr) {
 
  477         void **contp = (
void **)((
char *)addr + ioffset);
 
  479            void *cont = contp[j];
 
  480            if (cont == 
nullptr) {
 
  485               contp[j] = cle->
New();
 
  501   template<
bool kIsTextT>
 
  518            (*pstreamer)(buf, (
char *) addr  + ioffset , *counter);
 
  520         buf.SetByteCount(pos, 
kTRUE);
 
  538            fileVersion = 
file->GetVersion();
 
  543      if (fileVersion > 51508) {
 
  553               char** pp = (
char**) ((
char *) addr  + ioffset );
 
  592               char** pp = (
char**) ((
char *) addr  + ioffset );
 
  616                        char** 
r = (
char**) pp[ndx];
 
  634   template<
bool kIsTextT>
 
  657            (*pstreamer)(buf, (
char *) addr  + ioffset , *counter);
 
  675            fileVersion = 
file->GetVersion();
 
  682      if (fileVersion > 51508) {
 
  687         Int_t vlen = *((
Int_t *)((
char *)addr  + eoffset  +
 
  695         char **pp = (
char **)((
char *)addr  + ioffset );
 
  748                  pp[ndx] = (
char *)cl->
NewArray(vlen);
 
  750                     Error(
"ReadBuffer", 
"Memory allocation failed!\n");
 
  757                  pp[ndx] = (
char *)
new char *[vlen];
 
  759                     Error(
"ReadBuffer", 
"Memory allocation failed!\n");
 
  763                  memset(pp[ndx], 0, vlen * 
sizeof(
char *)); 
 
  780         Int_t vlen = *((
Int_t *)((
char *)addr  + eoffset  +
 
  788         char **pp = (
char **)((
char *)addr  + ioffset );
 
  838                  pp[ndx] = (
char *)cl->
NewArray(vlen);
 
  840                     Error(
"ReadBuffer", 
"Memory allocation failed!\n");
 
  847                  pp[ndx] = (
char *)
new char *[vlen];
 
  849                     Error(
"ReadBuffer", 
"Memory allocation failed!\n");
 
  853                  memset(pp[ndx], 0, vlen * 
sizeof(
char *)); 
 
  866                  char **
r = (
char **)pp[ndx];
 
  870                     r[
v] = (
char *)cl->
New();
 
  892      TConfWithFactor(
TVirtualStreamerInfo *info, 
UInt_t id, 
TCompInfo_t *compinfo, 
Int_t offset, 
Double_t factor, 
Double_t xmin) : 
TConfiguration(info,
id,compinfo,offset),fFactor(factor),fXmin(
xmin) {};
 
  896   template <
typename T>
 
  902      TConfWithFactor *conf = (TConfWithFactor *)config;
 
  915   template <
typename T>
 
  920      TConfNoFactor *conf = (TConfNoFactor *)config;
 
  921      Int_t nbits = conf->fNbits;
 
  933      ((
TString*)(((
char*)addr)+config->
fOffset))->TString::Streamer(buf);
 
  943      ((
TObject*)(((
char*)addr)+config->
fOffset))->TObject::Streamer(buf);
 
  955      static const TClass *TNamed_cl = TNamed::Class();
 
  987         TConfiguration(info,
id,compinfo,offset,length), fOldClass(oldClass), fNewClass(oldClass), fStreamer(0), 
fTypeName(type_name), fIsSTLBase(isbase),
 
  988         fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) { 
Init(); }
 
  991         TConfiguration(info,
id,compinfo,offset,length), fOldClass(oldClass), fNewClass(newClass), fStreamer(0), 
fTypeName(type_name), fIsSTLBase(isbase),
 
  992         fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) { 
Init(); }
 
  995         TConfiguration(info,
id,compinfo,offset,length), fOldClass(oldClass), fNewClass(oldClass), fStreamer(streamer), 
fTypeName(type_name), fIsSTLBase(isbase),
 
  996         fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) { 
Init(); }
 
  999         TConfiguration(info,
id,compinfo,offset,length), fOldClass(oldClass), fNewClass(newClass), fStreamer(streamer), 
fTypeName(type_name), fIsSTLBase(isbase),
 
 1000         fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) { 
Init(); }
 
 1005   class TConfSTLWithFactor : 
public TConfigSTL {
 
 1010      TConfSTLWithFactor(TConfigSTL *orig, 
Double_t factor, 
Double_t xmin) : TConfigSTL(*orig),fFactor(factor),fXmin(
xmin) {};
 
 1014   class TConfSTLNoFactor : 
public TConfigSTL {
 
 1018      TConfSTLNoFactor(TConfigSTL *orig, 
Int_t nbits) : TConfigSTL(*orig),fNbits(nbits) {};
 
 1030      virtual ~TVectorLoopConfig() {};
 
 1033         printf(
"TVectorLoopConfig: increment=%ld\n",fIncrement);
 
 1036      void* GetFirstAddress(
void *start, 
const void * )
 const 
 1051      virtual ~TAssocLoopConfig() {};
 
 1058      void* GetFirstAddress(
void *start, 
const void * )
 const 
 1098      virtual ~TGenericLoopConfig() {};
 
 1105      void* GetFirstAddress(
void *start_collection, 
const void *end_collection)
 const 
 1110         void *iter = fCopyIterator(&iterator,start_collection);
 
 1111         void *arr0 = fNext(iter,end_collection);
 
 1112         if (iter != &iterator[0]) {
 
 1113            fDeleteIterator(iter);
 
 1123      TConfigSTL *config = (TConfigSTL*)conf;
 
 1128         TClass *oldClass = config->fOldClass;
 
 1141         void* alternative = oldProxy->
Allocate(nobjects,
true);
 
 1147            void *begin = &(startbuf[0]);
 
 1148            void *end = &(endbuf[0]);
 
 1149            config->fCreateIterators(alternative, &begin, &end, oldProxy);
 
 1153            if (begin != &(startbuf[0])) {
 
 1155               config->fDeleteTwoIterators(begin,end);
 
 1158         oldProxy->
Commit(alternative);
 
 1162         TClass *oldClass = config->fOldClass;
 
 1173         void* env = oldProxy->
Allocate(nobjects,
true);
 
 1175         if (nobjects || vers < 7 ) {
 
 1189      TConfigSTL *config = (TConfigSTL*)conf;
 
 1194         TClass *oldClass = config->fOldClass;
 
 1206         int objectSize = oldClass->
Size();
 
 1207         char *obj = (
char*)addr;
 
 1208         char *endobj = obj + conf->
fLength*objectSize;
 
 1210         for(; obj<endobj; obj+=objectSize) {
 
 1214            void* alternative = oldProxy->
Allocate(nobjects,
true);
 
 1218               void *begin = &(startbuf[0]);
 
 1219               void *end = &(endbuf[0]);
 
 1220               config->fCreateIterators(alternative, &begin, &end, oldProxy);
 
 1224               if (begin != &(startbuf[0])) {
 
 1226                  config->fDeleteTwoIterators(begin,end);
 
 1229            oldProxy->
Commit(alternative);
 
 1234         TClass *oldClass = config->fOldClass;
 
 1242         int objectSize = oldClass->
Size();
 
 1243         char *obj = (
char*)addr;
 
 1244         char *endobj = obj + conf->
fLength*objectSize;
 
 1246         for(; obj<endobj; obj+=objectSize) {
 
 1250            void* env = oldProxy->
Allocate(nobjects,
true);
 
 1252            if (nobjects || vers < 7 ) {
 
 1267      TConfigSTL *config = (TConfigSTL*)conf;
 
 1271      TClass *newClass = config->fNewClass;
 
 1272      TClass *oldClass = config->fOldClass;
 
 1275         Error( 
"ReadSTLMemberWiseChangedClass", 
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
 
 1287         void* alternative = newProxy->
Allocate(nobjects,
true);
 
 1292            void *begin = &(startbuf[0]);
 
 1293            void *end = &(endbuf[0]);
 
 1294            config->fCreateIterators( alternative, &begin, &end, newProxy);
 
 1298            if (begin != &(startbuf[0])) {
 
 1300               config->fDeleteTwoIterators(begin,end);
 
 1303         newProxy->
Commit(alternative);
 
 1311      TConfigSTL *config = (TConfigSTL*)conf;
 
 1315      TClass *newClass = config->fNewClass;
 
 1316      TClass *oldClass = config->fOldClass;
 
 1319         Error( 
"ReadSTLMemberWiseChangedClass", 
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
 
 1328         int objectSize = newClass->
Size();
 
 1329         char *obj = (
char*)addr;
 
 1330         char *endobj = obj + conf->
fLength*objectSize;
 
 1332         for(; obj<endobj; obj+=objectSize) {
 
 1336            void* alternative = newProxy->
Allocate(nobjects,
true);
 
 1341               void *begin = &(startbuf[0]);
 
 1342               void *end = &(endbuf[0]);
 
 1343               config->fCreateIterators( alternative, &begin, &end, newProxy);
 
 1347               if (begin != &(startbuf[0])) {
 
 1349                  config->fDeleteTwoIterators(begin,end);
 
 1352            newProxy->
Commit(alternative);
 
 1360      TConfigSTL *config = (TConfigSTL*)conf;
 
 1366      TConfigSTL *config = (TConfigSTL*)conf;
 
 1367      (*config->fStreamer)(buf,addr,conf->
fLength);
 
 1373      TConfigSTL *config = (TConfigSTL*)conf;
 
 1376      if (config->fIsSTLBase || vers == 0) {
 
 1386      TConfigSTL *config = (TConfigSTL*)conf;
 
 1389      if (config->fIsSTLBase || vers == 0) {
 
 1392      (*config->fStreamer)(buf,addr,conf->
fLength);
 
 1399      TConfigSTL *config = (TConfigSTL*)conf;
 
 1403         memberwise(buf,((
char*)addr)+config->fOffset,config, vers);
 
 1405         objectwise(buf,((
char*)addr)+config->fOffset,config, vers, start);
 
 1411   template <
typename From, 
typename To>
 
 1412   struct ConvertBasicType {
 
 1418         *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
 
 1423   template <
typename To>
 
 1424   struct ConvertBasicType<BitsMarker,To> {
 
 1435         *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
 
 1440   template <
typename From, 
typename To>
 
 1441   struct ConvertBasicType<WithFactorMarker<From>,To> {
 
 1445         TConfWithFactor *conf = (TConfWithFactor *)config;
 
 1448         *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
 
 1453   template <
typename From, 
typename To>
 
 1454   struct ConvertBasicType<NoFactorMarker<From>,To> {
 
 1458         TConfNoFactor *conf = (TConfNoFactor *)config;
 
 1461         *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
 
 1472         TConfiguration(info, -1, nullptr, offset), fOnfileObject(onfileObject)
 
 1475      virtual void Print()
 const {
 
 1478            printf(
"StreamerInfoAction, class:%s, PushDataCache offset=%d\n",
 
 1481            printf(
"StreamerInfoAction, class:%s, PopDataCache offset=%d\n",
 
 1484      virtual void PrintDebug(
TBuffer &buffer, 
void *
object)
 const {
 
 1487            printf(
"StreamerInfoAction, class:%s, %sDataCache, bufpos=%d, arr=%p, offset=%d, onfileObject=%p\n",
 
 1496      TConfigurationPushDataCache *config = (TConfigurationPushDataCache*)conf;
 
 1497      auto onfileObject = config->fOnfileObject;
 
 1500      b.PushDataCache( onfileObject );
 
 1507      TConfigurationPushDataCache *config = (TConfigurationPushDataCache*)conf;
 
 1508      auto onfileObject = config->fOnfileObject;
 
 1511      b.PushDataCache( onfileObject );
 
 1518      TConfigurationPushDataCache *config = (TConfigurationPushDataCache*)conf;
 
 1519      auto onfileObject = config->fOnfileObject;
 
 1524      onfileObject->SetSize(
n);
 
 1525      b.PushDataCache( onfileObject );
 
 1556      virtual void PrintDebug(
TBuffer &
b, 
void *addr)
 const 
 1562            fprintf(stdout,
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d," 
 1563                   " %s, bufpos=%d, arr=%p, eoffset=%d, Redirect=%p\n",
 
 1565                   aElement->
ClassName(),
b.Length(),addr, 0,
b.PeekDataCache() ? 
b.PeekDataCache()->GetObjectAt(0) : 0);
 
 1569      virtual ~TConfigurationUseCache() {};
 
 1571         TConfigurationUseCache *copy = 
new TConfigurationUseCache(*
this);
 
 1579      TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
 
 1581      Int_t bufpos = 
b.Length();
 
 1586         Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
 
 1587         char *ptr = (
char*)addr;
 
 1590         config->fAction(
b, (*cached)[0]);
 
 1593      if (config->fNeedRepeat) {
 
 1594         b.SetBufferOffset(bufpos);
 
 1601      TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
 
 1602      Int_t bufpos = 
b.Length();
 
 1608         Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
 
 1609         char *ptr = (
char*)start;
 
 1610         UInt_t n = (((
void**)end)-((
void**)start));
 
 1613         TVectorLoopConfig cached_config( 
nullptr, cached->
fClass->
Size(),  
kTRUE );
 
 1614         void *cached_start = (*cached)[0];
 
 1615         void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.fIncrement;
 
 1616         config->fAction(
b,cached_start,cached_end,&cached_config);
 
 1619      if (config->fNeedRepeat) {
 
 1620         b.SetBufferOffset(bufpos);
 
 1627      TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
 
 1629      Int_t bufpos = 
b.Length();
 
 1634         Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
 
 1635         char *ptr = (
char*)start;
 
 1636         UInt_t n = (((
char*)end)-((
char*)start))/((TVectorLoopConfig*)loopconf)->fIncrement;
 
 1639         TVectorLoopConfig cached_config( 
nullptr, cached->
fClass->
Size(),  
kTRUE );
 
 1640         void *cached_start = (*cached)[0];
 
 1641         void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.fIncrement;
 
 1642         config->fAction(
b,cached_start,cached_end,&cached_config);
 
 1645      if (config->fNeedRepeat) {
 
 1646         b.SetBufferOffset(bufpos);
 
 1653      TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
 
 1655      Int_t bufpos = 
b.Length();
 
 1662         Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
 
 1666         TVectorLoopConfig cached_config( 
nullptr, cached->
fClass->
Size(),  
kTRUE );
 
 1667         void *cached_start = (*cached)[0];
 
 1668         void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.fIncrement;
 
 1669         config->fAction(
b,cached_start,cached_end,&cached_config);
 
 1672      if (config->fNeedRepeat) {
 
 1673         b.SetBufferOffset(bufpos);
 
 1714   struct VectorLooper {
 
 1716      template <
typename T>
 
 1719         const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1720         iter = (
char*)iter + config->
fOffset;
 
 1721         end = (
char*)end + config->
fOffset;
 
 1722         for(; iter != end; iter = (
char*)iter + incr ) {
 
 1723            T *
x = (T*) ((
char*) iter);
 
 1729      template <
typename From, 
typename To>
 
 1730      struct ConvertBasicType {
 
 1735            const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1736            iter = (
char*)iter + config->
fOffset;
 
 1737            end = (
char*)end + config->
fOffset;
 
 1738            for(; iter != end; iter = (
char*)iter + incr ) {
 
 1740               *(To*)( ((
char*)iter) ) = (To)temp;
 
 1746      template <
typename To>
 
 1747      struct ConvertBasicType<BitsMarker,To> {
 
 1752            const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1753            iter = (
char*)iter + config->
fOffset;
 
 1754            end = (
char*)end + config->
fOffset;
 
 1755            for(; iter != end; iter = (
char*)iter + incr ) {
 
 1762               *(To*)( ((
char*)iter) ) = (To)temp;
 
 1768      template <
typename From, 
typename To>
 
 1769      struct ConvertBasicType<WithFactorMarker<From>,To> {
 
 1773            TConfWithFactor *conf = (TConfWithFactor *)config;
 
 1775            const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1776            iter = (
char*)iter + config->
fOffset;
 
 1777            end = (
char*)end + config->
fOffset;
 
 1778            for(; iter != end; iter = (
char*)iter + incr ) {
 
 1780               *(To*)( ((
char*)iter) ) = (To)temp;
 
 1786      template <
typename From, 
typename To>
 
 1787      struct ConvertBasicType<NoFactorMarker<From>,To> {
 
 1791            TConfNoFactor *conf = (TConfNoFactor *)config;
 
 1793            const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1794            iter = (
char*)iter + config->
fOffset;
 
 1795            end = (
char*)end + config->
fOffset;
 
 1796            for(; iter != end; iter = (
char*)iter + incr ) {
 
 1798               *(To*)( ((
char*)iter) ) = (To)temp;
 
 1804      template <
typename T>
 
 1807         const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1808         iter = (
char*)iter + config->
fOffset;
 
 1809         end = (
char*)end + config->
fOffset;
 
 1810         for(; iter != end; iter = (
char*)iter + incr ) {
 
 1811            T *
x = (
T*) ((
char*) iter);
 
 1817      template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
 
 1820         const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1823         for(
void *iter = start; iter != end; iter = (
char*)iter + incr ) {
 
 1824            iter_action(buf, iter, config);
 
 1834         UInt_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1835         UInt_t n = (((
char*)end)-((
char*)start))/incr;
 
 1836         char **arrptr = 
new char*[
n];
 
 1838         for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
 
 1839            arrptr[i] = (
char*)iter;
 
 1871         UInt_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1872         UInt_t n = (((
char*)end)-((
char*)start))/incr;
 
 1873         char **arrptr = 
new char*[
n];
 
 1875         for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
 
 1876            arrptr[i] = (
char*)iter;
 
 1887         UInt_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
 
 1888         UInt_t n = (((
char*)end)-((
char*)start))/incr;
 
 1889         char **arrptr = 
new char*[
n];
 
 1891         for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
 
 1892            arrptr[i] = (
char*)iter;
 
 1899      template <
typename T>
 
 1904         TConfigSTL *config = (TConfigSTL*)conf;
 
 1906          buf.
ReadVersion(&start, &count, config->fOldClass);
 
 1908         std::vector<T> *
const vec = (std::vector<T>*)(((
char*)addr)+config->fOffset);
 
 1911         vec->resize(nvalues);
 
 1913#ifdef R__VISUAL_CPLUSPLUS 
 1919         T *begin = &(*vec->begin());
 
 1930         TConfigSTL *config = (TConfigSTL*)conf;
 
 1932          buf.
ReadVersion(&start, &count, config->fOldClass);
 
 1934         std::vector<bool> *
const vec = (std::vector<bool>*)(((
char*)addr)+config->fOffset);
 
 1937         vec->resize(nvalues);
 
 1939         bool *items = 
new bool[nvalues];
 
 1941         for(
Int_t i = 0 ; i < nvalues; ++i) {
 
 1942            (*vec)[i] = items[i];
 
 1961         TConfigSTL *config = (TConfigSTL*)conf;
 
 1963          buf.
ReadVersion(&start, &count, config->fOldClass);
 
 1965         std::vector<float> *
const vec = (std::vector<float>*)(((
char*)addr)+config->fOffset);
 
 1968         vec->resize(nvalues);
 
 1970#ifdef R__VISUAL_CPLUSPLUS 
 1976         float *begin = &(*vec->begin());
 
 1987         TConfigSTL *config = (TConfigSTL*)conf;
 
 1989          buf.
ReadVersion(&start, &count, config->fOldClass);
 
 1991         std::vector<double> *
const vec = (std::vector<double>*)(((
char*)addr)+config->fOffset);
 
 1994         vec->resize(nvalues);
 
 1996#ifdef R__VISUAL_CPLUSPLUS 
 2002         double *begin = &(*vec->begin());
 
 2009      template <
typename From, 
typename To>
 
 2010      struct ConvertCollectionBasicType {
 
 2015            TConfigSTL *config = (TConfigSTL*)conf;
 
 2017             buf.
ReadVersion(&start, &count, config->fOldClass);
 
 2019            std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->fOffset);
 
 2022            vec->resize(nvalues);
 
 2024            From *temp = 
new From[nvalues];
 
 2026            for(
Int_t ind = 0; ind < nvalues; ++ind) {
 
 2027               (*vec)[ind] = (To)temp[ind];
 
 2036      template <
typename From, 
typename To>
 
 2037      struct ConvertCollectionBasicType<NoFactorMarker<From>,To> {
 
 2042            TConfigSTL *config = (TConfigSTL*)conf;
 
 2044             buf.
ReadVersion(&start, &count, config->fOldClass);
 
 2046            std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->fOffset);
 
 2049            vec->resize(nvalues);
 
 2051            From *temp = 
new From[nvalues];
 
 2053            for(
Int_t ind = 0; ind < nvalues; ++ind) {
 
 2054               (*vec)[ind] = (To)temp[ind];
 
 2063      template <
typename To>
 
 2068         TConfigSTL *config = (TConfigSTL*)conf;
 
 2070          buf.
ReadVersion(&start, &count, config->fOldClass);
 
 2072         std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->fOffset);
 
 2075         vec->resize(nvalues);
 
 2079         for(
Int_t ind = 0; ind < nvalues; ++ind) {
 
 2080            (*vec)[ind] = (To)temp[ind];
 
 2090   struct VectorPtrLooper {
 
 2092      template <
typename T>
 
 2097         for(; iter != end; iter = (
char*)iter + 
sizeof(
void*) ) {
 
 2098            T *
x = (
T*)( ((
char*) (*(
void**)iter) ) + offset );
 
 2104      template <
typename From, 
typename To>
 
 2105      struct ConvertBasicType {
 
 2111            for(; iter != end; iter = (
char*)iter + 
sizeof(
void*) ) {
 
 2113               To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
 
 2120      template <
typename To>
 
 2121      struct ConvertBasicType<BitsMarker,To> {
 
 2127            for(; iter != end; iter = (
char*)iter + 
sizeof(
void*) ) {
 
 2134               To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
 
 2141      template <
typename From, 
typename To>
 
 2142      struct ConvertBasicType<WithFactorMarker<From>,To> {
 
 2146            TConfWithFactor *conf = (TConfWithFactor *)config;
 
 2149            for(; iter != end; iter = (
char*)iter + 
sizeof(
void*) ) {
 
 2151               To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
 
 2158      template <
typename From, 
typename To>
 
 2159      struct ConvertBasicType<NoFactorMarker<From>,To> {
 
 2163            TConfNoFactor *conf = (TConfNoFactor *)config;
 
 2166            for(; iter != end; iter = (
char*)iter + 
sizeof(
void*) ) {
 
 2168               To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
 
 2175      template <
typename T>
 
 2180         for(; iter != end; iter = (
char*)iter + 
sizeof(
void*) ) {
 
 2181            T *
x = (
T*)( ((
char*) (*(
void**)iter) ) + offset );
 
 2187      template <Int_t (*action)(TBuffer&,
void *,const TConfiguration*)>
 
 2190         for(
void *iter = start; iter != end; iter = (
char*)iter + 
sizeof(
void*) ) {
 
 2191            action(buf, *(
void**)iter, config);
 
 2201         return GenericRead(buf,start,end,config);
 
 2206         Int_t n = ( ((
void**)end) - ((
void**)iter) );
 
 2207         char **arr = (
char**)iter;
 
 2213         Int_t n = ( ((
void**)end) - ((
void**)iter) );
 
 2214         char **arr = (
char**)iter;
 
 2220   struct AssociativeLooper {
 
 2222      template <
typename T>
 
 2238      template <
typename T,
void (*action)(TBuffer&,
void *,Int_t)>
 
 2243         TConfigSTL *config = (TConfigSTL*)conf;
 
 2245          buf.
ReadVersion(&start, &count, config->fOldClass);
 
 2247         TClass *newClass = config->fNewClass;
 
 2253         void* alternative = newProxy->
Allocate(nvalues,
true);
 
 2257            void *begin = &(startbuf[0]);
 
 2258            void *end = &(endbuf[0]);
 
 2259            config->fCreateIterators(alternative, &begin, &end, newProxy);
 
 2263            action(buf,begin,nvalues);
 
 2265            if (begin != &(startbuf[0])) {
 
 2267               config->fDeleteTwoIterators(begin,end);
 
 2270         newProxy->
Commit(alternative);
 
 2278         return ReadNumericalCollection<bool,SimpleRead<bool> >(buf,addr,conf);
 
 2283         return ReadNumericalCollection<Float_t,SimpleReadFloat16 >(buf,addr,conf);
 
 2288         return ReadNumericalCollection<Double_t,SimpleReadDouble32 >(buf,addr,conf);
 
 2291      template <
typename T>
 
 2294         return ReadNumericalCollection<T,SimpleRead<T> >(buf,addr,conf);
 
 2297      template <
typename From, 
typename To>
 
 2298      struct ConvertRead {
 
 2301            From *temp = 
new From[nvalues];
 
 2303            To *vec = (To*)addr;
 
 2304            for(
Int_t ind = 0; ind < nvalues; ++ind) {
 
 2305               vec[ind] = (To)temp[ind];
 
 2311      template <
typename From, 
typename To>
 
 2312      struct ConvertRead<NoFactorMarker<From>,To> {
 
 2315            From *temp = 
new From[nvalues];
 
 2317            To *vec = (To*)addr;
 
 2318            for(
Int_t ind = 0; ind < nvalues; ++ind) {
 
 2319               vec[ind] = (To)temp[ind];
 
 2325      template <
typename From, 
typename To>
 
 2326      struct ConvertRead<WithFactorMarker<From>,To> {
 
 2329            From *temp = 
new From[nvalues];
 
 2332            To *vec = (To*)addr;
 
 2333            for(
Int_t ind = 0; ind < nvalues; ++ind) {
 
 2334               vec[ind] = (To)temp[ind];
 
 2340      template <
typename From, 
typename To>
 
 2341      struct ConvertCollectionBasicType {
 
 2344            return ReadNumericalCollection<To,ConvertRead<From,To>::Action >(buf,addr,conf);
 
 2350   struct GenericLooper {
 
 2352      template <
typename T>
 
 2355         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2357         Next_t next = loopconfig->fNext;
 
 2361         void *iter = loopconfig->fCopyIterator(iterator,start);
 
 2363         while( (addr = next(iter,end)) ) {
 
 2364            T *
x =  (
T*)( ((
char*)addr) + offset );
 
 2367         if (iter != &iterator[0]) {
 
 2368            loopconfig->fDeleteIterator(iter);
 
 2373      template <
typename T>
 
 2376         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2378         Next_t next = loopconfig->fNext;
 
 2382         void *iter = loopconfig->fCopyIterator(iterator,start);
 
 2384         while( (addr = next(iter,end)) ) {
 
 2385            T *
x =  (
T*)( ((
char*)addr) + offset );
 
 2388         if (iter != &iterator[0]) {
 
 2389            loopconfig->fDeleteIterator(iter);
 
 2394      template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
 
 2397         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2400         Next_t next = loopconfig->fNext;
 
 2403         void *iter = loopconfig->fCopyIterator(&iterator,start);
 
 2405         while( (addr = next(iter,end)) ) {
 
 2406            iter_action(buf, addr, config);
 
 2408         if (iter != &iterator[0]) {
 
 2409            loopconfig->fDeleteIterator(iter);
 
 2414      template <
typename From, 
typename To>
 
 2418            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2421            Next_t next = loopconfig->fNext;
 
 2424            void *iter = loopconfig->fCopyIterator(&iterator,start);
 
 2426            while( (addr = next(iter,end)) ) {
 
 2427               To *
x =  (To*)( ((
char*)addr) + offset );
 
 2431            if (iter != &iterator[0]) {
 
 2432               loopconfig->fDeleteIterator(iter);
 
 2437      template <
typename From, 
typename To>
 
 2444            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2445            Next_t next = loopconfig->fNext;
 
 2449            while( (addr = next(iter,end)) ) {
 
 2450               To *
x =  (To*)(addr);
 
 2457      template <
typename From, 
typename To, 
template <
typename F, 
typename T> 
class Converter = Generic >
 
 2458      struct ConvertBasicType {
 
 2463            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2467            From *items = 
new From[nvalues];
 
 2469            Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
 
 2475      template <
typename To>
 
 2476      struct ConvertBasicType<BitsMarker, To, Generic> {
 
 2481            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2486            UInt_t *items = items_storage;
 
 2489            Next_t next = loopconfig->fNext;
 
 2492            void *iter = loopconfig->fCopyIterator(&iterator,start);
 
 2494            while( (addr = next(iter,end)) ) {
 
 2499               To *
x =  (To*)( ((
char*)addr) + offset );
 
 2503            if (iter != &iterator[0]) {
 
 2504               loopconfig->fDeleteIterator(iter);
 
 2507            delete [] items_storage;
 
 2512      template <
typename From, 
typename To, 
template <
typename F, 
typename T> 
class Converter >
 
 2513      struct ConvertBasicType<WithFactorMarker<From>,To,Converter > {
 
 2518            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2522            TConfSTLWithFactor *conf = (TConfSTLWithFactor *)config;
 
 2524            From *items = 
new From[nvalues];
 
 2526            Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
 
 2532      template <
typename From, 
typename To, 
template <
typename F, 
typename T> 
class Converter >
 
 2533      struct ConvertBasicType<NoFactorMarker<From>,To,Converter > {
 
 2538            TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2542            TConfSTLNoFactor *conf = (TConfSTLNoFactor *)config;
 
 2544            From *items = 
new From[nvalues];
 
 2546            Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
 
 2557         return GenericRead(buf,start,end,loopconfig, config);
 
 2562         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2569         TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
 
 2574      template <
typename T>
 
 2593      template <
typename ActionHolder>
 
 2598         TConfigSTL *config = (TConfigSTL*)conf;
 
 2600          buf.
ReadVersion(&start, &count, config->fOldClass);
 
 2602         TClass *newClass = config->fNewClass;
 
 2608         void* alternative = newProxy->
Allocate(nvalues,
true);
 
 2612            void *begin = &(startbuf[0]);
 
 2613            void *end = &(endbuf[0]);
 
 2614            config->fCreateIterators(alternative, &begin, &end, newProxy);
 
 2618            TGenericLoopConfig loopconf(newProxy,  
kTRUE);
 
 2619            ActionHolder::Action(buf,begin,end,&loopconf,config);
 
 2621            if (begin != &(startbuf[0])) {
 
 2623               config->fDeleteTwoIterators(begin,end);
 
 2626         newProxy->
Commit(alternative);
 
 2634         return ReadNumericalCollection<ConvertBasicType<bool,bool,Numeric > >(buf,addr,conf);
 
 2639         return ReadNumericalCollection<ConvertBasicType<NoFactorMarker<float>,float,Numeric > >(buf,addr,conf);
 
 2644         return ReadNumericalCollection<ConvertBasicType<float,double,Numeric > >(buf,addr,conf);
 
 2649      template <
typename T>
 
 2654         return ReadNumericalCollection<ConvertBasicType<T,T,Numeric > >(buf,addr,conf);
 
 2657      template <
typename From, 
typename To>
 
 2658      struct ConvertCollectionBasicType {
 
 2662            return ReadNumericalCollection<ConvertBasicType<From,To,Numeric > >(buf,addr,conf);
 
 2669template <
typename Looper, 
typename From>
 
 2697template <
class Looper>
 
 2717      case TStreamerInfo::kBits:    
Error(
"GetNumericCollectionReadAction",
"There is no support for kBits outside of a TObject."); 
break;
 
 2719         TConfigSTL *alternate = 
new TConfSTLNoFactor(conf,12);
 
 2732         TConfigSTL *alternate = 
new TConfSTLNoFactor(conf,0);
 
 2748   Fatal(
"GetNumericCollectionReadAction",
"Is confused about %d",
type);
 
 2753template <
typename Looper, 
typename From>
 
 2776   Error(
"GetConvertCollectionReadActionFrom", 
"UNEXPECTED: newtype == %d", newtype);
 
 2781template <
typename Looper>
 
 2786         return GetConvertCollectionReadActionFrom<Looper,Bool_t>(newtype, conf );
 
 2789         return GetConvertCollectionReadActionFrom<Looper,Char_t>(newtype, conf );
 
 2792         return GetConvertCollectionReadActionFrom<Looper,Short_t>(newtype, conf );
 
 2795         return GetConvertCollectionReadActionFrom<Looper,Int_t>(newtype, conf );
 
 2798         return GetConvertCollectionReadActionFrom<Looper,Long_t>(newtype, conf );
 
 2801         return GetConvertCollectionReadActionFrom<Looper,Long64_t>(newtype, conf );
 
 2804         return GetConvertCollectionReadActionFrom<Looper,Float_t>( newtype, conf );
 
 2807         return GetConvertCollectionReadActionFrom<Looper,Double_t>(newtype, conf );
 
 2810         return GetConvertCollectionReadActionFrom<Looper,UChar_t>(newtype, conf );
 
 2813         return GetConvertCollectionReadActionFrom<Looper,UShort_t>(newtype, conf );
 
 2816         return GetConvertCollectionReadActionFrom<Looper,UInt_t>(newtype, conf );
 
 2819         return GetConvertCollectionReadActionFrom<Looper,ULong_t>(newtype, conf );
 
 2822         return GetConvertCollectionReadActionFrom<Looper,ULong64_t>(newtype, conf );
 
 2825         return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Float16_t> >( newtype, conf );
 
 2828         return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Double32_t> >( newtype, conf );
 
 2831         Error(
"GetConvertCollectionReadAction",
"There is no support for kBits outside of a TObject.");
 
 2836   Error(
"GetConvertCollectionReadAction", 
"UNEXPECTED: oldtype == %d", oldtype);
 
 2841template <
class Looper>
 
 2862            return TConfiguredAction( Looper::template ReadAction<ReadBasicType_WithFactor<float> >, 
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
 
 2865            if (!nbits) nbits = 12;
 
 2866            return TConfiguredAction( Looper::template ReadAction<ReadBasicType_NoFactor<float> >, 
new TConfNoFactor(info,i,compinfo,offset,nbits) );
 
 2872            return TConfiguredAction( Looper::template ReadAction<ReadBasicType_WithFactor<double> >, 
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
 
 2878               return TConfiguredAction( Looper::template ReadAction<ReadBasicType_NoFactor<double> >, 
new TConfNoFactor(info,i,compinfo,offset,nbits) );
 
 2896         return GetCollectionReadConvertAction<Looper,Bool_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2899         return GetCollectionReadConvertAction<Looper,Char_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2902         return GetCollectionReadConvertAction<Looper,Short_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2905         return GetCollectionReadConvertAction<Looper,Int_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2908         return GetCollectionReadConvertAction<Looper,Long_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2911         return GetCollectionReadConvertAction<Looper,Long64_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2914         return GetCollectionReadConvertAction<Looper,Float_t>( element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2917         return GetCollectionReadConvertAction<Looper,Double_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2920         return GetCollectionReadConvertAction<Looper,UChar_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2923         return GetCollectionReadConvertAction<Looper,UShort_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2926         return GetCollectionReadConvertAction<Looper,UInt_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2929         return GetCollectionReadConvertAction<Looper,ULong_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2932         return GetCollectionReadConvertAction<Looper,ULong64_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2935         return GetCollectionReadConvertAction<Looper,BitsMarker>(element->
GetNewType(), 
new TBitsConfiguration(info,i,compinfo,offset) );
 
 2939            return GetCollectionReadConvertAction<Looper,WithFactorMarker<float> >(element->
GetNewType(), 
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
 
 2942            if (!nbits) nbits = 12;
 
 2943            return GetCollectionReadConvertAction<Looper,NoFactorMarker<float> >(element->
GetNewType(), 
new TConfNoFactor(info,i,compinfo,offset,nbits) );
 
 2949            return GetCollectionReadConvertAction<Looper,WithFactorMarker<double> >(element->
GetNewType(), 
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
 
 2953               return GetCollectionReadConvertAction<Looper,Float_t>(element->
GetNewType(), 
new TConfiguration(info,i,compinfo,offset) );
 
 2955               return GetCollectionReadConvertAction<Looper,NoFactorMarker<double> >(element->
GetNewType(), 
new TConfNoFactor(info,i,compinfo,offset,nbits) );
 
 2961         return TConfiguredAction( Looper::GenericRead, 
new TGenericConfiguration(info,i,compinfo) );
 
 2968template <
class Looper>
 
 3075   fNslots = ndata + ndata/2 + 1;
 
 3094   for (i = 0; i < ndata; ++i) {
 
 3138         if (!previousOptimized) {
 
 3149         if (
fComp[keep].fLength == 0) {
 
 3154         isOptimized = 
kTRUE;
 
 3155         previousOptimized = 
kTRUE;
 
 3156      } 
else if (element->
GetType() < 0) {
 
 3169         previousOptimized = 
kFALSE;
 
 3187                  Warning(
"Compile", 
"Counter %s should not be skipped from class %s", element->
GetName(), 
GetName());
 
 3198         if (
fComp[keep].fLength == 0) {
 
 3202         previousOptimized = 
kFALSE;
 
 3212   for (i = 0; i < 
fNdata; ++i) {
 
 3241template <
typename From>
 
 3273   switch (compinfo->
fType) {
 
 3291            readSequence->
AddAction( ReadBasicType_WithFactor<float>, 
new TConfWithFactor(
this,i,compinfo,compinfo->
fOffset,element->
GetFactor(),element->
GetXmin()) );
 
 3294            if (!nbits) nbits = 12;
 
 3295            readSequence->
AddAction( ReadBasicType_NoFactor<float>, 
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
 
 3301            readSequence->
AddAction( ReadBasicType_WithFactor<double>, 
new TConfWithFactor(
this,i,compinfo,compinfo->
fOffset,element->
GetFactor(),element->
GetXmin()) );
 
 3307               readSequence->
AddAction( ReadBasicType_NoFactor<double>, 
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
 
 3320         Bool_t isSTLbase = element->
IsBase() && element->IsA()!=TStreamerBase::Class();
 
 3324               if (newClass && newClass != oldClass) {
 
 3326                     readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
 
 3328                     readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
 
 3332                     readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
 
 3334                     readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
 
 3338               if (newClass && newClass != oldClass) {
 
 3340                     readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
 
 3343                        readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
 
 3347                           readSequence->
AddAction(GetConvertCollectionReadAction<VectorLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(), 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
 
 3350                           readSequence->
AddAction(GetConvertCollectionReadAction<AssociativeLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(), 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
 
 3356                           readSequence->
AddAction(GetConvertCollectionReadAction<GenericLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(), 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
 
 3363                     readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
 
 3366                        readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
 
 3388               if (newClass && newClass != oldClass) {
 
 3390                     readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
 
 3392                     readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
 
 3396                     readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
 
 3398                     readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetTypeName(),isSTLbase));
 
 3402               if (newClass && newClass != oldClass) {
 
 3404                     readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
 
 3406                     readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
 
 3410                     readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
 
 3412                     readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>, 
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetTypeName(),isSTLbase));
 
 3460         AddReadConvertAction<BitsMarker>(readSequence, compinfo->
fNewType, 
new TBitsConfiguration(
this,i,compinfo,compinfo->
fOffset) );
 
 3464            AddReadConvertAction<WithFactorMarker<float> >(readSequence, compinfo->
fNewType, 
new TConfWithFactor(
this,i,compinfo,compinfo->
fOffset,element->
GetFactor(),element->
GetXmin()) );
 
 3467            if (!nbits) nbits = 12;
 
 3468            AddReadConvertAction<NoFactorMarker<float> >(readSequence, compinfo->
fNewType, 
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
 
 3474            AddReadConvertAction<WithFactorMarker<double> >(readSequence, compinfo->
fNewType, 
new TConfWithFactor(
this,i,compinfo,compinfo->
fOffset,element->
GetFactor(),element->
GetXmin()) );
 
 3480               AddReadConvertAction<NoFactorMarker<double> >(readSequence, compinfo->
fNewType, 
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
 
 3508   switch (compinfo->
fType) {
 
 3549   default: 
generic = 
kTRUE; 
break;
 
 3576      readSequence->
AddAction( GetCollectionReadAction<VectorPtrLooper>(
this,element,compinfo->
fType,i,compinfo,compinfo->
fOffset) );
 
 3593   switch (compinfo->
fType) {
 
 3677#if defined(CDJ_NO_COMPILE) 
 3680      writeSequence->
fActions.pop_back();
 
 3702   switch (compinfo->
fType) {
 
 3857   default: 
generic = 
kTRUE; 
break;
 
 3873#if defined(CDJ_NO_COMPILE) 
 3876      writeSequence->
fActions.pop_back();
 
 3898#if defined(CDJ_NO_COMPILE) 
 3903      writeSequence->Addaction( GetCollectionWriteAction<VectorPtrLooper>(
this,element,compinfo->
fType,i,compinfo,compinfo->
fOffset) );
 
 3906   writeSequence->
AddAction( VectorPtrLooper::GenericWrite, 
new TGenericConfiguration(
this,i,compinfo) );
 
 3949   for (
UInt_t i = 0; i < ndata; ++i) {
 
 3973            ::Warning(
"CreateReadMemberWiseActions",
"%s",
 
 3989      if (newType != oldType) {
 
 4007            TConfiguredAction action( GetCollectionReadAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
 
 4010            sequence->
AddAction( GetCollectionReadAction<VectorLooper>(info,element,oldType,i,compinfo,offset));
 
 4017            TConfiguredAction action( GetCollectionReadAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
 
 4020            sequence->
AddAction( GetCollectionReadAction<GenericLooper>(info,element,oldType,i,compinfo,offset) );
 
 4064      for (
UInt_t i = 0; i < ndata; ++i) {
 
 4092#if defined(CDJ_NO_COMPILE) 
 4095         if (newType != oldType) {
 
 4111               TConfiguredAction action( GetCollectionWriteAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
 
 4114               sequence->
AddAction(GetCollectionWriteAction<VectorLooper>(info,element,oldType,i,compinfo,offset));
 
 4123               TConfiguredAction action( GetWriteAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
 
 4144                        sequence->
AddAction( GenericLooper<WriteBasicType_WithFactor<float> >, 
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
 
 4147                        if (!nbits) nbits = 12;
 
 4148                        sequence->
AddAction( GenericLooper<WriteBasicType_NoFactor<float> >, 
new TConfNoFactor(info,i,compinfo,offset,nbits) );
 
 4154                        sequence->
AddAction( GenericLooper<WriteBasicType_WithFactor<double> >, 
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
 
 4158                           sequence->
AddAction( GenericLooper<ConvertBasicType<float,double> >, 
new TConfiguration(info,i,compinfo,offset) );
 
 4160                           sequence->
AddAction( GenericLooper<WriteBasicType_NoFactor<double> >, 
new TConfNoFactor(info,i,compinfo,offset,nbits) );
 
 4181            sequence->
AddAction( GetCollectionWriteAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
 
 4199   TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
 
 4200   for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
 
 4205      if (iter->fConfiguration->fElemId != (
UInt_t)-1 &&
 
 4216   TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
 
 4217   for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
 
 4221      if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
 
 4222         iter->fConfiguration->SetMissing();
 
 4234   TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
 
 4235   for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
 
 4240      sequence->
AddAction( iter->fAction, conf );
 
 4250   for(
UInt_t id = 0; 
id < element_ids.size(); ++
id) {
 
 4251      if ( element_ids[
id].fElemID < 0 ) {
 
 4252         if (element_ids[
id].fNestedIDs) {
 
 4253            auto original = create(element_ids[
id].fNestedIDs->fInfo,
 
 4256            if (element_ids[
id].fNestedIDs->fOnfileObject) {
 
 4257               auto conf = 
new TConfigurationPushDataCache(element_ids[
id].fNestedIDs->fInfo, element_ids[
id].fNestedIDs->fOnfileObject, offset);
 
 4266            original->AddToSubSequence(sequence, element_ids[
id].fNestedIDs->fIDs, element_ids[
id].fNestedIDs->fOffset, create);
 
 4268            if (element_ids[
id].fNestedIDs->fOnfileObject) {
 
 4270                  new TConfigurationPushDataCache(element_ids[
id].fNestedIDs->fInfo, 
nullptr, element_ids[
id].fNestedIDs->fOffset);
 
 4279            TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
 
 4280            for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
 
 4285               if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
 
 4287               sequence->
AddAction( iter->fAction, conf );
 
 4292         TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
 
 4293         for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
 
 4305            if ( iter->fConfiguration->fElemId == (
UInt_t)element_ids[
id].fElemID ) {
 
 4307               if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
 
 4309               sequence->
AddAction( iter->fAction, conf );
 
 4326   AddToSubSequence(sequence, element_ids, offset, create);
 
 4340   for(
UInt_t id = 0; 
id < element_ids.size(); ++
id) {
 
 4341      if ( element_ids[
id] < 0 ) {
 
 4342         TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
 
 4343         for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
 
 4348            if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
 
 4350            sequence->
AddAction( iter->fAction, conf );
 
 4353         TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
 
 4354         for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
 
 4357            if ( iter->fConfiguration->fElemId == (
UInt_t)element_ids[
id] ) {
 
 4359               if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
 
 4361               sequence->
AddAction( iter->fAction, conf );
 
 4369#if !defined(R__WIN32) && !defined(_AIX) 
 4378#if defined(R__WIN32) || defined(__CYGWIN__) || defined(_AIX) 
 4379   return "not available on this platform";
 
 4381   MEMORY_BASIC_INFORMATION mbi;
 
 4382   if (!VirtualQuery (func, &mbi, 
sizeof (mbi)))
 
 4387   HMODULE hMod = (HMODULE) mbi.AllocationBase;
 
 4388   static char moduleName[MAX_PATH];
 
 4390   if (!GetModuleFileNameA (hMod, moduleName, 
sizeof (moduleName)))
 
 4398   if (dladdr((
void*)func,&info)==0) {
 
 4400      return "name not found";
 
 4403      return info.dli_sname;
 
 4415      fLoopConfig->
Print();
 
 4417   TStreamerInfoActions::ActionContainer_t::const_iterator end = fActions.end();
 
 4418   for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = fActions.begin();
 
 4422      iter->fConfiguration->Print();
 
 4423      if (strstr(opt,
"func")) {
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
void Fatal(const char *location, const char *msgfmt,...)
Use this function in case of a fatal error. It will abort the program.
 
R__EXTERN TVirtualMutex * gInterpreterMutex
 
static TConfiguredAction GetNumericCollectionReadAction(Int_t type, TConfigSTL *conf)
 
static void AddReadConvertAction(TStreamerInfoActions::TActionSequence *sequence, Int_t newtype, TConfiguration *conf)
 
static TConfiguredAction GetCollectionReadConvertAction(Int_t newtype, TConfiguration *conf)
 
static TConfiguredAction GetCollectionReadAction(TVirtualStreamerInfo *info, TStreamerElement *element, Int_t type, UInt_t i, TStreamerInfo::TCompInfo_t *compinfo, Int_t offset)
 
static const Int_t kRegrouped
 
#define INLINE_TEMPLATE_ARGS
 
static const char * R__GetSymbolName(voidfunc func)
 
static TConfiguredAction GetConvertCollectionReadAction(Int_t oldtype, Int_t newtype, TConfiguration *conf)
 
static TConfiguredAction GetCollectionWriteAction(TVirtualStreamerInfo *info, TStreamerElement *, Int_t type, UInt_t i, TStreamerInfo::TCompInfo_t *compinfo, Int_t offset)
 
static TConfiguredAction GetConvertCollectionReadActionFrom(Int_t newtype, TConfiguration *conf)
 
#define ReadBasicType(name)
 
#define WriteBasicType(name)
 
virtual void ReadBuffer(char *&buffer)
 
typedef void((*Func_t)())
 
#define R__LOCKGUARD(mutex)
 
Base class for text-based streamers like TBufferJSON or TBufferXML Special actions list will use meth...
 
Buffer base class used for serializing objects.
 
virtual void ReadWithNbits(Float_t *ptr, Int_t nbits)=0
 
virtual void ReadWithFactor(Float_t *ptr, Double_t factor, Double_t minvalue)=0
 
virtual TProcessID * ReadProcessID(UShort_t pidf)=0
Return the current Process-ID.
 
virtual void ReadFastArrayDouble32(Double_t *d, Int_t n, TStreamerElement *ele=0)=0
 
virtual UInt_t WriteVersionMemberWise(const TClass *cl, Bool_t useBcnt=kFALSE)=0
 
virtual void SetByteCount(UInt_t cntpos, Bool_t packInVersion=kFALSE)=0
 
virtual void ReadInt(Int_t &i)=0
 
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
 
TObject * GetParent() const
Return pointer to parent of this buffer.
 
virtual UShort_t GetPidOffset() const =0
 
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
 
@ kCannotHandleMemberWiseStreaming
 
virtual void StreamObject(void *obj, const std::type_info &typeinfo, const TClass *onFileClass=0)=0
 
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
 
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
 
virtual void ReadFastArrayFloat16(Float_t *f, Int_t n, TStreamerElement *ele=0)=0
 
virtual Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *object)=0
 
virtual void ReadFastArrayWithNbits(Float_t *ptr, Int_t n, Int_t nbits)=0
 
void SetBufferOffset(Int_t offset=0)
 
virtual void ReadFastArrayWithFactor(Float_t *ptr, Int_t n, Double_t factor, Double_t minvalue)=0
 
virtual UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE)=0
 
virtual Version_t ReadVersionForMemberWise(const TClass *cl=0)=0
 
virtual void WriteFastArray(const Bool_t *b, Int_t n)=0
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
Bool_t CanSplit() const
Return true if the data member of this TClass can be saved separately.
 
void * NewArray(Long_t nElements, ENewType defConstructor=kClassNew) const
Return a pointer to a newly allocated array of objects of this class.
 
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
 
Int_t Size() const
Return size of object of this class.
 
void DeleteArray(void *ary, Bool_t dtorOnly=kFALSE)
Explicitly call operator delete[] for an array.
 
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,...
 
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
 
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=0) const
 
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...
 
@ kHasCustomStreamerMember
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
 
virtual void Print(Option_t *option="") const
Print TNamed name and title.
 
virtual const char * GetTitle() const
Returns title of object.
 
virtual const char * GetName() const
Returns name of object.
 
Int_t GetEntriesFast() const
 
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
 
virtual void AddAt(TObject *obj, Int_t idx)
Add object at position ids.
 
TObject * At(Int_t idx) const
 
Mother of all ROOT objects.
 
virtual const char * GetName() const
Returns name of object.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual UInt_t GetUniqueID() const
Return the unique object id.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
 
A TProcessID identifies a ROOT job in a unique way in time and space.
 
void PutObjectWithID(TObject *obj, UInt_t uid=0)
stores the object at the uid th slot in the table of objects The object uniqued is set as well as its...
 
const char * GetErrorMessage() const
 
virtual Int_t GetSize() const
Returns size of this element in bytes.
 
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
 
TMemberStreamer * GetStreamer() const
Return the local streamer object.
 
TClass * GetNewClass() const
 
Int_t GetArrayLength() const
 
Double_t GetFactor() const
 
const char * GetTypeName() const
 
virtual Bool_t IsBase() const
Return kTRUE if the element represent a base class.
 
virtual ULong_t GetMethod() const
 
virtual Bool_t HasCounter() const
 
void GetSequenceType(TString &type) const
Fill type with the string representation of sequence information including 'cached',...
 
Bool_t IsForVectorPtrLooper() const
 
static TActionSequence * CreateReadMemberWiseActions(TVirtualStreamerInfo *info, TVirtualCollectionProxy &proxy)
Create the bundle of the actions necessary for the streaming memberwise of the content described by '...
 
void Print(Option_t *="") const
This method must be overridden when a class wants to print itself.
 
TLoopConfiguration * fLoopConfig
If this is a bundle of memberwise streaming action, this configures the looping.
 
static TActionSequence * CreateWriteMemberWiseActions(TVirtualStreamerInfo *info, TVirtualCollectionProxy &proxy)
Create the bundle of the actions necessary for the streaming memberwise of the content described by '...
 
SequencePtr(*)(TStreamerInfo *info, TVirtualCollectionProxy *collectionProxy, TClass *originalClass) SequenceGetter_t
 
ActionContainer_t fActions
 
void AddToSubSequence(TActionSequence *sequence, const TIDs &element_ids, Int_t offset, SequenceGetter_t create)
 
TActionSequence * CreateSubSequence(const std::vector< Int_t > &element_ids, size_t offset)
 
TActionSequence * CreateCopy()
 
void AddAction(action_t action, TConfiguration *conf)
 
void AddToOffset(Int_t delta)
 
Base class of the Configurations.
 
virtual void SetMissing()
 
virtual void PrintDebug(TBuffer &buffer, void *object) const
 
virtual TConfiguration * Copy()
 
TVirtualStreamerInfo * fInfo
TStreamerInfo form which the action is derived.
 
Int_t fOffset
Offset within the object.
 
TCompInfo_t * fCompInfo
Access to compiled information (for legacy code)
 
UInt_t fLength
Number of element in a fixed length array.
 
UInt_t fElemId
Identifier of the TStreamerElement.
 
TStreamerInfo::TCompInfo_t TCompInfo_t
 
virtual void Print() const
 
virtual void AddToOffset(Int_t delta)
 
Base class of the Configurations for the member wise looping routines.
 
TVirtualCollectionProxy * fProxy
 
virtual void Print() const
 
virtual TVirtualCollectionProxy * GetCollectionProxy() const
 
virtual TLoopConfiguration * Copy() const =0
 
TClass * fClass
Not Owned.
 
TMemberStreamer * fStreamer
Not Owned.
 
TStreamerElement * fElem
Not Owned.
 
TClass * fNewClass
Not Owned.
 
Describe Streamer information for one class version.
 
Int_t fNVirtualInfoLoc
! Number of virtual info location to update.
 
Int_t ReadBufferSTL(TBuffer &b, TVirtualCollectionProxy *cont, Int_t nc, Int_t eoffset, Bool_t v7=kTRUE)
The STL vector/list is deserialized from the buffer b.
 
void AddWriteAction(TStreamerInfoActions::TActionSequence *writeSequence, Int_t index, TCompInfo *compinfo)
 
Int_t fNfulldata
!number of elements
 
TCompInfo * fComp
![fNslots with less than fElements->GetEntries()*1.5 used] Compiled info
 
TStreamerInfoActions::TActionSequence * GetWriteMemberWiseActions(Bool_t forCollection)
 
void Compile()
loop on the TStreamerElement list regroup members with same type Store predigested information into l...
 
TStreamerInfoActions::TActionSequence * fWriteMemberWiseVecPtr
! List of write action resulting from the compilation for use in member wise streaming.
 
TStreamerInfoActions::TActionSequence * fReadText
! List of text read action resulting from the compilation, used for JSON.
 
void AddReadTextAction(TStreamerInfoActions::TActionSequence *readSequence, Int_t index, TCompInfo *compinfo)
Add a read text action for the given element.
 
TCompInfo ** fCompFull
![fElements->GetEntries()]
 
TObjArray * fElements
Array of TStreamerElements.
 
@ kArtificial
Cache the value in memory than is not part of the object but is accessible via a SchemaRule.
 
@ kUChar
Equal to TDataType's kchar.
 
void AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence *readSequence, Int_t index, TCompInfo *compinfo)
Add a read action for the given element.
 
TClass * GetClass() const
 
void ls(Option_t *option="") const
List the TStreamerElement list and also the precomputed tables if option contains the string "incOrig...
 
TStreamerInfoActions::TActionSequence * fReadMemberWise
! List of read action resulting from the compilation for use in member wise streaming.
 
Int_t fNdata
!number of optimized elements
 
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 * fClass
!pointer to class
 
TCompInfo ** fCompOpt
![fNdata]
 
static std::atomic< Int_t > fgCount
Number of TStreamerInfo instances.
 
void AddWriteTextAction(TStreamerInfoActions::TActionSequence *writeSequence, Int_t index, TCompInfo *compinfo)
 
void ComputeSize()
Compute total size of all persistent elements of the class.
 
void AddReadAction(TStreamerInfoActions::TActionSequence *readSequence, Int_t index, TCompInfo *compinfo)
Add a read action for the given element.
 
void AddWriteMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence *writeSequence, Int_t index, TCompInfo *compinfo)
This is for streaming via a TClonesArray (or a vector of pointers of this type).
 
Int_t fNumber
!Unique identifier
 
TStreamerInfoActions::TActionSequence * fWriteObjectWise
! List of write action resulting from the compilation.
 
Int_t fSize
!size of the persistent class
 
Int_t ReadBufferSkip(TBuffer &b, const T &arrptr, const TCompInfo *compinfo, Int_t kase, TStreamerElement *aElement, Int_t narr, Int_t eoffset)
Skip an element.
 
TStreamerInfoActions::TActionSequence * fWriteMemberWise
! List of write action resulting from the compilation for use in member wise streaming.
 
Int_t fNslots
!total numbrer of slots in fComp.
 
Version_t fOldVersion
! Version of the TStreamerInfo object read from the file
 
TStreamerInfoActions::TActionSequence * fWriteText
! List of text write action resulting for the compilation, used for JSON.
 
TStreamerInfoActions::TActionSequence * GetReadMemberWiseActions(Bool_t forCollection)
 
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
 
const char * Data() const
 
Wrapper around an object and giving indirect access to its content even if the object is not of a cla...
 
virtual Int_t GetProperties() const
 
virtual ULong_t GetIncrement() const =0
 
virtual TStreamerInfoActions::TActionSequence * GetReadMemberWiseActions(Int_t version)=0
 
void(* CreateIterators_t)(void *collection, void **begin_arena, void **end_arena, TVirtualCollectionProxy *proxy)
 
virtual EDataType GetType() const =0
 
void *(* CopyIterator_t)(void *dest, const void *source)
 
void *(* Next_t)(void *iter, const void *end)
 
virtual TClass * GetValueClass() const =0
 
virtual void Commit(void *)=0
 
virtual Int_t GetCollectionType() const =0
 
virtual Next_t GetFunctionNext(Bool_t read=kTRUE)=0
 
virtual DeleteTwoIterators_t GetFunctionDeleteTwoIterators(Bool_t read=kTRUE)=0
 
virtual UInt_t Size() const =0
 
void(* DeleteTwoIterators_t)(void *begin, void *end)
 
void(* DeleteIterator_t)(void *iter)
 
static const Int_t fgIteratorArenaSize
 
virtual CreateIterators_t GetFunctionCreateIterators(Bool_t read=kTRUE)=0
 
virtual void * Allocate(UInt_t n, Bool_t forceDelete)=0
 
virtual TStreamerInfoActions::TActionSequence * GetConversionReadMemberWiseActions(TClass *oldClass, Int_t version)=0
 
virtual DeleteIterator_t GetFunctionDeleteIterator(Bool_t read=kTRUE)=0
 
virtual CopyIterator_t GetFunctionCopyIterator(Bool_t read=kTRUE)=0
 
virtual Bool_t HasPointers() const =0
 
virtual TClass * GetCollectionClass() const
 
static void DeleteIterator(void *iter)
 
static void * Next(void *iter, const void *end)
 
static void * CopyIterator(void *dest, const void *source)
 
Abstract Interface class describing Streamer information for one class.
 
static Bool_t GetStreamMemberWise()
Return whether the TStreamerInfos will save the collections in "member-wise" order whenever possible.
 
Bool_t IsCompiled() const
 
static Bool_t CanOptimize()
static function returning true if optimization can be on
 
virtual TObjArray * GetElements() const =0
 
virtual Int_t GetClassVersion() const =0
 
void Copy(void *source, void *dest)
 
void Print(std::ostream &os, const OptionType &opt)
 
void Init(TClassEdit::TInterpreterLookupHelper *helper)
 
INLINE_TEMPLATE_ARGS Int_t UseCache(TBuffer &b, void *addr, const TConfiguration *conf)
 
INLINE_TEMPLATE_ARGS Int_t ReadTObject(TBuffer &buf, void *addr, const TConfiguration *config)
 
Int_t PushDataCacheVectorPtr(TBuffer &b, void *, const void *, const TConfiguration *conf)
 
INLINE_TEMPLATE_ARGS Int_t WriteTextStreamer(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t WriteTextTObject(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t ReadTextTObjectBase(TBuffer &buf, void *addr, const TConfiguration *config)
 
Int_t PopDataCache(TBuffer &b, void *, const TConfiguration *)
 
INLINE_TEMPLATE_ARGS Int_t ReadSTL(TBuffer &buf, void *addr, const TConfiguration *conf)
 
INLINE_TEMPLATE_ARGS Int_t WriteTextBaseClass(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS void ReadSTLObjectWiseFastArrayV2(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers, UInt_t start)
 
INLINE_TEMPLATE_ARGS Int_t ReadTString(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS void ReadArraySTLMemberWiseChangedClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
 
Int_t GenericWriteAction(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t ReadTextTObject(TBuffer &buf, void *addr, const TConfiguration *config)
 
Int_t PopDataCacheVectorPtr(TBuffer &b, void *, const void *, const TConfiguration *)
 
Int_t GenericReadAction(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS void ReadArraySTLMemberWiseSameClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
 
INLINE_TEMPLATE_ARGS Int_t ReadTextObject(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t ReadTextStreamer(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t UseCacheVectorLoop(TBuffer &b, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *conf)
 
INLINE_TEMPLATE_ARGS void ReadSTLObjectWiseFastArray(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t, UInt_t)
 
Int_t PushDataCache(TBuffer &b, void *, const TConfiguration *conf)
 
INLINE_TEMPLATE_ARGS Int_t ReadBasicType_NoFactor(TBuffer &buf, void *addr, const TConfiguration *config)
 
std::vector< TIDNode > TIDs
 
INLINE_TEMPLATE_ARGS void ReadSTLMemberWiseSameClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
 
Int_t WriteLoopInvalid(TBuffer &, void *, const void *, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t WriteStreamerLoop(TBuffer &buf, void *addr, const TConfiguration *config)
Direct copy of code from TStreamerInfo::WriteBufferAux, potentially can be used later for non-text st...
 
INLINE_TEMPLATE_ARGS Int_t UseCacheVectorPtrLoop(TBuffer &b, void *start, const void *end, const TConfiguration *conf)
 
INLINE_TEMPLATE_ARGS Int_t UseCacheGenericCollection(TBuffer &b, void *, const void *, const TLoopConfiguration *loopconfig, const TConfiguration *conf)
 
INLINE_TEMPLATE_ARGS Int_t ReadTextBaseClass(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t ReadSTLp(TBuffer &buf, void *addr, const TConfiguration *config)
Direct copy of code from TStreamerInfo::WriteBufferAux, potentially can be used later for non-text st...
 
INLINE_TEMPLATE_ARGS Int_t WriteTextTNamed(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS void ReadSTLObjectWiseStreamerV2(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers, UInt_t start)
 
INLINE_TEMPLATE_ARGS void ReadSTLObjectWiseStreamer(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t, UInt_t)
 
INLINE_TEMPLATE_ARGS Int_t ReadBasicType< BitsMarker >(TBuffer &buf, void *addr, const TConfiguration *config)
 
bool IsDefaultVector(TVirtualCollectionProxy &proxy)
 
Int_t ReadLoopInvalid(TBuffer &, void *, const void *, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t WriteSTLp(TBuffer &buf, void *addr, const TConfiguration *config)
Direct copy of code from TStreamerInfo::WriteBufferAux, potentially can be used later for non-text st...
 
INLINE_TEMPLATE_ARGS void ReadSTLMemberWiseChangedClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
 
void HandleReferencedTObject(TBuffer &buf, void *addr, const TConfiguration *config)
 
Int_t PopDataCacheGenericCollection(TBuffer &b, void *, const void *, const TLoopConfiguration *, const TConfiguration *)
 
INLINE_TEMPLATE_ARGS Int_t ReadStreamerLoop(TBuffer &buf, void *addr, const TConfiguration *config)
Direct copy of code from TStreamerInfo::WriteBufferAux, potentially can be used later for non-text st...
 
Int_t PushDataCacheGenericCollection(TBuffer &b, void *, const void *, const TLoopConfiguration *loopconfig, const TConfiguration *conf)
 
ESelectLooper SelectLooper(TVirtualCollectionProxy &proxy)
 
INLINE_TEMPLATE_ARGS Int_t ReadTNamed(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t ReadTextTNamed(TBuffer &buf, void *addr, const TConfiguration *config)
 
INLINE_TEMPLATE_ARGS Int_t ReadBasicType_WithFactor(TBuffer &buf, void *addr, const TConfiguration *config)
 
TVirtualCollectionProxy::Next_t Next_t