39# define INLINE_TEMPLATE_ARGS
41# define INLINE_TEMPLATE_ARGS inline
60 return isEmulated || (isVector && hasDefaultAlloc);
63 template <
typename From>
68 template <
typename From>
111 printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
112 " %s, offset=%d (%s), elemnId=%d \n",
128 printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
129 " %s, bufpos=%d, arr=%p, offset=%d (%s)\n",
139 printf(
"TLoopConfiguration: unconfigured\n");
171 printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
172 " %s, offset=%d (%s)\n",
212 std::unique_ptr<TStreamerInfoActions::TActionSequence>
fActions;
215 std::unique_ptr<TStreamerInfoActions::TActionSequence> actions) :
252 char *obj = (
char*)addr;
259 char *obj = (
char*)addr;
264 template <
typename T>
267 T *
x = (T*)( ((
char*)addr) + config->
fOffset );
286 uid = ( obj->
GetUniqueID() & 0xffffff) + (gpid<<24);
295 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
303 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
335 auto memoryClass = conf->fInMemoryClass;
336 auto onfileClass = conf->fOnfileClass;
338 char *
const where = (((
char*)addr)+config->
fOffset);
348 [[maybe_unused]]
auto memoryClass = conf->fInMemoryClass;
349 auto onfileClass = conf->fOnfileClass;
350 assert((memoryClass ==
nullptr || memoryClass == onfileClass)
351 &&
"Need to new TBufferFile::WriteClassBuffer overload to support this case");
353 char *
const where = (((
char*)addr)+config->
fOffset);
374 template <
typename T>
381 template <
typename T>
384 T *
x = (T *)(((
char *)addr) + config->
fOffset);
390 template <
typename Onfile,
typename Memory>
396 temp = (Onfile)(*(Memory*)( ((
char*)addr) + config->
fOffset ));
404 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
412 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
420 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
428 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
435 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
442 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
451 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
458 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
508 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) {};
512 template <
typename T>
531 template <
typename T>
549 ((
TString*)(((
char*)addr)+config->
fOffset))->TString::Streamer(buf);
559 ((
TString*)(((
char*)addr)+config->
fOffset))->TString::Streamer(buf);
569 ((
TObject*)(((
char*)addr)+config->
fOffset))->TObject::Streamer(buf);
579 ((
TObject*)(((
char*)addr)+config->
fOffset))->TObject::Streamer(buf);
640 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(oldClass),
fStreamer(0),
fTypeName(type_name),
fIsSTLBase(isbase),
644 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(newClass),
fStreamer(0),
fTypeName(type_name),
fIsSTLBase(isbase),
648 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(oldClass),
fStreamer(streamer),
fTypeName(type_name),
fIsSTLBase(isbase),
651 TConfigSTL(
Bool_t read,
TVirtualStreamerInfo *info,
UInt_t id,
TCompInfo_t *compinfo,
Int_t offset,
UInt_t length,
TClass *oldClass,
TClass *newClass,
TMemberStreamer* streamer,
const char *type_name,
Bool_t isbase) :
652 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(newClass),
fStreamer(streamer),
fTypeName(type_name),
fIsSTLBase(isbase),
686 printf(
"TVectorLoopConfig: increment=%ld\n",
fIncrement);
758 void*
GetFirstAddress(
void *start_collection,
const void *end_collection)
const override
764 void *arr0 =
fNext(iter,end_collection);
765 if (iter != &iterator[0]) {
794 void* alternative = oldProxy->
Allocate(nobjects,
true);
800 void *begin = &(startbuf[0]);
801 void *end = &(endbuf[0]);
806 if (begin != &(startbuf[0])) {
811 oldProxy->
Commit(alternative);
826 void* env = oldProxy->
Allocate(nobjects,
true);
828 if (nobjects || vers < 7 ) {
859 int objectSize = oldClass->
Size();
860 char *obj = (
char*)addr;
861 char *endobj = obj + conf->
fLength*objectSize;
863 for(; obj<endobj; obj+=objectSize) {
867 void* alternative = oldProxy->
Allocate(nobjects,
true);
871 void *begin = &(startbuf[0]);
872 void *end = &(endbuf[0]);
877 if (begin != &(startbuf[0])) {
882 oldProxy->
Commit(alternative);
895 int objectSize = oldClass->
Size();
896 char *obj = (
char*)addr;
897 char *endobj = obj + conf->
fLength*objectSize;
899 for(; obj<endobj; obj+=objectSize) {
903 void* env = oldProxy->
Allocate(nobjects,
true);
905 if (nobjects || vers < 7 ) {
928 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
929 vers, buf.
GetParent() ? buf.
GetParent()->
GetName() :
"memory/socket", oldClass ? oldClass->
GetName() :
"(could not find the origin TClass)", newClass ? newClass->
GetName() :
"(could not find the destination TClass)" );
930 }
else if (newClass && oldClass){
940 void* alternative = newProxy->
Allocate(nobjects,
true);
945 void *begin = &(startbuf[0]);
946 void *end = &(endbuf[0]);
951 if (begin != &(startbuf[0])) {
956 newProxy->
Commit(alternative);
972 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
973 vers, buf.
GetParent() ? buf.
GetParent()->
GetName() :
"memory/socket", oldClass ? oldClass->
GetName() :
"(could not find the origin TClass)", newClass ? newClass->
GetName() :
"(could not find the destination TClass)" );
974 }
else if (newClass && oldClass) {
981 int objectSize = newClass->
Size();
982 char *obj = (
char*)addr;
983 char *endobj = obj + conf->
fLength*objectSize;
985 for(; obj<endobj; obj+=objectSize) {
989 void* alternative = newProxy->
Allocate(nobjects,
true);
994 void *begin = &(startbuf[0]);
995 void *end = &(endbuf[0]);
1000 if (begin != &(startbuf[0])) {
1005 newProxy->
Commit(alternative);
1060 assert(newClass && onfileClass && newClass == onfileClass &&
1061 "Class level transformation while writing is not yet supported");
1063 if (newClass && onfileClass) {
1077 void *begin = &(startbuf[0]);
1078 void *end = &(endbuf[0]);
1083 if (begin != &(startbuf[0])) {
1106 assert(newClass && onfileClass && newClass == onfileClass &&
1107 "Class level transformation while writing is not yet supported");
1109 if (newClass && onfileClass) {
1116 int objectSize = newClass->
Size();
1117 char *obj = (
char*)addr;
1118 char *endobj = obj + conf->
fLength * objectSize;
1120 for (; obj < endobj; obj += objectSize) {
1128 void *begin = &(startbuf[0]);
1129 void *end = &(endbuf[0]);
1134 if (begin != &(startbuf[0])) {
1163 memberwise(buf,((
char*)addr)+config->
fOffset,config, vers);
1165 objectwise(buf,((
char*)addr)+config->
fOffset,config, vers, start);
1186 && !(strspn(aElement->
GetTitle(),
"||") == 2)
1190 memberwise(buf, ((
char *)addr) + config->
fOffset, config);
1193 objectwise(buf, ((
char *)addr) + config->
fOffset, config);
1199 template <
typename From,
typename To>
1206 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1211 template <
typename To>
1223 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1228 template <
typename From,
typename To>
1236 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1241 template <
typename From,
typename To>
1249 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1267 printf(
"StreamerInfoAction, class:%s, PushDataCache offset=%d\n",
1270 printf(
"StreamerInfoAction, class:%s, PopDataCache offset=%d\n",
1277 printf(
"StreamerInfoAction, class:%s, %sDataCache, bufpos=%d, arr=%p, offset=%d, onfileObject=%p\n",
1290 b.PushDataCache( onfileObject );
1301 b.PushDataCache( onfileObject );
1314 onfileObject->SetSize(
n);
1315 b.PushDataCache( onfileObject );
1352 fprintf(stdout,
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
1353 " %s, bufpos=%d, arr=%p, eoffset=%d, Redirect=%p\n",
1355 aElement->
ClassName(),
b.Length(),addr, 0,
b.PeekDataCache() ?
b.PeekDataCache()->GetObjectAt(0) : 0);
1372 Int_t bufpos =
b.Length();
1377 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1378 char *ptr = (
char*)addr;
1385 b.SetBufferOffset(bufpos);
1393 Int_t bufpos =
b.Length();
1399 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1400 char *ptr = (
char*)start;
1401 UInt_t n = (((
void**)end)-((
void**)start));
1405 void *cached_start = (*cached)[0];
1406 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.
fIncrement;
1407 config->
fAction(
b,cached_start,cached_end,&cached_config);
1411 b.SetBufferOffset(bufpos);
1420 Int_t bufpos =
b.Length();
1425 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1426 char *ptr = (
char*)start;
1431 void *cached_start = (*cached)[0];
1432 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.
fIncrement;
1433 config->
fAction(
b,cached_start,cached_end,&cached_config);
1437 b.SetBufferOffset(bufpos);
1446 Int_t bufpos =
b.Length();
1453 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1458 void *cached_start = (*cached)[0];
1459 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.
fIncrement;
1460 config->
fAction(
b,cached_start,cached_end,&cached_config);
1464 b.SetBufferOffset(bufpos);
1514 template<
typename Looper>
1517 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
1521 std::unique_ptr<TStreamerInfoActions::TActionSequence> actions(
1526 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
1530 std::unique_ptr<TStreamerInfoActions::TActionSequence> actions(
1538 auto actions = conf->fActions.get();
1549 Looper::template LoopOverCollection< ReadViaExtStreamer >(buf, start, end, loopconfig, config);
1559 Looper::template LoopOverCollection< WriteViaExtStreamer >(buf, start, end, loopconfig, config);
1571 (*pstreamer)(buf, (
char *) addr + ioffset , *counter);
1575 template<
bool kIsTextT>
1588 char** pp = (
char**) ((
char *) addr + ioffset );
1630 char** pp = (
char**) ((
char *) addr + ioffset );
1654 char**
r = (
char**) pp[ndx];
1664 template<
bool kIsTextT,
typename... Ts>
1673 Looper::template LoopOverCollection< StreamerLoopExternal > (buf, start, args..., config);
1693 if (fileVersion > 51508) {
1696 Looper::template LoopOverCollection< WriteStreamerLoopPoly<kIsTextT> > (buf, start, args..., config);
1701 Looper::template LoopOverCollection< ReadStreamerLoopStatic > (buf, start, args..., config);
1710 template<
bool kIsTextT>
1727 char **pp = (
char **)((
char *)addr + ioffset );
1780 pp[ndx] = (
char *)cl->
NewArray(vlen);
1782 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1789 pp[ndx] = (
char *)
new char *[vlen];
1791 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1795 memset(pp[ndx], 0, vlen *
sizeof(
char *));
1825 char **pp = (
char **)((
char *)addr + ioffset );
1875 pp[ndx] = (
char *)cl->
NewArray(vlen);
1877 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1884 pp[ndx] = (
char *)
new char *[vlen];
1886 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1890 memset(pp[ndx], 0, vlen *
sizeof(
char *));
1903 char **
r = (
char **)pp[ndx];
1907 r[
v] = (
char *)cl->
New();
1921 template<
bool kIsTextT,
typename... Ts>
1934 Looper::template LoopOverCollection< StreamerLoopExternal > (buf, start, args..., config);
1955 if (fileVersion > 51508) {
1959 Looper::template LoopOverCollection< ReadStreamerLoopPoly<kIsTextT> > (buf, start, args..., config);
1964 Looper::template LoopOverCollection< ReadStreamerLoopStatic > (buf, start, args..., config);
1978 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
1981 iter_action(buf, start, config);
1990 template <
bool kIsText>
1992 template <
bool kIsText>
1995 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
2001 for(
void *iter = start; iter != end; iter = (
char*)iter + incr ) {
2002 iter_action(buf, iter, config);
2007 template <
typename T>
2011 iter = (
char*)iter + config->
fOffset;
2012 end = (
char*)end + config->
fOffset;
2013 for(; iter != end; iter = (
char*)iter + incr ) {
2014 T *
x = (T*) ((
char*) iter);
2020 template <
typename From,
typename To>
2027 iter = (
char*)iter + config->
fOffset;
2028 end = (
char*)end + config->
fOffset;
2029 for(; iter != end; iter = (
char*)iter + incr ) {
2031 *(To*)( ((
char*)iter) ) = (To)temp;
2037 template <
typename To>
2044 iter = (
char*)iter + config->
fOffset;
2045 end = (
char*)end + config->
fOffset;
2046 for(; iter != end; iter = (
char*)iter + incr ) {
2053 *(To*)( ((
char*)iter) ) = (To)temp;
2059 template <
typename From,
typename To>
2067 iter = (
char*)iter + config->
fOffset;
2068 end = (
char*)end + config->
fOffset;
2069 for(; iter != end; iter = (
char*)iter + incr ) {
2071 *(To*)( ((
char*)iter) ) = (To)temp;
2077 template <
typename From,
typename To>
2085 iter = (
char*)iter + config->
fOffset;
2086 end = (
char*)end + config->
fOffset;
2087 for(; iter != end; iter = (
char*)iter + incr ) {
2089 *(To*)( ((
char*)iter) ) = (To)temp;
2095 template <
typename T>
2099 iter = (
char*)iter + config->
fOffset;
2100 end = (
char*)end + config->
fOffset;
2101 for(; iter != end; iter = (
char*)iter + incr ) {
2102 T *
x = (T*) ((
char*) iter);
2108 template <
typename Onfile,
typename Memory>
2113 iter = (
char*)iter + config->
fOffset;
2114 end = (
char*)end + config->
fOffset;
2115 for(; iter != end; iter = (
char*)iter + incr ) {
2117 Onfile temp = (Onfile)(*(Memory*)((
char*) iter));
2124 template <
typename Onfile,
typename Memory>
2130 iter = (
char*)iter + config->
fOffset;
2131 end = (
char*)end + config->
fOffset;
2132 for(; iter != end; iter = (
char*)iter + incr ) {
2134 Onfile temp = (Onfile)(*(Memory*)((
char*) iter));
2141 template <
typename Onfile,
typename Memory>
2147 iter = (
char*)iter + config->
fOffset;
2148 end = (
char*)end + config->
fOffset;
2149 for(; iter != end; iter = (
char*)iter + incr ) {
2151 Onfile temp = (Onfile)(*(Memory*)((
char*) iter));
2164 UInt_t n = (((
char*)end)-((
char*)start))/incr;
2165 char **arrptr =
new char*[
n];
2167 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
2168 arrptr[i] = (
char*)iter;
2181 UInt_t n = (((
char*)end)-((
char*)start))/incr;
2182 char **arrptr =
new char*[
n];
2184 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
2185 arrptr[i] = (
char*)iter;
2197 UInt_t n = (((
char*)end)-((
char*)start))/incr;
2198 char **arrptr =
new char*[
n];
2200 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
2201 arrptr[i] = (
char*)iter;
2213 UInt_t n = (((
char*)end)-((
char*)start))/incr;
2214 char **arrptr =
new char*[
n];
2216 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
2217 arrptr[i] = (
char*)iter;
2224 template <
typename T>
2233 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)addr)+config->
fOffset);
2236 vec->resize(nvalues);
2238#ifdef R__VISUAL_CPLUSPLUS
2244 T *begin = &(*
vec->begin());
2251 template <
typename T>
2259 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)addr)+config->
fOffset);
2263 T *begin = &(*
vec->begin());
2278 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)addr)+config->
fOffset);
2281 vec->resize(nvalues);
2283#ifdef R__VISUAL_CPLUSPLUS
2289 float *begin = &(*
vec->begin());
2303 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)addr)+config->
fOffset);
2307 float *begin = &(*
vec->begin());
2322 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)addr)+config->
fOffset);
2325 vec->resize(nvalues);
2327#ifdef R__VISUAL_CPLUSPLUS
2333 double *begin = &(*
vec->begin());
2347 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)addr)+config->
fOffset);
2351 double *begin = &(*
vec->begin());
2358 template <
typename From,
typename To>
2368 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2371 vec->resize(nvalues);
2373 From *temp =
new From[nvalues];
2375 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2376 (*vec)[ind] = (To)temp[ind];
2385 template <
typename From,
typename To>
2395 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2398 vec->resize(nvalues);
2400 From *temp =
new From[nvalues];
2402 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2403 (*vec)[ind] = (To)temp[ind];
2412 template <
typename To>
2421 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2424 vec->resize(nvalues);
2428 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2429 (*vec)[ind] = (To)temp[ind];
2437 template <
typename Memory,
typename Onfile>
2446 std::vector<Memory> *
const vec = (std::vector<Memory>*)(((
char*)addr)+config->
fOffset);
2452 Onfile *temp =
new Onfile[nvalues];
2453 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2454 temp[ind] = (Onfile)((*
vec)[ind]);
2471 template <
bool kIsText>
2473 template <
bool kIsText>
2476 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
2479 using unique_ptr = std::unique_ptr<TStreamerInfoActions::TActionSequence>;
2483 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
2486 using unique_ptr = std::unique_ptr<TStreamerInfoActions::TActionSequence>;
2490 template <Int_t (*action)(TBuffer&,
void *,const TConfiguration*)>
2493 for(
void *iter = start; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2494 action(buf, *(
void**)iter, config);
2502 auto actions = conf->fActions.get();
2508 template <
typename T>
2513 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2514 T *
x = (T*)( ((
char*) (*(
void**)iter) ) +
offset );
2520 template <
typename From,
typename To>
2527 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2529 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2536 template <
typename To>
2543 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2550 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2557 template <
typename From,
typename To>
2565 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2567 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2574 template <
typename From,
typename To>
2582 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2584 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2591 template <
typename T>
2596 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2597 T *
x = (T*)( ((
char*) (*(
void**)iter) ) +
offset );
2603 template <
typename To,
typename From>
2609 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2610 From *from = (From*)( ((
char*) (*(
void**)iter) ) +
offset );
2611 To to = (To)(*from);
2618 template <
typename To,
typename From>
2625 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2626 From *from = (From*)( ((
char*) (*(
void**)iter) ) +
offset );
2627 To to = (To)(*from);
2633 template <
typename To,
typename From>
2640 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2641 From *from = (From*)( ((
char*) (*(
void**)iter) ) +
offset );
2642 To to = (To)(*from);
2670 LoopOverCollection< ReadViaExtStreamer >(buf, start, end, config);
2680 LoopOverCollection< WriteViaExtStreamer >(buf, start, end, config);
2688 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2689 char **arr = (
char**)iter;
2695 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2696 char **arr = (
char**)iter;
2707 template <
typename T>
2723 template <
typename T>
2739 template <
typename T>
2755 template <
typename T,
void (*action)(TBuffer&,
void *,Int_t)>
2770 void* alternative = newProxy->
Allocate(nvalues,
true);
2774 void *begin = &(startbuf[0]);
2775 void *end = &(endbuf[0]);
2780 action(buf,begin,nvalues);
2782 if (begin != &(startbuf[0])) {
2787 newProxy->
Commit(alternative);
2793 template <
void (*action)(TBuffer&,
void*, const TStreamerElement*)>
2797 while( (addr = next(iter, end)) )
2799 action(buf, addr, elem);
2803 template <
typename Memory,
typename Onfile,
void (*action)(TBuffer&,
void*, Int_t, const TStreamerElement *elem)>
2806 Onfile *temp =
new Onfile[nvalues];
2809 while( (addr = next(iter, end)) )
2811 temp[ind] = (Onfile)*(Memory*)addr;
2814 action(buf, temp, nvalues, elem);
2818 template <
typename T,
void (*action)(TBuffer&,
void *, const
void *, Next_t, Int_t, const TStreamerElement *elem)>
2828 void *collection = ((
char*)addr)+config->
fOffset;
2836 void *begin = &(startbuf[0]);
2837 void *end = &(endbuf[0]);
2842 if (begin != &(startbuf[0])) {
2854 return ReadNumericalCollection<Float_t,SimpleReadFloat16 >(buf,addr,conf);
2859 return WriteNumericalCollection<Float_t,LoopOverCollection<SimpleWriteFloat16> >(buf,addr,conf);
2864 return ReadNumericalCollection<Double_t,SimpleReadDouble32 >(buf,addr,conf);
2869 return WriteNumericalCollection<Double_t,LoopOverCollection<SimpleWriteDouble32> >(buf,addr,conf);
2872 template <
typename T>
2875 return ReadNumericalCollection<T,SimpleRead<T> >(buf,addr,conf);
2878 template <
typename T>
2881 return WriteNumericalCollection<T, LoopOverCollection<SimpleWrite<T>> >(buf,addr,conf);
2884 template <
typename From,
typename To>
2888 From *temp =
new From[nvalues];
2890 To *
vec = (To*)addr;
2891 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2892 vec[ind] = (To)temp[ind];
2898 template <
typename From,
typename To>
2902 From *temp =
new From[nvalues];
2904 To *
vec = (To*)addr;
2905 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2906 vec[ind] = (To)temp[ind];
2912 template <
typename From,
typename To>
2916 From *temp =
new From[nvalues];
2919 To *
vec = (To*)addr;
2920 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2921 vec[ind] = (To)temp[ind];
2926 template <
typename From,
typename To>
2930 return ReadNumericalCollection<To,ConvertRead<From,To>::Action >(buf,addr,conf);
2934 template <
typename Memory,
typename Onfile>
2938 return WriteNumericalCollection<Memory, ConvertLoopOverCollection<Memory, Onfile, ArrayWrite<Onfile>> >(buf,addr,conf);
2941 template <
typename Memory,
typename Onfile>
2945 return WriteNumericalCollection<Memory, ConvertLoopOverCollection<Memory,Onfile, ArrayWriteCompressed> >(buf,addr,conf);
2949 template <
typename Memory,
typename Onfile>
2953 return WriteNumericalCollection<Memory, ConvertLoopOverCollection<Memory,Onfile, ArrayWriteCompressed> >(buf,addr,conf);
2962 template <
bool kIsText>
2964 template <
bool kIsText>
2967 template <
typename T>
2978 while( (addr = next(iter,end)) ) {
2979 T *
x = (T*)( ((
char*)addr) +
offset );
2982 if (iter != &iterator[0]) {
2988 template <
typename T>
2999 while( (addr = next(iter,end)) ) {
3000 T *
x = (T*)( ((
char*)addr) +
offset );
3003 if (iter != &iterator[0]) {
3009 template <
typename To,
typename From>
3021 while( (addr = next(iter,end)) ) {
3022 From *
x = (From*)( ((
char*)addr) +
offset );
3026 if (iter != &iterator[0]) {
3033 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
3044 while( (addr = next(iter,end)) ) {
3045 iter_action(buf, addr, config);
3047 if (iter != &iterator[0]) {
3053 template <
typename From,
typename To>
3065 while( (addr = next(iter,end)) ) {
3066 To *
x = (To*)( ((
char*)addr) +
offset );
3070 if (iter != &iterator[0]) {
3086 while( (addr = next(iter,end)) ) {
3087 From *
x = (From*)( ((
char*)addr) +
offset );
3091 if (iter != &iterator[0]) {
3097 template <
typename From,
typename To>
3110 while( (addr = next(iter,end)) ) {
3111 To *
x = (To*)(addr);
3127 while( (addr = next(iter,end)) ) {
3128 From *
x = (From*)(addr);
3135 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter = Generic >
3145 From *items =
new From[nvalues];
3147 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
3153 template <
typename To>
3164 UInt_t *items = items_storage;
3172 while( (addr = next(iter,end)) ) {
3177 To *
x = (To*)( ((
char*)addr) +
offset );
3181 if (iter != &iterator[0]) {
3185 delete [] items_storage;
3190 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
3202 From *items =
new From[nvalues];
3204 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
3210 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
3222 From *items =
new From[nvalues];
3224 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
3230 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter = Generic >
3240 Onfile *items =
new Onfile[nvalues];
3241 Converter<Memory,Onfile>::WriteConvertAction(start, end, loopconfig, config, items);
3248 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter >
3260 Onfile *items =
new Onfile[nvalues];
3261 Converter<Memory,Onfile>::WriteConvertAction(start, end, loopconfig, config, items);
3262 R__ASSERT(
false &&
"Not yet implemented");
3270 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter >
3282 Onfile *items =
new Onfile[nvalues];
3283 Converter<Memory,Onfile>::WriteConvertAction(start, end, loopconfig, config, items);
3284 R__ASSERT(
false &&
"Not yet implemented");
3297 return GenericRead(buf,start,end,loopconfig, config);
3322 template <
typename T>
3353 template <
typename ActionHolder>
3368 void* alternative = newProxy->
Allocate(nvalues,
true);
3372 void *begin = &(startbuf[0]);
3373 void *end = &(endbuf[0]);
3379 ActionHolder::Action(buf,begin,end,&loopconf,config);
3381 if (begin != &(startbuf[0])) {
3386 newProxy->
Commit(alternative);
3392 template <
typename ActionHolder>
3402 void *collection = ((
char*)addr)+config->
fOffset;
3410 void *begin = &(startbuf[0]);
3411 void *end = &(endbuf[0]);
3417 ActionHolder::Action(buf,begin,end,&loopconf,config);
3419 if (begin != &(startbuf[0])) {
3431 return ReadNumericalCollection<ConvertBasicType<NoFactorMarker<float>, float,
Numeric > >(buf,addr,conf);
3436 return WriteNumericalCollection<WriteConvertBasicType<NoFactorMarker<float>, float,
Numeric > >(buf,addr,conf);
3441 return ReadNumericalCollection<ConvertBasicType<float,double,Numeric > >(buf,addr,conf);
3448 return WriteNumericalCollection<WriteConvertBasicType<float, double ,Numeric > >(buf,addr,conf);
3453 template <
typename T>
3458 return ReadNumericalCollection<ConvertBasicType<T,T,Numeric > >(buf,addr,conf);
3461 template <
typename T>
3466 return WriteNumericalCollection<WriteConvertBasicType<T,T,Numeric > >(buf,addr,conf);
3469 template <
typename From,
typename To>
3474 return ReadNumericalCollection<ConvertBasicType<From,To,Numeric > >(buf,addr,conf);
3478 template <
typename Memory,
typename Onfile>
3483 return WriteNumericalCollection<WriteConvertBasicType<Memory,Onfile,Numeric > >(buf,addr,conf);
3491template <
typename Looper,
typename From>
3518template <
class Looper>
3540 case TStreamerInfo::kBits:
Error(
"GetNumericCollectionReadAction",
"There is no support for kBits outside of a TObject.");
break;
3569 Fatal(
"GetNumericCollectionReadAction",
"Is confused about %d",
type);
3574template <
typename Looper,
typename From>
3597 Error(
"GetConvertCollectionReadActionFrom",
"UNEXPECTED: newtype == %d", newtype);
3605template <
typename Looper>
3610 return GetConvertCollectionReadActionFrom<Looper,Bool_t>(newtype, conf );
3612 return GetConvertCollectionReadActionFrom<Looper,Char_t>(newtype, conf );
3614 return GetConvertCollectionReadActionFrom<Looper,Short_t>(newtype, conf );
3616 return GetConvertCollectionReadActionFrom<Looper,Int_t>(newtype, conf );
3618 return GetConvertCollectionReadActionFrom<Looper,Long_t>(newtype, conf );
3620 return GetConvertCollectionReadActionFrom<Looper,Long64_t>(newtype, conf );
3622 return GetConvertCollectionReadActionFrom<Looper,Float_t>( newtype, conf );
3624 return GetConvertCollectionReadActionFrom<Looper,Double_t>(newtype, conf );
3626 return GetConvertCollectionReadActionFrom<Looper,UChar_t>(newtype, conf );
3628 return GetConvertCollectionReadActionFrom<Looper,UShort_t>(newtype, conf );
3630 return GetConvertCollectionReadActionFrom<Looper,UInt_t>(newtype, conf );
3632 return GetConvertCollectionReadActionFrom<Looper,ULong_t>(newtype, conf );
3634 return GetConvertCollectionReadActionFrom<Looper,ULong64_t>(newtype, conf );
3636 return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Float16_t> >( newtype, conf );
3638 return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Double32_t> >( newtype, conf );
3640 Error(
"GetConvertCollectionReadAction",
"There is no support for kBits outside of a TObject.");
3645 Error(
"GetConvertCollectionReadAction",
"UNEXPECTED: oldtype == %d", oldtype);
3650template <
class Looper>
3676 if (!nbits) nbits = 12;
3710 auto baseActions = Looper::CreateReadActionSquence(*baseinfo, baseLoopConfig);
3711 baseActions->AddToOffset(baseEl->
GetOffset());
3733 return TConfiguredAction( Looper::template LoopOverCollection<ReadViaClassBuffer>,
3736 return TConfiguredAction( Looper::template LoopOverCollection<ReadViaClassBuffer>,
3776 if (!nbits) nbits = 12;
3777 return GetCollectionReadConvertAction<Looper,NoFactorMarker<float> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,
offset,nbits) );
3788 return GetCollectionReadConvertAction<Looper,NoFactorMarker<double> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,
offset,nbits) );
3799template <
typename Looper,
typename From>
3802 switch (onfileType) {
3821 Error(
"GetConvertCollectionWriteActionFrom",
"Write Conversion to Float16_t not yet supported");
3825 Error(
"GetConvertCollectionWriteActionFrom",
"Write Conversion to Double32_t not yet supported");
3831 Error(
"GetConvertCollectionWriteActionFrom",
"UNEXPECTED: onfileType/oldtype == %d", onfileType);
3839template <
typename Looper>
3842 switch (memoryType) {
3844 return GetConvertCollectionWriteActionFrom<Looper,Bool_t>(onfileType, conf );
3846 return GetConvertCollectionWriteActionFrom<Looper,Char_t>(onfileType, conf );
3848 return GetConvertCollectionWriteActionFrom<Looper,Short_t>(onfileType, conf );
3850 return GetConvertCollectionWriteActionFrom<Looper,Int_t>(onfileType, conf );
3852 return GetConvertCollectionWriteActionFrom<Looper,Long_t>(onfileType, conf );
3854 return GetConvertCollectionWriteActionFrom<Looper,Long64_t>(onfileType, conf );
3856 return GetConvertCollectionWriteActionFrom<Looper,Float_t>(onfileType, conf );
3858 return GetConvertCollectionWriteActionFrom<Looper,Double_t>(onfileType, conf );
3860 return GetConvertCollectionWriteActionFrom<Looper,UChar_t>(onfileType, conf );
3862 return GetConvertCollectionWriteActionFrom<Looper,UShort_t>(onfileType, conf );
3864 return GetConvertCollectionWriteActionFrom<Looper,UInt_t>(onfileType, conf );
3866 return GetConvertCollectionWriteActionFrom<Looper,ULong_t>(onfileType, conf );
3868 return GetConvertCollectionWriteActionFrom<Looper,ULong64_t>(onfileType, conf );
3870 return GetConvertCollectionWriteActionFrom<Looper,Float16_t>(onfileType, conf );
3872 return GetConvertCollectionWriteActionFrom<Looper,Double32_t>(onfileType, conf );
3874 Error(
"GetConvertCollectionWriteActionFrom",
"There is no support for kBits outside of a TObject.");
3879 Error(
"GetConvertCollectionWriteActionFrom",
"UNEXPECTED: memoryType/newype == %d", memoryType);
3887template <
typename Looper,
typename Onfile>
3914template <
class Looper>
4001 if (!nbits) nbits = 12;
4002 return GetCollectionWriteConvertAction<Looper,NoFactorMarker<float> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,
offset,nbits) );
4014 return GetCollectionWriteConvertAction<Looper,NoFactorMarker<double> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,
offset,nbits) );
4030 auto baseActions = Looper::CreateWriteActionSquence(*baseinfo, baseLoopConfig);
4031 baseActions->AddToOffset(baseEl->
GetOffset());
4053 return TConfiguredAction( Looper::template LoopOverCollection<WriteViaClassBuffer>,
4056 return TConfiguredAction( Looper::template LoopOverCollection<WriteViaClassBuffer>,
4068template <
class Looper>
4089 case TStreamerInfo::kBits:
Error(
"GetNumericCollectionWriteAction",
"There is no support for kBits outside of a TObject.");
break;
4118 Fatal(
"GetNumericCollectionWriteAction",
"Is confused about %d",
type);
4204 fNslots = ndata + ndata/2 + 1;
4223 for (i = 0; i < ndata; ++i) {
4267 if (!previousOptimized) {
4278 if (
fComp[keep].fLength == 0) {
4283 isOptimized =
kTRUE;
4284 previousOptimized =
kTRUE;
4285 }
else if (element->
GetType() < 0) {
4298 previousOptimized =
kFALSE;
4316 Warning(
"Compile",
"Counter %s should not be skipped from class %s", element->
GetName(),
GetName());
4327 if (
fComp[keep].fLength == 0) {
4331 previousOptimized =
kFALSE;
4341 for (i = 0; i <
fNdata; ++i) {
4370template <
typename From>
4393template <
typename Onfile>
4427 switch (compinfo->
fType) {
4448 if (!nbits) nbits = 12;
4478 if (newClass && newClass != oldClass) {
4480 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4482 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
4486 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4488 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
4492 if (newClass && newClass != oldClass) {
4494 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4495 }
else if (oldClass) {
4497 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
4501 readSequence->
AddAction(GetConvertCollectionReadAction<VectorLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
4504 readSequence->
AddAction(GetConvertCollectionReadAction<AssociativeLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
4510 readSequence->
AddAction(GetConvertCollectionReadAction<GenericLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
4517 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4518 }
else if (oldClass) {
4520 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
4542 if (newClass && newClass != oldClass) {
4544 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4546 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
4550 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4552 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetTypeName(),isSTLbase));
4556 if (newClass && newClass != oldClass) {
4558 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4560 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
4564 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4566 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetTypeName(),isSTLbase));
4621 if (!nbits) nbits = 12;
4622 AddReadConvertAction<NoFactorMarker<float> >(readSequence, compinfo->
fNewType,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
4634 AddReadConvertAction<NoFactorMarker<double> >(readSequence, compinfo->
fNewType,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
4642 readSequence->
AddAction(ScalarLooper::ReadStreamerLoop<false>::Action,
4652 auto memoryBaseCl = base && base->GetNewBaseClass() ? base->GetNewBaseClass() : onfileBaseCl;
4654 if(!base || !memoryBaseCl ||
4655 memoryBaseCl->GetStreamer() ||
4656 memoryBaseCl->GetStreamerFunc() || memoryBaseCl->GetConvStreamerFunc())
4710 switch (compinfo->
fType) {
4743 readSequence->
AddAction(ScalarLooper::ReadStreamerLoop<true>::Action,
4753 default:
generic =
kTRUE;
break;
4780 readSequence->
AddAction( GetCollectionReadAction<VectorPtrLooper>(
this,
nullptr,element,compinfo->
fType,i,compinfo,compinfo->
fOffset) );
4797 switch (compinfo->
fType) {
4851 if (newClass && newClass != onfileClass) {
4853 writeSequence->
AddAction(WriteSTL<WriteSTLMemberWise /* should be ChangedClass */, WriteSTLObjectWiseStreamer>,
4857 }
else if (onfileClass) {
4861 WriteSTL<WriteSTLObjectWiseStreamer /* should be ChangedClass */, WriteSTLObjectWiseFastArray>,
4862 new TConfigSTL(
false,
this, i, compinfo, compinfo->
fOffset, 1, onfileClass, newClass,
4867 writeSequence->
AddAction(GetConvertCollectionWriteAction<VectorLooper>(
4869 new TConfigSTL(
false,
this, i, compinfo, compinfo->
fOffset, 1, onfileClass, newClass,
4873 writeSequence->
AddAction(GetConvertCollectionWriteAction<AssociativeLooper>(
4875 new TConfigSTL(
false,
this, i, compinfo, compinfo->
fOffset, 1, onfileClass, newClass,
4883 writeSequence->
AddAction(GetConvertCollectionWriteAction<GenericLooper>(
4885 new TConfigSTL(
false,
this, i, compinfo, compinfo->
fOffset, 1, onfileClass, newClass,
4893 writeSequence->
AddAction(WriteSTL<WriteSTLMemberWise, WriteSTLObjectWiseStreamer>,
4897 }
else if (onfileClass) {
4901 writeSequence->
AddAction(WriteSTL<WriteSTLMemberWise, WriteSTLObjectWiseFastArray>,
4907 writeSequence->
AddAction(GetNumericCollectionWriteAction<VectorLooper>(
4913 writeSequence->
AddAction(GetNumericCollectionWriteAction<AssociativeLooper>(
4923 writeSequence->
AddAction(GetNumericCollectionWriteAction<GenericLooper>(
4933 if (newClass && newClass != onfileClass) {
4936 WriteSTL<WriteArraySTLMemberWise /* should be ChangedClass */, WriteSTLObjectWiseStreamer>,
4941 WriteSTL<WriteArraySTLMemberWise /* should be ChangedClass */, WriteSTLObjectWiseFastArray>,
4947 writeSequence->
AddAction(WriteSTL<WriteArraySTLMemberWise, WriteSTLObjectWiseStreamer>,
4952 writeSequence->
AddAction(WriteSTL<WriteArraySTLMemberWise, WriteSTLObjectWiseFastArray>,
4971 writeSequence->
AddAction(ScalarLooper::WriteStreamerLoop<false>::Action,
4981 auto memoryBaseCl = base && base->GetNewBaseClass() ? base->GetNewBaseClass() : onfileBaseCl;
4983 if(!base || !memoryBaseCl ||
4984 memoryBaseCl->GetStreamer() ||
4985 memoryBaseCl->GetStreamerFunc() || memoryBaseCl->GetConvStreamerFunc())
5064 switch (compinfo->
fType) {
5127 default:
generic =
kTRUE;
break;
5158 writeSequence->
AddAction( GetCollectionWriteAction<VectorPtrLooper>(
this,
nullptr,element,compinfo->
fType,i,compinfo,compinfo->
fOffset) );
5206 for (
UInt_t i = 0; i < ndata; ++i) {
5230 ::Warning(
"CreateReadMemberWiseActions",
"%s",
5243 if (newType != oldType) {
5263 TConfiguredAction action( GetCollectionReadAction<VectorLooper>(&info,loopConfig,element,oldType,i,compinfo,
offset) );
5266 sequence->
AddAction( GetCollectionReadAction<VectorLooper>(&info,loopConfig,element,oldType,i,compinfo,
offset));
5273 TConfiguredAction action( GetCollectionReadAction<VectorLooper>(&info,loopConfig,element,oldType,i,compinfo,
offset) );
5276 sequence->
AddAction( GetCollectionReadAction<GenericLooper>(&info,loopConfig,element,oldType,i,compinfo,
offset) );
5308 return CreateWriteMemberWiseActions(*info, loopConfig);
5320 for (
UInt_t i = 0; i < ndata; ++i) {
5345 if (memoryType != onfileType) {
5348 if (memoryType > 0) {
5375 sequence->
AddAction( GetCollectionWriteAction<GenericLooper>(&info,loopConfig,element,onfileType,i,compinfo,
offset) );
5378 sequence->
AddAction( GetCollectionWriteAction<VectorLooper>(&info,loopConfig,element,onfileType,i,compinfo,
offset) );
5381 sequence->
AddAction( GetCollectionWriteAction<VectorPtrLooper>(&info,loopConfig,element,onfileType,i,compinfo,
offset) );
5385 sequence->
AddAction( GetCollectionWriteAction<GenericLooper>(&info,loopConfig,element,onfileType,i,compinfo,
offset) );
5397 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5398 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5403 if (iter->fConfiguration->fElemId != (
UInt_t)-1 &&
5405 iter->fConfiguration->AddToOffset(delta);
5414 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5415 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5419 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5420 iter->fConfiguration->SetMissing();
5432 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5433 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5438 sequence->
AddAction( iter->fAction, conf );
5448 for(
UInt_t id = 0;
id < element_ids.size(); ++
id) {
5449 if ( element_ids[
id].fElemID < 0 ) {
5450 if (element_ids[
id].fNestedIDs) {
5451 auto original = create(element_ids[
id].fNestedIDs->fInfo,
5454 if (element_ids[
id].fNestedIDs->fOnfileObject) {
5464 original->AddToSubSequence(sequence, element_ids[
id].fNestedIDs->fIDs, element_ids[
id].fNestedIDs->fOffset, create);
5466 if (element_ids[
id].fNestedIDs->fOnfileObject) {
5477 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5478 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5483 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5485 sequence->
AddAction( iter->fAction, conf );
5489 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5490 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5493 if ( iter->fConfiguration->fElemId == (
UInt_t)element_ids[
id].fElemID ) {
5495 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5497 sequence->
AddAction( iter->fAction, conf );
5514 AddToSubSequence(sequence, element_ids,
offset, create);
5528 for(
UInt_t id = 0;
id < element_ids.size(); ++
id) {
5529 if ( element_ids[
id] < 0 ) {
5530 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5531 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5536 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5538 sequence->
AddAction( iter->fAction, conf );
5541 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5542 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5545 if ( iter->fConfiguration->fElemId == (
UInt_t)element_ids[
id] ) {
5547 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5549 sequence->
AddAction( iter->fAction, conf );
5557#if !defined(R__WIN32) && !defined(_AIX)
5566#if defined(R__WIN32) || defined(__CYGWIN__) || defined(_AIX)
5567 return "not available on this platform";
5569 MEMORY_BASIC_INFORMATION mbi;
5570 if (!VirtualQuery (func, &mbi,
sizeof (mbi)))
5575 HMODULE hMod = (HMODULE) mbi.AllocationBase;
5576 static char moduleName[MAX_PATH];
5578 if (!GetModuleFileNameA (hMod, moduleName,
sizeof (moduleName)))
5586 if (dladdr((
void*)func,&info)==0) {
5588 return "name not found";
5591 return info.dli_sname;
5603 fLoopConfig->Print();
5605 TStreamerInfoActions::ActionContainer_t::const_iterator end = fActions.end();
5606 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = fActions.begin();
5610 iter->fConfiguration->Print();
5611 if (strstr(opt,
"func")) {
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
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.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void input
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h length
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
R__EXTERN TVirtualMutex * gInterpreterMutex
static TConfiguredAction GetNumericCollectionReadAction(Int_t type, TConfigSTL *conf)
static TConfiguredAction GetNumericCollectionWriteAction(Int_t type, TConfigSTL *conf)
static void AddWriteConvertAction(TStreamerInfoActions::TActionSequence *sequence, Int_t newtype, TConfiguration *conf)
static TConfiguredAction GetCollectionWriteConvertAction(Int_t newtype, TConfiguration *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, TLoopConfiguration *loopConfig, 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 GetCollectionWriteAction(TVirtualStreamerInfo *info, TLoopConfiguration *loopConfig, TStreamerElement *element, Int_t type, UInt_t i, TStreamerInfo::TCompInfo_t *compinfo, Int_t offset)
static TConfiguredAction GetConvertCollectionReadAction(Int_t oldtype, Int_t newtype, TConfiguration *conf)
static TConfiguredAction GetConvertCollectionWriteAction(Int_t onfileType, Int_t memoryType, TConfiguration *conf)
static TConfiguredAction GetConvertCollectionReadActionFrom(Int_t newtype, TConfiguration *conf)
static TConfiguredAction GetConvertCollectionWriteActionFrom(Int_t onfileType, TConfiguration *conf)
#define ReadBasicType(name)
#define WriteBasicType(name)
void ReadBuffer(char *&buffer) override
#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 Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr)=0
virtual Int_t ApplySequenceVecPtr(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection)=0
virtual Version_t ReadVersionForMemberWise(const TClass *cl=nullptr)=0
virtual void WriteDouble32(Double_t *d, TStreamerElement *ele=nullptr)=0
virtual TProcessID * ReadProcessID(UShort_t pidf)=0
Return the current Process-ID.
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
TObject * GetParent() const
Return pointer to parent of this buffer.
virtual void WriteFloat16(Float_t *f, TStreamerElement *ele=nullptr)=0
virtual UShort_t GetPidOffset() const =0
@ kCannotHandleMemberWiseStreaming
virtual void ReadFastArrayDouble32(Double_t *d, Int_t n, TStreamerElement *ele=nullptr)=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 Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=nullptr)=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 WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerElement *ele=nullptr)=0
virtual void WriteFastArray(const Bool_t *b, Long64_t n)=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 void WriteInt(Int_t i)=0
virtual void WriteFastArrayDouble32(const Double_t *d, Long64_t n, TStreamerElement *ele=nullptr)=0
virtual void ReadFastArrayFloat16(Float_t *f, Int_t n, TStreamerElement *ele=nullptr)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void StreamObject(void *obj, const std::type_info &typeinfo, const TClass *onFileClass=nullptr)=0
TClassRef is used to implement a permanent reference to a TClass object.
TClass instances represent classes, structs and namespaces in the ROOT type system.
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=nullptr) const
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.
Bool_t HasCustomStreamerMember() const
The class has a Streamer method and it is implemented by the user or an older (not StreamerInfo based...
Int_t Size() const
Return size of object of this class.
Bool_t HasDirectStreamerInfoUse() const
static void StreamerStreamerInfo(const TClass *pThis, void *object, TBuffer &b, const TClass *onfile_class)
Case of where we should directly use the StreamerInfo.
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).
std::atomic< StreamerImpl_t > fStreamerImpl
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
Int_t GetEntriesFast() const
void AddAt(TObject *obj, Int_t idx) override
Add object at position ids.
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
TObject * At(Int_t idx) const override
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.
@ kIsOnHeap
object is on heap
@ kNotDeleted
object has not been deleted
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...
TVirtualStreamerInfo * GetBaseStreamerInfo() const
TClass * GetClassPointer() const override
Returns a pointer to the TClass of this element.
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.
virtual ULongptr_t GetMethod() const
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
TClass * IsA() const override
virtual Bool_t IsBase() const
Return kTRUE if the element represent a base class.
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 '...
TLoopConfiguration * fLoopConfig
If this is a bundle of memberwise streaming action, this configures the looping.
void Print(Option_t *="") const override
This method must be overridden when a class wants to print itself.
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)
TLoopConfiguration * Copy() const override
void Print() const override
TAssocLoopConfig(TVirtualCollectionProxy *proxy, Bool_t)
void * GetFirstAddress(void *start, const void *) const override
~TAssocLoopConfig() override
TConfiguration * Copy() override
TConfNoFactor(TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset, Int_t nbits)
TConfiguration * Copy() override
TConfSTLNoFactor(TConfigSTL *orig, Int_t nbits)
TConfSTLWithFactor(TConfigSTL *orig, Double_t factor, Double_t xmin)
TConfiguration * Copy() override
TConfWithFactor(TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset, Double_t factor, Double_t xmin)
TConfiguration * Copy() override
TConfigSTL(Bool_t read, TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset, UInt_t length, TClass *oldClass, const char *type_name, Bool_t isbase)
TConfigSTL(Bool_t read, TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset, UInt_t length, TClass *oldClass, TClass *newClass, const char *type_name, Bool_t isbase)
TConfigSTL(Bool_t read, TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset, UInt_t length, TClass *oldClass, TMemberStreamer *streamer, const char *type_name, Bool_t isbase)
TVirtualCollectionProxy::CreateIterators_t fCreateIterators
TVirtualCollectionProxy::DeleteIterator_t fDeleteIterator
TVirtualCollectionProxy::DeleteTwoIterators_t fDeleteTwoIterators
TVirtualCollectionProxy::Next_t fNext
TMemberStreamer * fStreamer
TConfigSTL(Bool_t read, TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset, UInt_t length, TClass *oldClass, TClass *newClass, TMemberStreamer *streamer, const char *type_name, Bool_t isbase)
TConfiguration * Copy() override
TVirtualCollectionProxy::CopyIterator_t fCopyIterator
TVirtualArray * fOnfileObject
void Print() const override
TConfigurationPushDataCache(TVirtualStreamerInfo *info, TVirtualArray *onfileObject, Int_t offset)
void PrintDebug(TBuffer &buffer, void *object) const override
TConfiguration * Copy() override
void PrintDebug(TBuffer &b, void *addr) const override
TConfigurationUseCache(TVirtualStreamerInfo *info, TConfiguredAction &action, Bool_t repeat)
~TConfigurationUseCache() override
TConfiguredAction fAction
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)
TLoopConfiguration * Copy() const override
void * GetFirstAddress(void *start_collection, const void *end_collection) const override
TVirtualCollectionProxy::CopyIterator_t fCopyIterator
void Print() const override
TVirtualCollectionProxy::Next_t fNext
TVirtualCollectionProxy::DeleteIterator_t fDeleteIterator
~TGenericLoopConfig() override
TGenericLoopConfig(TVirtualCollectionProxy *proxy, Bool_t read)
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
TLoopConfiguration * Copy() const override
void Print() const override
~TVectorLoopConfig() override
void * GetFirstAddress(void *start, const void *) const override
TVectorLoopConfig(TVirtualCollectionProxy *proxy, Long_t increment, Bool_t)
TClass * fClass
Not Owned.
TMemberStreamer * fStreamer
Not Owned.
TStreamerElement * fElem
Not Owned.
TClass * fNewClass
Not Owned.
Describes a persistent version of a class.
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)
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 ls(Option_t *option="") const override
List the TStreamerElement list and also the precomputed tables if option contains the string "incOrig...
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.
void AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence *readSequence, Int_t index, TCompInfo *compinfo)
Add a read action for the given element.
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]
TClass * GetClass() const override
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
void Compile() override
loop on the TStreamerElement list regroup members with same type Store predigested information into l...
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 number 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...
RAII helper class that ensures that PushProxy() / PopProxy() are called when entering / leaving a C++...
Defines a common interface to inspect/change the contents of an object that represents a collection.
virtual Int_t GetProperties() const
Return miscallenous properties of the proxy (see TVirtualCollectionProxy::EProperty)
virtual ULong_t GetIncrement() const =0
Return the offset between two consecutive in-memory values (which depends on the sizeof() and alignme...
virtual TStreamerInfoActions::TActionSequence * GetReadMemberWiseActions(Int_t version)=0
void(* CreateIterators_t)(void *collection, void **begin_arena, void **end_arena, TVirtualCollectionProxy *proxy)
*begin_arena and *end_arena should contain the location of a memory arena of size fgIteratorArenaSize...
virtual EDataType GetType() const =0
If the value type is a fundamental data type, return its type (see enumeration EDataType).
@ kCustomAlloc
The collection has a custom allocator.
void *(* CopyIterator_t)(void *dest, const void *source)
Copy the iterator source into dest.
virtual TStreamerInfoActions::TActionSequence * GetWriteMemberWiseActions()=0
void *(* Next_t)(void *iter, const void *end)
iter and end should be pointers to an iterator to be incremented and an iterator that points to the e...
virtual TClass * GetValueClass() const =0
If the value type is a user-defined class, return a pointer to the TClass representing the value type...
virtual void Commit(void *)=0
Commits pending elements in a staging area (see Allocate() for more information).
virtual Int_t GetCollectionType() const =0
Return the type of the proxied collection (see enumeration TClassEdit::ESTLType)
virtual Next_t GetFunctionNext(Bool_t read=kTRUE)=0
Return a pointer to a function that can advance an iterator (see Next_t).
virtual DeleteTwoIterators_t GetFunctionDeleteTwoIterators(Bool_t read=kTRUE)=0
virtual UInt_t Size() const =0
Return the current number of elements in the container.
void(* DeleteTwoIterators_t)(void *begin, void *end)
void(* DeleteIterator_t)(void *iter)
If the size of the iterator is greater than fgIteratorArenaSize, call delete on the addresses; otherw...
static const Int_t fgIteratorArenaSize
The size of a small buffer that can be allocated on the stack to store iterator-specific information.
virtual CreateIterators_t GetFunctionCreateIterators(Bool_t read=kTRUE)=0
Return a pointer to a function that can create an iterator pair, where each iterator points to the be...
virtual void * Allocate(UInt_t n, Bool_t forceDelete)=0
Allocates space for storing at least n elements.
virtual TStreamerInfoActions::TActionSequence * GetConversionReadMemberWiseActions(TClass *oldClass, Int_t version)=0
virtual DeleteIterator_t GetFunctionDeleteIterator(Bool_t read=kTRUE)=0
Return a pointer to a function that can delete an iterator (pair) (see DeleteIterator_t).
virtual CopyIterator_t GetFunctionCopyIterator(Bool_t read=kTRUE)=0
Return a pointer to a function that can copy an iterator (see CopyIterator_t).
virtual Bool_t HasPointers() const =0
Return true if the content is of type 'pointer to'.
virtual TClass * GetCollectionClass() const
Return a pointer to the TClass representing the proxied container class.
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
@ kUChar
Equal to TDataType's kchar.
TClass * IsA() const override
static Bool_t CanOptimize()
static function returning true if optimization can be on
virtual TObjArray * GetElements() const =0
virtual Version_t GetOldVersion() const =0
virtual Int_t GetClassVersion() const =0
void ReadSTLObjectWiseStreamer(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t, UInt_t)
Int_t WriteTString(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t PushDataCacheVectorPtr(TBuffer &b, void *, const void *, const TConfiguration *conf)
Int_t PopDataCache(TBuffer &b, void *, const TConfiguration *)
void ReadSTLMemberWiseChangedClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
Int_t TextReadSTLp(TBuffer &buf, void *addr, const TConfiguration *config)
void ReadSTLObjectWiseFastArrayV2(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers, UInt_t start)
Int_t ReadBasicType< BitsMarker >(TBuffer &buf, void *addr, const TConfiguration *config)
static void WriteCompressed(TBuffer &buf, float *addr, const TStreamerElement *elem)
Int_t WriteTextBaseClass(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t GenericWriteAction(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t WriteTObject(TBuffer &buf, void *addr, const TConfiguration *config)
void ReadArraySTLMemberWiseChangedClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
Int_t PopDataCacheVectorPtr(TBuffer &b, void *, const void *, const TConfiguration *)
Int_t GenericReadAction(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t WriteTextTObject(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t WriteTNamed(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t ReadBasicType_WithFactor(TBuffer &buf, void *addr, const TConfiguration *config)
void WriteSTLObjectWiseFastArray(TBuffer &buf, void *addr, const TConfiguration *conf)
Int_t ReadTextBaseClass(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t UseCacheVectorPtrLoop(TBuffer &b, void *start, const void *end, const TConfiguration *conf)
void WriteSTLObjectWiseStreamer(TBuffer &buf, void *addr, const TConfiguration *conf)
Int_t WriteSTL(TBuffer &buf, void *addr, const TConfiguration *conf)
Int_t ReadSTL(TBuffer &buf, void *addr, const TConfiguration *conf)
Int_t ReadTextTObject(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t PushDataCache(TBuffer &b, void *, const TConfiguration *conf)
Int_t UseCache(TBuffer &b, void *addr, const TConfiguration *conf)
Int_t WriteViaClassBuffer(TBuffer &buf, void *addr, const TConfiguration *config)
std::vector< TIDNode > TIDs
Int_t WriteLoopInvalid(TBuffer &, void *, const void *, const TConfiguration *config)
void ReadSTLMemberWiseSameClass(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers)
Int_t WriteTextTNamed(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t ReadTextObject(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t TextWriteSTLp(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t UseCacheVectorLoop(TBuffer &b, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *conf)
Int_t ReadViaExtStreamer(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t ReadTextTNamed(TBuffer &buf, void *addr, const TConfiguration *config)
void WriteArraySTLMemberWise(TBuffer &buf, void *addr, const TConfiguration *conf)
Int_t WriteStreamerCase(TBuffer &buf, void *addr, const TConfiguration *config)
void ReadSTLObjectWiseFastArray(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t, UInt_t)
Int_t ReadTNamed(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t ReadBasicType_NoFactor(TBuffer &buf, void *addr, const TConfiguration *config)
bool IsDefaultVector(TVirtualCollectionProxy &proxy)
Int_t ReadLoopInvalid(TBuffer &, void *, const void *, const TConfiguration *config)
Int_t ReadTObject(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t WriteViaExtStreamer(TBuffer &buf, void *addr, const TConfiguration *config)
void ReadSTLObjectWiseStreamerV2(TBuffer &buf, void *addr, const TConfiguration *conf, Version_t vers, UInt_t start)
void ReadArraySTLMemberWiseSameClass(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 *)
Int_t ReadStreamerCase(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t PushDataCacheGenericCollection(TBuffer &b, void *, const void *, const TLoopConfiguration *loopconfig, const TConfiguration *conf)
Int_t ReadTextTObjectBase(TBuffer &buf, void *addr, const TConfiguration *config)
ESelectLooper SelectLooper(TVirtualCollectionProxy &proxy)
Int_t ReadTString(TBuffer &buf, void *addr, const TConfiguration *config)
Int_t UseCacheGenericCollection(TBuffer &b, void *, const void *, const TLoopConfiguration *loopconfig, const TConfiguration *conf)
void WriteSTLMemberWise(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t WriteBasicZero(TBuffer &buf, void *, const TConfiguration *)
Int_t ReadViaClassBuffer(TBuffer &buf, void *addr, const TConfiguration *config)
TVirtualCollectionProxy::Next_t Next_t
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static void Action(TBuffer &buf, void *addr, Int_t nvalues)
static void Action(TBuffer &buf, void *addr, Int_t nvalues)
static void Action(TBuffer &buf, void *addr, Int_t nvalues)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static void LoopOverCollection(TBuffer &buf, void *iter, const void *end, Next_t next, Int_t, const TStreamerElement *elem)
static void SimpleWriteFloat16(TBuffer &buf, void *addr, const TStreamerElement *elem)
static Int_t WriteCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
static void SimpleRead(TBuffer &buf, void *addr, Int_t nvalues)
static void ArrayWrite(TBuffer &buf, void *addr, Int_t nvalues, const TStreamerElement *)
static Int_t WriteCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t ReadCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
static void SimpleReadDouble32(TBuffer &buf, void *addr, Int_t nvalues)
static void SimpleWrite(TBuffer &buf, void *addr, const TStreamerElement *)
static void ConvertLoopOverCollection(TBuffer &buf, void *iter, const void *end, Next_t next, Int_t nvalues, const TStreamerElement *elem)
static void ArrayWriteCompressed(TBuffer &buf, double *addr, Int_t nvalues, const TStreamerElement *elem)
static void SimpleWriteDouble32(TBuffer &buf, void *addr, const TStreamerElement *elem)
static Int_t ReadCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
void(*)(TBuffer &, void *, const void *, Next_t, Int_t, const TStreamerElement *elem) LoopAction_t
static Int_t ReadCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
static void ArrayWriteCompressed(TBuffer &buf, float *addr, Int_t nvalues, const TStreamerElement *elem)
static void SimpleReadFloat16(TBuffer &buf, void *addr, Int_t nvalues)
static Int_t WriteNumericalCollection(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t WriteCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t ReadNumericalCollection(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t Action(TBuffer &buf, void *start, Ts... args, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, Ts... args, const TConfiguration *config)
static Int_t ReadStreamerLoopStatic(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t SubSequenceAction(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *, const TConfiguration *config)
static Int_t WriteStreamerLoopStatic(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t WriteStreamerLoopPoly(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t ReadStreamerLoopPoly(TBuffer &buf, void *addr, const TConfiguration *config)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateReadActionSquence(TStreamerInfo &info, TLoopConfiguration *loopConfig)
static Int_t WriteStreamerCase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateWriteActionSquence(TStreamerInfo &info, TLoopConfiguration *loopConfig)
static Int_t StreamerLoopExternal(TBuffer &buf, void *addr, const TConfiguration *actionConfig)
static Int_t ReadStreamerCase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static void WriteConvertAction(void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config, To *items)
static void ConvertAction(From *items, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static void WriteConvertAction(void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *, To *items)
static void ConvertAction(From *items, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *)
static Int_t Action(TBuffer &, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t ReadBasicType(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
CollectionLooper< GenericLooper >::ReadStreamerLoop< kIsText, const void *, const TLoopConfiguration * > ReadStreamerLoop
static Int_t ReadCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t WriteBase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t WriteNumericalCollection(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t ReadBase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t WriteBasicType(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t GenericRead(TBuffer &buf, void *, const void *, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t WriteCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t WriteCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t WriteCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
static void SimpleWriteFloat16(TBuffer &buf, void *addr)
static void SimpleReadFloat16(TBuffer &buf, void *addr)
Int_t(*)(TBuffer &, void *, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *) LoopAction_t
static Int_t LoopOverCollection(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t ReadNumericalCollection(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t GenericWrite(TBuffer &buf, void *, const void *, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t ReadCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
static void SimpleRead(TBuffer &buf, void *addr)
static void SimpleReadDouble32(TBuffer &buf, void *addr)
static void SimpleWriteDouble32(TBuffer &buf, void *addr)
static Int_t ReadCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
CollectionLooper< GenericLooper >::WriteStreamerLoop< kIsText, const void *, const TLoopConfiguration * > WriteStreamerLoop
Int_t(*)(TBuffer &, void *, const TConfiguration *) LoopAction_t
static Int_t LoopOverCollection(TBuffer &buf, void *start, const TConfiguration *config)
void AddToOffset(Int_t delta) override
TBitsConfiguration(TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset=0)
void PrintDebug(TBuffer &, void *) const override
TConfiguration * Copy() override
void SetMissing() override
TConfObject(TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset, TClass *onfileClass, TClass *inMemoryClass)
TConfiguration * Copy() override
TConfStreamerLoop(TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset, bool isPtrPtr)
TConfiguration * Copy() override
TConfSubSequence(const TConfSubSequence &input)
void AddToOffset(Int_t delta) override
TConfiguration * Copy() override
TConfSubSequence(TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset, std::unique_ptr< TStreamerInfoActions::TActionSequence > actions)
std::unique_ptr< TStreamerInfoActions::TActionSequence > fActions
TConfiguration * Copy() override
TGenericConfiguration(TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset=0)
void PrintDebug(TBuffer &, void *) const override
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
CollectionLooper< VectorLooper >::ReadStreamerLoop< kIsText, const void *, const TLoopConfiguration * > ReadStreamerLoop
static Int_t WriteCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t WriteCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
Int_t(*)(TBuffer &, void *, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *) LoopAction_t
static Int_t WriteBasicType(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t WriteCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t GenericWrite(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t ReadCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
CollectionLooper< VectorLooper >::WriteStreamerLoop< kIsText, const void *, const TLoopConfiguration * > WriteStreamerLoop
static Int_t ConvertCollectionDouble32(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t ReadCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t ReadBasicType(TBuffer &buf, void *iter, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t WriteBase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t ReadBase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t ReadCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t GenericRead(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t LoopOverCollection(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
Int_t(*)(TBuffer &, void *start, const void *end, const TConfiguration *) LoopAction_t
static Int_t ReadBase(TBuffer &buf, void *start, const void *end, const TConfiguration *config)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateWriteActionSquence(TStreamerInfo &info, TLoopConfiguration *)
static Int_t ReadBasicType(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateReadActionSquence(TStreamerInfo &info, TLoopConfiguration *)
static Int_t LoopOverCollection(TBuffer &buf, void *start, const void *end, const TConfiguration *config)
static Int_t GenericRead(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t WriteBasicType(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t GenericWrite(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t WriteBase(TBuffer &buf, void *start, const void *end, const TConfiguration *config)
CollectionLooper< VectorPtrLooper >::ReadStreamerLoop< kIsText, const void * > ReadStreamerLoop
CollectionLooper< VectorPtrLooper >::WriteStreamerLoop< kIsText, const void * > WriteStreamerLoop
static Int_t SubSequenceAction(TBuffer &buf, void *start, const void *end, const TConfiguration *config)
static Int_t WriteStreamerCase(TBuffer &buf, void *start, const void *end, const TConfiguration *config)
static Int_t ReadStreamerCase(TBuffer &buf, void *start, const void *end, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)