40# define INLINE_TEMPLATE_ARGS
42# define INLINE_TEMPLATE_ARGS inline
48 template <
typename From>
49 struct WithFactorMarker {
53 template <
typename From>
54 struct NoFactorMarker {
96 printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
97 " %s, offset=%d (%s)\n",
110 TString sequenceType;
113 printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
114 " %s, bufpos=%d, arr=%p, offset=%d (%s)\n",
124 printf(
"TLoopConfiguration: unconfigured\n");
133 void PrintDebug(
TBuffer &,
void *)
const {
149 void PrintDebug(
TBuffer &,
void *)
const {
152 TString sequenceType;
155 printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
156 " %s, offset=%d (%s)\n",
158 aElement->
ClassName(), fOffset, sequenceType.Data());
161 void AddToOffset(
Int_t delta)
183 char *obj = (
char*)addr;
184 TGenericConfiguration *conf = (TGenericConfiguration*)config;
190 char *obj = (
char*)addr;
191 TGenericConfiguration *conf = (TGenericConfiguration*)config;
192 return ((
TStreamerInfo*)conf->fInfo)->WriteBufferAux(buf, &obj, &(conf->fCompInfo), 0, 1, 1, config->
fOffset, 2);
195 template <
typename T>
198 T *
x = (
T*)( ((
char*)addr) + config->
fOffset );
205 TBitsConfiguration *conf = (TBitsConfiguration*)config;
217 uid = ( obj->
GetUniqueID() & 0xffffff) + (gpid<<24);
238 template <
typename T>
241 T *
x = (
T *)(((
char *)addr) + config->
fOffset);
249 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
257 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
265 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
273 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
283 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
290 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
297 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
305 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
318 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
325 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
332 template<
bool kIsTextT>
357 char **contp = (
char **)((
char *)addr + ioffset);
359 char *cont = contp[j];
361 Int_t nobjects = cont ? proxy->
Size() : 0;
375 }
else if (pstreamer ==
nullptr) {
377 char **contp = (
char **)((
char *)addr + ioffset);
379 char *cont = contp[j];
395 template<
bool kIsTextT>
418 if( vers < 9 && newClass && newClass!=oldClass ) {
419 Error(
"ReadBuffer",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
443 void **contp = (
void**)((
char *) addr + ioffset);
445 void *cont = contp[j];
447 contp[j] = cle->
New();
453 env = newProxy->
Allocate(nobjects,
true);
466 }
else if (pstreamer ==
nullptr) {
468 void **contp = (
void **)((
char *)addr + ioffset);
470 void *cont = contp[j];
471 if (cont ==
nullptr) {
476 contp[j] = cle->
New();
492 template<
bool kIsTextT>
509 (*pstreamer)(buf, (
char *) addr + ioffset , *counter);
511 buf.SetByteCount(pos,
kTRUE);
529 fileVersion =
file->GetVersion();
534 if (fileVersion > 51508) {
544 char** pp = (
char**) ((
char *) addr + ioffset );
583 char** pp = (
char**) ((
char *) addr + ioffset );
607 char**
r = (
char**) pp[ndx];
625 template<
bool kIsTextT>
648 (*pstreamer)(buf, (
char *) addr + ioffset , *counter);
666 fileVersion =
file->GetVersion();
673 if (fileVersion > 51508) {
678 Int_t vlen = *((
Int_t *)((
char *)addr + eoffset +
686 char **pp = (
char **)((
char *)addr + ioffset );
739 pp[ndx] = (
char *)cl->
NewArray(vlen);
741 Error(
"ReadBuffer",
"Memory allocation failed!\n");
748 pp[ndx] = (
char *)
new char *[vlen];
750 Error(
"ReadBuffer",
"Memory allocation failed!\n");
754 memset(pp[ndx], 0, vlen *
sizeof(
char *));
771 Int_t vlen = *((
Int_t *)((
char *)addr + eoffset +
779 char **pp = (
char **)((
char *)addr + ioffset );
829 pp[ndx] = (
char *)cl->
NewArray(vlen);
831 Error(
"ReadBuffer",
"Memory allocation failed!\n");
838 pp[ndx] = (
char *)
new char *[vlen];
840 Error(
"ReadBuffer",
"Memory allocation failed!\n");
844 memset(pp[ndx], 0, vlen *
sizeof(
char *));
857 char **
r = (
char **)pp[ndx];
861 r[
v] = (
char *)cl->
New();
883 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) {};
887 template <
typename T>
893 TConfWithFactor *conf = (TConfWithFactor *)config;
906 template <
typename T>
911 TConfNoFactor *conf = (TConfNoFactor *)config;
912 Int_t nbits = conf->fNbits;
924 ((TString*)(((
char*)addr)+config->
fOffset))->TString::Streamer(buf);
934 ((
TObject*)(((
char*)addr)+config->
fOffset))->TObject::Streamer(buf);
967 const char *fTypeName;
976 TConfiguration(info,id,compinfo,offset,length), fOldClass(oldClass), fNewClass(oldClass), fStreamer(0), fTypeName(type_name), fIsSTLBase(isbase),
977 fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) {
Init(); }
980 TConfiguration(info,id,compinfo,offset,length), fOldClass(oldClass), fNewClass(newClass), fStreamer(0), fTypeName(type_name), fIsSTLBase(isbase),
981 fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) {
Init(); }
984 TConfiguration(info,id,compinfo,offset,length), fOldClass(oldClass), fNewClass(oldClass), fStreamer(streamer), fTypeName(type_name), fIsSTLBase(isbase),
985 fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) {
Init(); }
988 TConfiguration(info,id,compinfo,offset,length), fOldClass(oldClass), fNewClass(newClass), fStreamer(streamer), fTypeName(type_name), fIsSTLBase(isbase),
989 fCreateIterators(0), fCopyIterator(0), fDeleteIterator(0), fDeleteTwoIterators(0) {
Init(); }
994 class TConfSTLWithFactor :
public TConfigSTL {
999 TConfSTLWithFactor(TConfigSTL *orig,
Double_t factor,
Double_t xmin) : TConfigSTL(*orig),fFactor(factor),fXmin(
xmin) {};
1003 class TConfSTLNoFactor :
public TConfigSTL {
1007 TConfSTLNoFactor(TConfigSTL *orig,
Int_t nbits) : TConfigSTL(*orig),fNbits(nbits) {};
1019 virtual ~TVectorLoopConfig() {};
1022 printf(
"TVectorLoopConfig: increment=%ld\n",fIncrement);
1025 void* GetFirstAddress(
void *start,
const void * )
const
1040 virtual ~TAssocLoopConfig() {};
1047 void* GetFirstAddress(
void *start,
const void * )
const
1087 virtual ~TGenericLoopConfig() {};
1094 void* GetFirstAddress(
void *start_collection,
const void *end_collection)
const
1099 void *iter = fCopyIterator(&iterator,start_collection);
1100 void *arr0 = fNext(iter,end_collection);
1101 if (iter != &iterator[0]) {
1102 fDeleteIterator(iter);
1112 TConfigSTL *config = (TConfigSTL*)conf;
1117 TClass *oldClass = config->fOldClass;
1130 void* alternative = oldProxy->
Allocate(nobjects,
true);
1136 void *begin = &(startbuf[0]);
1137 void *end = &(endbuf[0]);
1138 config->fCreateIterators(alternative, &begin, &end, oldProxy);
1142 if (begin != &(startbuf[0])) {
1144 config->fDeleteTwoIterators(begin,end);
1147 oldProxy->
Commit(alternative);
1151 TClass *oldClass = config->fOldClass;
1162 void* env = oldProxy->
Allocate(nobjects,
true);
1164 if (nobjects || vers < 7 ) {
1178 TConfigSTL *config = (TConfigSTL*)conf;
1183 TClass *oldClass = config->fOldClass;
1195 int objectSize = oldClass->
Size();
1196 char *obj = (
char*)addr;
1197 char *endobj = obj + conf->
fLength*objectSize;
1199 for(; obj<endobj; obj+=objectSize) {
1203 void* alternative = oldProxy->
Allocate(nobjects,
true);
1207 void *begin = &(startbuf[0]);
1208 void *end = &(endbuf[0]);
1209 config->fCreateIterators(alternative, &begin, &end, oldProxy);
1213 if (begin != &(startbuf[0])) {
1215 config->fDeleteTwoIterators(begin,end);
1218 oldProxy->
Commit(alternative);
1223 TClass *oldClass = config->fOldClass;
1231 int objectSize = oldClass->
Size();
1232 char *obj = (
char*)addr;
1233 char *endobj = obj + conf->
fLength*objectSize;
1235 for(; obj<endobj; obj+=objectSize) {
1239 void* env = oldProxy->
Allocate(nobjects,
true);
1241 if (nobjects || vers < 7 ) {
1256 TConfigSTL *config = (TConfigSTL*)conf;
1260 TClass *newClass = config->fNewClass;
1261 TClass *oldClass = config->fOldClass;
1264 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1276 void* alternative = newProxy->
Allocate(nobjects,
true);
1281 void *begin = &(startbuf[0]);
1282 void *end = &(endbuf[0]);
1283 config->fCreateIterators( alternative, &begin, &end, newProxy);
1287 if (begin != &(startbuf[0])) {
1289 config->fDeleteTwoIterators(begin,end);
1292 newProxy->
Commit(alternative);
1300 TConfigSTL *config = (TConfigSTL*)conf;
1304 TClass *newClass = config->fNewClass;
1305 TClass *oldClass = config->fOldClass;
1308 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1317 int objectSize = newClass->
Size();
1318 char *obj = (
char*)addr;
1319 char *endobj = obj + conf->
fLength*objectSize;
1321 for(; obj<endobj; obj+=objectSize) {
1325 void* alternative = newProxy->
Allocate(nobjects,
true);
1330 void *begin = &(startbuf[0]);
1331 void *end = &(endbuf[0]);
1332 config->fCreateIterators( alternative, &begin, &end, newProxy);
1336 if (begin != &(startbuf[0])) {
1338 config->fDeleteTwoIterators(begin,end);
1341 newProxy->
Commit(alternative);
1349 TConfigSTL *config = (TConfigSTL*)conf;
1355 TConfigSTL *config = (TConfigSTL*)conf;
1356 (*config->fStreamer)(buf,addr,conf->
fLength);
1362 TConfigSTL *config = (TConfigSTL*)conf;
1365 if (config->fIsSTLBase || vers == 0) {
1375 TConfigSTL *config = (TConfigSTL*)conf;
1378 if (config->fIsSTLBase || vers == 0) {
1381 (*config->fStreamer)(buf,addr,conf->
fLength);
1388 TConfigSTL *config = (TConfigSTL*)conf;
1392 memberwise(buf,((
char*)addr)+config->fOffset,config, vers);
1394 objectwise(buf,((
char*)addr)+config->fOffset,config, vers, start);
1400 template <
typename From,
typename To>
1401 struct ConvertBasicType {
1407 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1412 template <
typename To>
1413 struct ConvertBasicType<BitsMarker,To> {
1424 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1429 template <
typename From,
typename To>
1430 struct ConvertBasicType<WithFactorMarker<From>,To> {
1434 TConfWithFactor *conf = (TConfWithFactor *)config;
1437 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1442 template <
typename From,
typename To>
1443 struct ConvertBasicType<NoFactorMarker<From>,To> {
1447 TConfNoFactor *conf = (TConfNoFactor *)config;
1450 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1461 TConfiguration(info, -1, nullptr, offset), fOnfileObject(onfileObject)
1464 virtual void Print()
const {
1467 printf(
"StreamerInfoAction, class:%s, PushDataCache offset=%d\n",
1470 printf(
"StreamerInfoAction, class:%s, PopDataCache offset=%d\n",
1473 virtual void PrintDebug(
TBuffer &buffer,
void *
object)
const {
1476 printf(
"StreamerInfoAction, class:%s, %sDataCache, bufpos=%d, arr=%p, offset=%d, onfileObject=%p\n",
1477 info->
GetClass()->
GetName(), fOnfileObject ?
"Push" :
"Pop", buffer.
Length(),
object, fOffset, fOnfileObject);
1485 TConfigurationPushDataCache *config = (TConfigurationPushDataCache*)conf;
1486 auto onfileObject = config->fOnfileObject;
1489 b.PushDataCache( onfileObject );
1496 TConfigurationPushDataCache *config = (TConfigurationPushDataCache*)conf;
1497 auto onfileObject = config->fOnfileObject;
1502 onfileObject->SetSize(
n);
1503 b.PushDataCache( onfileObject );
1527 TConfiguration(info,action.fConfiguration->fElemId,action.fConfiguration->fCompInfo,action.fConfiguration->fOffset),fAction(action),fNeedRepeat(repeat) {};
1528 virtual void PrintDebug(
TBuffer &
b,
void *addr)
const
1534 fprintf(stdout,
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
1535 " %s, bufpos=%d, arr=%p, eoffset=%d, Redirect=%p\n",
1537 aElement->
ClassName(),
b.Length(),addr, 0,
b.PeekDataCache() ?
b.PeekDataCache()->GetObjectAt(0) : 0);
1541 virtual ~TConfigurationUseCache() {};
1543 TConfigurationUseCache *copy =
new TConfigurationUseCache(*
this);
1551 TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
1553 Int_t bufpos =
b.Length();
1558 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1559 char *ptr = (
char*)addr;
1562 config->fAction(
b, (*cached)[0]);
1565 if (config->fNeedRepeat) {
1566 b.SetBufferOffset(bufpos);
1573 TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
1574 Int_t bufpos =
b.Length();
1580 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1581 char *ptr = (
char*)start;
1582 UInt_t n = (((
void**)end)-((
void**)start));
1585 TVectorLoopConfig cached_config(
nullptr, cached->
fClass->
Size(),
kTRUE );
1586 void *cached_start = (*cached)[0];
1587 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.fIncrement;
1588 config->fAction(
b,cached_start,cached_end,&cached_config);
1591 if (config->fNeedRepeat) {
1592 b.SetBufferOffset(bufpos);
1599 TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
1601 Int_t bufpos =
b.Length();
1606 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1607 char *ptr = (
char*)start;
1608 UInt_t n = (((
char*)end)-((
char*)start))/((TVectorLoopConfig*)loopconf)->fIncrement;
1611 TVectorLoopConfig cached_config(
nullptr, cached->
fClass->
Size(),
kTRUE );
1612 void *cached_start = (*cached)[0];
1613 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.fIncrement;
1614 config->fAction(
b,cached_start,cached_end,&cached_config);
1617 if (config->fNeedRepeat) {
1618 b.SetBufferOffset(bufpos);
1625 TConfigurationUseCache *config = (TConfigurationUseCache*)conf;
1627 Int_t bufpos =
b.Length();
1634 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1638 TVectorLoopConfig cached_config(
nullptr, cached->
fClass->
Size(),
kTRUE );
1639 void *cached_start = (*cached)[0];
1640 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.fIncrement;
1641 config->fAction(
b,cached_start,cached_end,&cached_config);
1644 if (config->fNeedRepeat) {
1645 b.SetBufferOffset(bufpos);
1684 struct VectorLooper {
1686 template <
typename T>
1689 const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1690 iter = (
char*)iter + config->
fOffset;
1691 end = (
char*)end + config->
fOffset;
1692 for(; iter != end; iter = (
char*)iter + incr ) {
1693 T *
x = (
T*) ((
char*) iter);
1699 template <
typename From,
typename To>
1700 struct ConvertBasicType {
1705 const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1706 iter = (
char*)iter + config->
fOffset;
1707 end = (
char*)end + config->
fOffset;
1708 for(; iter != end; iter = (
char*)iter + incr ) {
1710 *(To*)( ((
char*)iter) ) = (To)temp;
1716 template <
typename To>
1717 struct ConvertBasicType<BitsMarker,To> {
1722 const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1723 iter = (
char*)iter + config->
fOffset;
1724 end = (
char*)end + config->
fOffset;
1725 for(; iter != end; iter = (
char*)iter + incr ) {
1732 *(To*)( ((
char*)iter) ) = (To)temp;
1738 template <
typename From,
typename To>
1739 struct ConvertBasicType<WithFactorMarker<From>,To> {
1743 TConfWithFactor *conf = (TConfWithFactor *)config;
1745 const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1746 iter = (
char*)iter + config->
fOffset;
1747 end = (
char*)end + config->
fOffset;
1748 for(; iter != end; iter = (
char*)iter + incr ) {
1750 *(To*)( ((
char*)iter) ) = (To)temp;
1756 template <
typename From,
typename To>
1757 struct ConvertBasicType<NoFactorMarker<From>,To> {
1761 TConfNoFactor *conf = (TConfNoFactor *)config;
1763 const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1764 iter = (
char*)iter + config->
fOffset;
1765 end = (
char*)end + config->
fOffset;
1766 for(; iter != end; iter = (
char*)iter + incr ) {
1768 *(To*)( ((
char*)iter) ) = (To)temp;
1774 template <
typename T>
1777 const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1778 iter = (
char*)iter + config->
fOffset;
1779 end = (
char*)end + config->
fOffset;
1780 for(; iter != end; iter = (
char*)iter + incr ) {
1781 T *
x = (
T*) ((
char*) iter);
1787 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
1790 const Int_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1793 for(
void *iter = start; iter != end; iter = (
char*)iter + incr ) {
1794 iter_action(buf, iter, config);
1804 UInt_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1805 UInt_t n = (((
char*)end)-((
char*)start))/incr;
1806 char **arrptr =
new char*[
n];
1808 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
1809 arrptr[i] = (
char*)iter;
1841 UInt_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1842 UInt_t n = (((
char*)end)-((
char*)start))/incr;
1843 char **arrptr =
new char*[
n];
1845 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
1846 arrptr[i] = (
char*)iter;
1857 UInt_t incr = ((TVectorLoopConfig*)loopconfig)->fIncrement;
1858 UInt_t n = (((
char*)end)-((
char*)start))/incr;
1859 char **arrptr =
new char*[
n];
1861 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
1862 arrptr[i] = (
char*)iter;
1869 template <
typename T>
1874 TConfigSTL *config = (TConfigSTL*)conf;
1876 buf.
ReadVersion(&start, &count, config->fOldClass);
1878 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)addr)+config->fOffset);
1881 vec->resize(nvalues);
1883#ifdef R__VISUAL_CPLUSPLUS
1889 T *begin = &(*vec->begin());
1900 TConfigSTL *config = (TConfigSTL*)conf;
1902 buf.
ReadVersion(&start, &count, config->fOldClass);
1904 std::vector<bool> *
const vec = (std::vector<bool>*)(((
char*)addr)+config->fOffset);
1907 vec->resize(nvalues);
1909 bool *items =
new bool[nvalues];
1911 for(
Int_t i = 0 ; i < nvalues; ++i) {
1912 (*vec)[i] = items[i];
1931 TConfigSTL *config = (TConfigSTL*)conf;
1933 buf.
ReadVersion(&start, &count, config->fOldClass);
1935 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)addr)+config->fOffset);
1938 vec->resize(nvalues);
1940#ifdef R__VISUAL_CPLUSPLUS
1946 float *begin = &(*vec->begin());
1957 TConfigSTL *config = (TConfigSTL*)conf;
1959 buf.
ReadVersion(&start, &count, config->fOldClass);
1961 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)addr)+config->fOffset);
1964 vec->resize(nvalues);
1966#ifdef R__VISUAL_CPLUSPLUS
1972 double *begin = &(*vec->begin());
1979 template <
typename From,
typename To>
1980 struct ConvertCollectionBasicType {
1985 TConfigSTL *config = (TConfigSTL*)conf;
1987 buf.
ReadVersion(&start, &count, config->fOldClass);
1989 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->fOffset);
1992 vec->resize(nvalues);
1994 From *temp =
new From[nvalues];
1996 for(
Int_t ind = 0; ind < nvalues; ++ind) {
1997 (*vec)[ind] = (To)temp[ind];
2006 template <
typename From,
typename To>
2007 struct ConvertCollectionBasicType<NoFactorMarker<From>,To> {
2012 TConfigSTL *config = (TConfigSTL*)conf;
2014 buf.
ReadVersion(&start, &count, config->fOldClass);
2016 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->fOffset);
2019 vec->resize(nvalues);
2021 From *temp =
new From[nvalues];
2023 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2024 (*vec)[ind] = (To)temp[ind];
2033 template <
typename To>
2038 TConfigSTL *config = (TConfigSTL*)conf;
2040 buf.
ReadVersion(&start, &count, config->fOldClass);
2042 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->fOffset);
2045 vec->resize(nvalues);
2049 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2050 (*vec)[ind] = (To)temp[ind];
2060 struct VectorPtrLooper {
2062 template <
typename T>
2067 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2068 T *
x = (
T*)( ((
char*) (*(
void**)iter) ) + offset );
2074 template <
typename From,
typename To>
2075 struct ConvertBasicType {
2081 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2083 To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
2090 template <
typename To>
2091 struct ConvertBasicType<BitsMarker,To> {
2097 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2104 To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
2111 template <
typename From,
typename To>
2112 struct ConvertBasicType<WithFactorMarker<From>,To> {
2116 TConfWithFactor *conf = (TConfWithFactor *)config;
2119 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2121 To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
2128 template <
typename From,
typename To>
2129 struct ConvertBasicType<NoFactorMarker<From>,To> {
2133 TConfNoFactor *conf = (TConfNoFactor *)config;
2136 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2138 To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
2145 template <
typename T>
2150 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2151 T *
x = (
T*)( ((
char*) (*(
void**)iter) ) + offset );
2157 template <Int_t (*action)(TBuffer&,
void *,const TConfiguration*)>
2160 for(
void *iter = start; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2161 action(buf, *(
void**)iter, config);
2171 return GenericRead(buf,start,end,config);
2176 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2177 char **arr = (
char**)iter;
2183 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2184 char **arr = (
char**)iter;
2190 struct AssociativeLooper {
2192 template <
typename T>
2208 template <
typename T,
void (*action)(TBuffer&,
void *,Int_t)>
2213 TConfigSTL *config = (TConfigSTL*)conf;
2215 buf.
ReadVersion(&start, &count, config->fOldClass);
2217 TClass *newClass = config->fNewClass;
2223 void* alternative = newProxy->
Allocate(nvalues,
true);
2227 void *begin = &(startbuf[0]);
2228 void *end = &(endbuf[0]);
2229 config->fCreateIterators(alternative, &begin, &end, newProxy);
2233 action(buf,begin,nvalues);
2235 if (begin != &(startbuf[0])) {
2237 config->fDeleteTwoIterators(begin,end);
2240 newProxy->
Commit(alternative);
2248 return ReadNumericalCollection<bool,SimpleRead<bool> >(buf,addr,conf);
2253 return ReadNumericalCollection<Float_t,SimpleReadFloat16 >(buf,addr,conf);
2258 return ReadNumericalCollection<Double_t,SimpleReadDouble32 >(buf,addr,conf);
2261 template <
typename T>
2264 return ReadNumericalCollection<T,SimpleRead<T> >(buf,addr,conf);
2267 template <
typename From,
typename To>
2268 struct ConvertRead {
2271 From *temp =
new From[nvalues];
2273 To *vec = (To*)addr;
2274 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2275 vec[ind] = (To)temp[ind];
2281 template <
typename From,
typename To>
2282 struct ConvertRead<NoFactorMarker<From>,To> {
2285 From *temp =
new From[nvalues];
2287 To *vec = (To*)addr;
2288 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2289 vec[ind] = (To)temp[ind];
2295 template <
typename From,
typename To>
2296 struct ConvertRead<WithFactorMarker<From>,To> {
2299 From *temp =
new From[nvalues];
2302 To *vec = (To*)addr;
2303 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2304 vec[ind] = (To)temp[ind];
2310 template <
typename From,
typename To>
2311 struct ConvertCollectionBasicType {
2314 return ReadNumericalCollection<To,ConvertRead<From,To>::Action >(buf,addr,conf);
2320 struct GenericLooper {
2322 template <
typename T>
2325 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2327 Next_t next = loopconfig->fNext;
2331 void *iter = loopconfig->fCopyIterator(iterator,start);
2333 while( (addr = next(iter,end)) ) {
2334 T *
x = (
T*)( ((
char*)addr) + offset );
2337 if (iter != &iterator[0]) {
2338 loopconfig->fDeleteIterator(iter);
2343 template <
typename T>
2346 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2348 Next_t next = loopconfig->fNext;
2352 void *iter = loopconfig->fCopyIterator(iterator,start);
2354 while( (addr = next(iter,end)) ) {
2355 T *
x = (
T*)( ((
char*)addr) + offset );
2358 if (iter != &iterator[0]) {
2359 loopconfig->fDeleteIterator(iter);
2364 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
2367 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2370 Next_t next = loopconfig->fNext;
2373 void *iter = loopconfig->fCopyIterator(&iterator,start);
2375 while( (addr = next(iter,end)) ) {
2376 iter_action(buf, addr, config);
2378 if (iter != &iterator[0]) {
2379 loopconfig->fDeleteIterator(iter);
2384 template <
typename From,
typename To>
2388 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2391 Next_t next = loopconfig->fNext;
2394 void *iter = loopconfig->fCopyIterator(&iterator,start);
2396 while( (addr = next(iter,end)) ) {
2397 To *
x = (To*)( ((
char*)addr) + offset );
2401 if (iter != &iterator[0]) {
2402 loopconfig->fDeleteIterator(iter);
2407 template <
typename From,
typename To>
2414 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2415 Next_t next = loopconfig->fNext;
2419 while( (addr = next(iter,end)) ) {
2420 To *
x = (To*)(addr);
2427 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter = Generic >
2428 struct ConvertBasicType {
2433 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2437 From *items =
new From[nvalues];
2439 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
2445 template <
typename To>
2446 struct ConvertBasicType<BitsMarker, To, Generic> {
2451 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2456 UInt_t *items = items_storage;
2459 Next_t next = loopconfig->fNext;
2462 void *iter = loopconfig->fCopyIterator(&iterator,start);
2464 while( (addr = next(iter,end)) ) {
2469 To *
x = (To*)( ((
char*)addr) + offset );
2473 if (iter != &iterator[0]) {
2474 loopconfig->fDeleteIterator(iter);
2477 delete [] items_storage;
2482 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
2483 struct ConvertBasicType<WithFactorMarker<From>,To,Converter > {
2488 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2492 TConfSTLWithFactor *conf = (TConfSTLWithFactor *)config;
2494 From *items =
new From[nvalues];
2496 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
2502 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
2503 struct ConvertBasicType<NoFactorMarker<From>,To,Converter > {
2508 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2512 TConfSTLNoFactor *conf = (TConfSTLNoFactor *)config;
2514 From *items =
new From[nvalues];
2516 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
2527 return GenericRead(buf,start,end,loopconfig, config);
2532 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2539 TGenericLoopConfig *loopconfig = (TGenericLoopConfig*)loopconf;
2544 template <
typename T>
2563 template <
typename ActionHolder>
2568 TConfigSTL *config = (TConfigSTL*)conf;
2570 buf.
ReadVersion(&start, &count, config->fOldClass);
2572 TClass *newClass = config->fNewClass;
2578 void* alternative = newProxy->
Allocate(nvalues,
true);
2582 void *begin = &(startbuf[0]);
2583 void *end = &(endbuf[0]);
2584 config->fCreateIterators(alternative, &begin, &end, newProxy);
2588 TGenericLoopConfig loopconf(newProxy,
kTRUE);
2589 ActionHolder::Action(buf,begin,end,&loopconf,config);
2591 if (begin != &(startbuf[0])) {
2593 config->fDeleteTwoIterators(begin,end);
2596 newProxy->
Commit(alternative);
2604 return ReadNumericalCollection<ConvertBasicType<bool,bool,Numeric > >(buf,addr,conf);
2609 return ReadNumericalCollection<ConvertBasicType<NoFactorMarker<float>,float,Numeric > >(buf,addr,conf);
2614 return ReadNumericalCollection<ConvertBasicType<float,double,Numeric > >(buf,addr,conf);
2619 template <
typename T>
2622 return ReadNumericalCollection<ConvertBasicType<T,T,Numeric > >(buf,addr,conf);
2625 template <
typename From,
typename To>
2626 struct ConvertCollectionBasicType {
2630 return ReadNumericalCollection<ConvertBasicType<From,To,Numeric > >(buf,addr,conf);
2637template <
typename Looper,
typename From>
2665template <
class Looper>
2685 case TStreamerInfo::kBits:
Error(
"GetNumericCollectionReadAction",
"There is no support for kBits outside of a TObject.");
break;
2687 TConfigSTL *alternate =
new TConfSTLNoFactor(conf,12);
2700 TConfigSTL *alternate =
new TConfSTLNoFactor(conf,0);
2716 Fatal(
"GetNumericCollectionReadAction",
"Is confused about %d",
type);
2721template <
typename Looper,
typename From>
2748template <
typename Looper>
2753 return GetConvertCollectionReadActionFrom<Looper,Bool_t>(newtype, conf );
2756 return GetConvertCollectionReadActionFrom<Looper,Char_t>(newtype, conf );
2759 return GetConvertCollectionReadActionFrom<Looper,Short_t>(newtype, conf );
2762 return GetConvertCollectionReadActionFrom<Looper,Int_t>(newtype, conf );
2765 return GetConvertCollectionReadActionFrom<Looper,Long_t>(newtype, conf );
2768 return GetConvertCollectionReadActionFrom<Looper,Long64_t>(newtype, conf );
2771 return GetConvertCollectionReadActionFrom<Looper,Float_t>( newtype, conf );
2774 return GetConvertCollectionReadActionFrom<Looper,Double_t>(newtype, conf );
2777 return GetConvertCollectionReadActionFrom<Looper,UChar_t>(newtype, conf );
2780 return GetConvertCollectionReadActionFrom<Looper,UShort_t>(newtype, conf );
2783 return GetConvertCollectionReadActionFrom<Looper,UInt_t>(newtype, conf );
2786 return GetConvertCollectionReadActionFrom<Looper,ULong_t>(newtype, conf );
2789 return GetConvertCollectionReadActionFrom<Looper,ULong64_t>(newtype, conf );
2792 return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Float16_t> >( newtype, conf );
2795 return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Double32_t> >( newtype, conf );
2798 Error(
"GetConvertCollectionReadAction",
"There is no support for kBits outside of a TObject.");
2807template <
class Looper>
2828 return TConfiguredAction( Looper::template ReadAction<ReadBasicType_WithFactor<float> >,
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
2831 if (!nbits) nbits = 12;
2832 return TConfiguredAction( Looper::template ReadAction<ReadBasicType_NoFactor<float> >,
new TConfNoFactor(info,i,compinfo,offset,nbits) );
2838 return TConfiguredAction( Looper::template ReadAction<ReadBasicType_WithFactor<double> >,
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
2844 return TConfiguredAction( Looper::template ReadAction<ReadBasicType_NoFactor<double> >,
new TConfNoFactor(info,i,compinfo,offset,nbits) );
2862 return GetCollectionReadConvertAction<Looper,Bool_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2865 return GetCollectionReadConvertAction<Looper,Char_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2868 return GetCollectionReadConvertAction<Looper,Short_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2871 return GetCollectionReadConvertAction<Looper,Int_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2874 return GetCollectionReadConvertAction<Looper,Long_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2877 return GetCollectionReadConvertAction<Looper,Long64_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2880 return GetCollectionReadConvertAction<Looper,Float_t>( element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2883 return GetCollectionReadConvertAction<Looper,Double_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2886 return GetCollectionReadConvertAction<Looper,UChar_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2889 return GetCollectionReadConvertAction<Looper,UShort_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2892 return GetCollectionReadConvertAction<Looper,UInt_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2895 return GetCollectionReadConvertAction<Looper,ULong_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2898 return GetCollectionReadConvertAction<Looper,ULong64_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2901 return GetCollectionReadConvertAction<Looper,BitsMarker>(element->
GetNewType(),
new TBitsConfiguration(info,i,compinfo,offset) );
2905 return GetCollectionReadConvertAction<Looper,WithFactorMarker<float> >(element->
GetNewType(),
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
2908 if (!nbits) nbits = 12;
2909 return GetCollectionReadConvertAction<Looper,NoFactorMarker<float> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,offset,nbits) );
2915 return GetCollectionReadConvertAction<Looper,WithFactorMarker<double> >(element->
GetNewType(),
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
2919 return GetCollectionReadConvertAction<Looper,Float_t>(element->
GetNewType(),
new TConfiguration(info,i,compinfo,offset) );
2921 return GetCollectionReadConvertAction<Looper,NoFactorMarker<double> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,offset,nbits) );
2927 return TConfiguredAction( Looper::GenericRead,
new TGenericConfiguration(info,i,compinfo) );
2934template <
class Looper>
3041 fNslots = ndata + ndata/2 + 1;
3060 for (i = 0; i < ndata; ++i) {
3105 if (!previousOptimized) {
3116 if (
fComp[keep].fLength == 0) {
3121 isOptimized =
kTRUE;
3122 previousOptimized =
kTRUE;
3123 }
else if (element->
GetType() < 0) {
3136 previousOptimized =
kFALSE;
3154 Warning(
"Compile",
"Counter %s should not be skipped from class %s", element->
GetName(),
GetName());
3165 if (
fComp[keep].fLength == 0) {
3169 previousOptimized =
kFALSE;
3179 for (i = 0; i <
fNdata; ++i) {
3208template <
typename From>
3240 switch (compinfo->
fType) {
3258 readSequence->
AddAction( ReadBasicType_WithFactor<float>,
new TConfWithFactor(
this,i,compinfo,compinfo->
fOffset,element->
GetFactor(),element->
GetXmin()) );
3261 if (!nbits) nbits = 12;
3262 readSequence->
AddAction( ReadBasicType_NoFactor<float>,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
3268 readSequence->
AddAction( ReadBasicType_WithFactor<double>,
new TConfWithFactor(
this,i,compinfo,compinfo->
fOffset,element->
GetFactor(),element->
GetXmin()) );
3274 readSequence->
AddAction( ReadBasicType_NoFactor<double>,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
3291 if (newClass && newClass != oldClass) {
3293 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3295 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
3299 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3301 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
3305 if (newClass && newClass != oldClass) {
3307 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3310 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
3314 readSequence->
AddAction(GetConvertCollectionReadAction<VectorLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
3317 readSequence->
AddAction(GetConvertCollectionReadAction<AssociativeLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
3323 readSequence->
AddAction(GetConvertCollectionReadAction<GenericLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
3330 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3333 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
3355 if (newClass && newClass != oldClass) {
3357 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3359 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
3363 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3365 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetTypeName(),isSTLbase));
3369 if (newClass && newClass != oldClass) {
3371 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3373 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
3377 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3379 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetTypeName(),isSTLbase));
3427 AddReadConvertAction<BitsMarker>(readSequence, compinfo->
fNewType,
new TBitsConfiguration(
this,i,compinfo,compinfo->
fOffset) );
3431 AddReadConvertAction<WithFactorMarker<float> >(readSequence, compinfo->
fNewType,
new TConfWithFactor(
this,i,compinfo,compinfo->
fOffset,element->
GetFactor(),element->
GetXmin()) );
3434 if (!nbits) nbits = 12;
3435 AddReadConvertAction<NoFactorMarker<float> >(readSequence, compinfo->
fNewType,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
3441 AddReadConvertAction<WithFactorMarker<double> >(readSequence, compinfo->
fNewType,
new TConfWithFactor(
this,i,compinfo,compinfo->
fOffset,element->
GetFactor(),element->
GetXmin()) );
3447 AddReadConvertAction<NoFactorMarker<double> >(readSequence, compinfo->
fNewType,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
3475 switch (compinfo->
fType) {
3516 default:
generic =
kTRUE;
break;
3543 readSequence->
AddAction( GetCollectionReadAction<VectorPtrLooper>(
this,element,compinfo->
fType,i,compinfo,compinfo->
fOffset) );
3560 switch (compinfo->
fType) {
3644#if defined(CDJ_NO_COMPILE)
3647 writeSequence->
fActions.pop_back();
3669 switch (compinfo->
fType) {
3824 default:
generic =
kTRUE;
break;
3840#if defined(CDJ_NO_COMPILE)
3843 writeSequence->
fActions.pop_back();
3865#if defined(CDJ_NO_COMPILE)
3870 writeSequence->Addaction( GetCollectionWriteAction<VectorPtrLooper>(
this,element,compinfo->
fType,i,compinfo,compinfo->
fOffset) );
3873 writeSequence->
AddAction( VectorPtrLooper::GenericWrite,
new TGenericConfiguration(
this,i,compinfo) );
3916 for (
UInt_t i = 0; i < ndata; ++i) {
3940 ::Warning(
"CreateReadMemberWiseActions",
"%s",
3956 if (newType != oldType) {
3974 TConfiguredAction action( GetCollectionReadAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
3977 sequence->
AddAction( GetCollectionReadAction<VectorLooper>(info,element,oldType,i,compinfo,offset));
3984 TConfiguredAction action( GetCollectionReadAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
3987 sequence->
AddAction( GetCollectionReadAction<GenericLooper>(info,element,oldType,i,compinfo,offset) );
4031 for (
UInt_t i = 0; i < ndata; ++i) {
4059#if defined(CDJ_NO_COMPILE)
4062 if (newType != oldType) {
4078 TConfiguredAction action( GetCollectionWriteAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
4081 sequence->
AddAction(GetCollectionWriteAction<VectorLooper>(info,element,oldType,i,compinfo,offset));
4090 TConfiguredAction action( GetWriteAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
4111 sequence->
AddAction( GenericLooper<WriteBasicType_WithFactor<float> >,
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
4114 if (!nbits) nbits = 12;
4115 sequence->
AddAction( GenericLooper<WriteBasicType_NoFactor<float> >,
new TConfNoFactor(info,i,compinfo,offset,nbits) );
4121 sequence->
AddAction( GenericLooper<WriteBasicType_WithFactor<double> >,
new TConfWithFactor(info,i,compinfo,offset,element->
GetFactor(),element->
GetXmin()) );
4125 sequence->
AddAction( GenericLooper<ConvertBasicType<float,double> >,
new TConfiguration(info,i,compinfo,offset) );
4127 sequence->
AddAction( GenericLooper<WriteBasicType_NoFactor<double> >,
new TConfNoFactor(info,i,compinfo,offset,nbits) );
4148 sequence->
AddAction( GetCollectionWriteAction<VectorLooper>(info,element,oldType,i,compinfo,offset) );
4166 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
4167 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
4171 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
4172 iter->fConfiguration->AddToOffset(delta);
4181 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
4182 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
4186 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
4187 iter->fConfiguration->SetMissing();
4199 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
4200 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
4205 sequence->
AddAction( iter->fAction, conf );
4215 for(
UInt_t id = 0;
id < element_ids.size(); ++id) {
4216 if ( element_ids[
id].fElemID < 0 ) {
4217 if (element_ids[
id].fNestedIDs) {
4218 auto original = create(element_ids[
id].fNestedIDs->fInfo,
4221 if (element_ids[
id].fNestedIDs->fOnfileObject) {
4222 auto conf =
new TConfigurationPushDataCache(element_ids[
id].fNestedIDs->fInfo, element_ids[
id].fNestedIDs->fOnfileObject, offset);
4229 original->AddToSubSequence(sequence, element_ids[
id].fNestedIDs->fIDs, element_ids[
id].fNestedIDs->fOffset, create);
4231 if (element_ids[
id].fNestedIDs->fOnfileObject)
4233 new TConfigurationPushDataCache(element_ids[
id].fNestedIDs->fInfo,
nullptr, element_ids[
id].fNestedIDs->fOffset) );
4235 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
4236 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
4241 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
4243 sequence->
AddAction( iter->fAction, conf );
4248 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
4249 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
4261 if ( iter->fConfiguration->fElemId == (
UInt_t)element_ids[
id].fElemID ) {
4263 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
4265 sequence->
AddAction( iter->fAction, conf );
4282 AddToSubSequence(sequence, element_ids, offset, create);
4296 for(
UInt_t id = 0;
id < element_ids.size(); ++id) {
4297 if ( element_ids[
id] < 0 ) {
4298 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
4299 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
4304 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
4306 sequence->
AddAction( iter->fAction, conf );
4309 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
4310 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
4313 if ( iter->fConfiguration->fElemId == (
UInt_t)element_ids[
id] ) {
4315 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
4317 sequence->
AddAction( iter->fAction, conf );
4325#if !defined(R__WIN32) && !defined(_AIX)
4334#if defined(R__WIN32) || defined(__CYGWIN__) || defined(_AIX)
4335 return "not available on this platform";
4337 MEMORY_BASIC_INFORMATION mbi;
4338 if (!VirtualQuery (func, &mbi,
sizeof (mbi)))
4343 HMODULE hMod = (HMODULE) mbi.AllocationBase;
4344 static char moduleName[MAX_PATH];
4346 if (!GetModuleFileNameA (hMod, moduleName,
sizeof (moduleName)))
4354 if (dladdr((
void*)func,&info)==0) {
4356 return "name not found";
4359 return info.dli_sname;
4371 fLoopConfig->Print();
4373 TStreamerInfoActions::ActionContainer_t::const_iterator end = fActions.end();
4374 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = fActions.begin();
4378 iter->fConfiguration->Print();
4379 if (strstr(opt,
"func")) {
T ReadBuffer(TBufferFile *buf)
One of the template functions used to read objects from messages.
void Error(const char *location, const char *msgfmt,...)
void Warning(const char *location, const char *msgfmt,...)
void Fatal(const char *location, const char *msgfmt,...)
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)
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
The ROOT global object gROOT contains a list of all defined classes.
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
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.
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.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
Int_t GetEntries() const
Return the number of objects in array (i.e.
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',...
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.
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)
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)
INLINE_TEMPLATE_ARGS Int_t ReadBasicType(TBuffer &buf, void *addr, const TConfiguration *config)
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 WriteBasicType(TBuffer &buf, void *addr, const TConfiguration *config)
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 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)
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