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);
361 UInt_t *
x = (UInt_t*)( ((
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);
477 UInt_t ioffset = config->
fOffset;
493 UInt_t ioffset = 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);
707 printf(
"TAssocLoopConfig: proxy=%s\n",
fProxy->GetCollectionClass()->GetName());
731 if (
fProxy->HasPointers()) {
754 printf(
"TGenericLoopConfig: proxy=%s\n",
fProxy->GetCollectionClass()->GetName());
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])) {
1160 UInt_t
start, count;
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 );
1312 UInt_t
n = proxy->
Size();
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());
1454 UInt_t
n = proxy->
Size();
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>
1520 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
1523 std::unique_ptr<TLoopConfiguration> localLoopConfig{ loopConfig ? loopConfig->
Copy() :
nullptr };
1524 std::unique_ptr<TStreamerInfoActions::TActionSequence> actions(
1532 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
1535 std::unique_ptr<TLoopConfiguration> localLoopConfig{ loopConfig ? loopConfig->
Copy() :
nullptr };
1536 std::unique_ptr<TStreamerInfoActions::TActionSequence> actions(
1544 auto actions = conf->fActions.get();
1555 Looper::template LoopOverCollection< ReadViaExtStreamer >(buf,
start, end, loopconfig, config);
1565 Looper::template LoopOverCollection< WriteViaExtStreamer >(buf,
start, end, loopconfig, config);
1572 UInt_t ioffset = actionConfig->
fOffset;
1577 (*pstreamer)(buf, (
char *) addr + ioffset , *counter);
1581 template<
bool kIsTextT>
1585 UInt_t ioffset = config->
fOffset;
1594 char** pp = (
char**) ((
char *) addr + ioffset );
1628 UInt_t ioffset = config->
fOffset;
1636 char** pp = (
char**) ((
char *) addr + ioffset );
1660 char**
r = (
char**) pp[ndx];
1670 template<
bool kIsTextT,
typename... Ts>
1679 Looper::template LoopOverCollection< StreamerLoopExternal > (buf,
start, args..., config);
1699 if (fileVersion > 51508) {
1702 Looper::template LoopOverCollection< WriteStreamerLoopPoly<kIsTextT> > (buf,
start, args..., config);
1707 Looper::template LoopOverCollection< ReadStreamerLoopStatic > (buf,
start, args..., config);
1716 template<
bool kIsTextT>
1720 UInt_t ioffset = config->
fOffset;
1733 char **pp = (
char **)((
char *)addr + ioffset );
1786 pp[ndx] = (
char *)cl->
NewArray(vlen);
1788 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1795 pp[ndx] = (
char *)
new char *[vlen];
1797 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1801 memset(pp[ndx], 0, vlen *
sizeof(
char *));
1818 UInt_t ioffset = config->
fOffset;
1831 char **pp = (
char **)((
char *)addr + ioffset );
1881 pp[ndx] = (
char *)cl->
NewArray(vlen);
1883 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1890 pp[ndx] = (
char *)
new char *[vlen];
1892 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1896 memset(pp[ndx], 0, vlen *
sizeof(
char *));
1909 char **
r = (
char **)pp[ndx];
1913 r[
v] = (
char *)cl->
New();
1927 template<
bool kIsTextT,
typename... Ts>
1940 Looper::template LoopOverCollection< StreamerLoopExternal > (buf,
start, args..., config);
1961 if (fileVersion > 51508) {
1965 Looper::template LoopOverCollection< ReadStreamerLoopPoly<kIsTextT> > (buf,
start, args..., config);
1970 Looper::template LoopOverCollection< ReadStreamerLoopStatic > (buf,
start, args..., config);
1984 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
1987 iter_action(buf,
start, config);
1996 template <
bool kIsText>
1998 template <
bool kIsText>
2001 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
2007 for(
void *iter =
start; iter != end; iter = (
char*)iter + incr ) {
2008 iter_action(buf, iter, config);
2013 template <
typename T>
2017 iter = (
char*)iter + config->
fOffset;
2018 end = (
char*)end + config->
fOffset;
2019 for(; iter != end; iter = (
char*)iter + incr ) {
2020 T *
x = (T*) ((
char*) iter);
2026 template <
typename From,
typename To>
2033 iter = (
char*)iter + config->
fOffset;
2034 end = (
char*)end + config->
fOffset;
2035 for(; iter != end; iter = (
char*)iter + incr ) {
2037 *(To*)( ((
char*)iter) ) = (To)temp;
2043 template <
typename To>
2050 iter = (
char*)iter + config->
fOffset;
2051 end = (
char*)end + config->
fOffset;
2052 for(; iter != end; iter = (
char*)iter + incr ) {
2059 *(To*)( ((
char*)iter) ) = (To)temp;
2065 template <
typename From,
typename To>
2073 iter = (
char*)iter + config->
fOffset;
2074 end = (
char*)end + config->
fOffset;
2075 for(; iter != end; iter = (
char*)iter + incr ) {
2077 *(To*)( ((
char*)iter) ) = (To)temp;
2083 template <
typename From,
typename To>
2091 iter = (
char*)iter + config->
fOffset;
2092 end = (
char*)end + config->
fOffset;
2093 for(; iter != end; iter = (
char*)iter + incr ) {
2095 *(To*)( ((
char*)iter) ) = (To)temp;
2101 template <
typename T>
2105 iter = (
char*)iter + config->
fOffset;
2106 end = (
char*)end + config->
fOffset;
2107 for(; iter != end; iter = (
char*)iter + incr ) {
2108 T *
x = (T*) ((
char*) iter);
2114 template <
typename Onfile,
typename Memory>
2119 iter = (
char*)iter + config->
fOffset;
2120 end = (
char*)end + config->
fOffset;
2121 for(; iter != end; iter = (
char*)iter + incr ) {
2123 Onfile temp = (Onfile)(*(Memory*)((
char*) iter));
2130 template <
typename Onfile,
typename Memory>
2136 iter = (
char*)iter + config->
fOffset;
2137 end = (
char*)end + config->
fOffset;
2138 for(; iter != end; iter = (
char*)iter + incr ) {
2140 Onfile temp = (Onfile)(*(Memory*)((
char*) iter));
2147 template <
typename Onfile,
typename Memory>
2153 iter = (
char*)iter + config->
fOffset;
2154 end = (
char*)end + config->
fOffset;
2155 for(; iter != end; iter = (
char*)iter + incr ) {
2157 Onfile temp = (Onfile)(*(Memory*)((
char*) iter));
2170 UInt_t
n = (((
char*)end)-((
char*)
start))/incr;
2171 char **arrptr =
new char*[
n];
2173 for(
void *iter =
start; iter != end; iter = (
char*)iter + incr, ++i ) {
2174 arrptr[i] = (
char*)iter;
2187 UInt_t
n = (((
char*)end)-((
char*)
start))/incr;
2188 char **arrptr =
new char*[
n];
2190 for(
void *iter =
start; iter != end; iter = (
char*)iter + incr, ++i ) {
2191 arrptr[i] = (
char*)iter;
2203 UInt_t
n = (((
char*)end)-((
char*)
start))/incr;
2204 char **arrptr =
new char*[
n];
2206 for(
void *iter =
start; iter != end; iter = (
char*)iter + incr, ++i ) {
2207 arrptr[i] = (
char*)iter;
2219 UInt_t
n = (((
char*)end)-((
char*)
start))/incr;
2220 char **arrptr =
new char*[
n];
2222 for(
void *iter =
start; iter != end; iter = (
char*)iter + incr, ++i ) {
2223 arrptr[i] = (
char*)iter;
2230 template <
typename T>
2236 UInt_t
start, count;
2239 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)addr)+config->
fOffset);
2242 vec->resize(nvalues);
2244#ifdef R__VISUAL_CPLUSPLUS
2250 T *begin =
vec->data();
2257 template <
typename T>
2265 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)addr)+config->
fOffset);
2269 T *begin =
vec->data();
2281 UInt_t
start, count;
2284 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)addr)+config->
fOffset);
2287 vec->resize(nvalues);
2289#ifdef R__VISUAL_CPLUSPLUS
2295 float *begin =
vec->data();
2309 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)addr)+config->
fOffset);
2313 float *begin =
vec->data();
2325 UInt_t
start, count;
2328 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)addr)+config->
fOffset);
2331 vec->resize(nvalues);
2333#ifdef R__VISUAL_CPLUSPLUS
2339 double *begin =
vec->data();
2353 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)addr)+config->
fOffset);
2357 double *begin =
vec->data();
2364 template <
typename From,
typename To>
2371 UInt_t
start, count;
2374 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2377 vec->resize(nvalues);
2379 From *temp =
new From[nvalues];
2381 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2382 (*vec)[ind] = (To)temp[ind];
2391 template <
typename From,
typename To>
2398 UInt_t
start, count;
2401 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2404 vec->resize(nvalues);
2406 From *temp =
new From[nvalues];
2408 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2409 (*vec)[ind] = (To)temp[ind];
2418 template <
typename To>
2424 UInt_t
start, count;
2427 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2430 vec->resize(nvalues);
2434 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2435 (*vec)[ind] = (To)temp[ind];
2443 template <
typename Memory,
typename Onfile>
2452 std::vector<Memory> *
const vec = (std::vector<Memory>*)(((
char*)addr)+config->
fOffset);
2458 Onfile *temp =
new Onfile[nvalues];
2459 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2460 temp[ind] = (Onfile)((*
vec)[ind]);
2477 template <
bool kIsText>
2479 template <
bool kIsText>
2482 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
2485 using unique_ptr = std::unique_ptr<TStreamerInfoActions::TActionSequence>;
2489 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
2492 using unique_ptr = std::unique_ptr<TStreamerInfoActions::TActionSequence>;
2496 template <Int_t (*action)(TBuffer&,
void *,const TConfiguration*)>
2499 for(
void *iter =
start; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2500 action(buf, *(
void**)iter, config);
2508 auto actions = conf->fActions.get();
2514 template <
typename T>
2519 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2520 T *
x = (T*)( ((
char*) (*(
void**)iter) ) + offset );
2526 template <
typename From,
typename To>
2533 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2535 To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
2542 template <
typename To>
2549 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2556 To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
2563 template <
typename From,
typename To>
2571 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2573 To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
2580 template <
typename From,
typename To>
2588 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2590 To *
x = (To*)( ((
char*) (*(
void**)iter) ) + offset );
2597 template <
typename T>
2602 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2603 T *
x = (T*)( ((
char*) (*(
void**)iter) ) + offset );
2609 template <
typename To,
typename From>
2615 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2616 From *from = (From*)( ((
char*) (*(
void**)iter) ) + offset );
2617 To to = (To)(*from);
2624 template <
typename To,
typename From>
2631 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2632 From *from = (From*)( ((
char*) (*(
void**)iter) ) + offset );
2633 To to = (To)(*from);
2639 template <
typename To,
typename From>
2646 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2647 From *from = (From*)( ((
char*) (*(
void**)iter) ) + offset );
2648 To to = (To)(*from);
2694 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2695 char **arr = (
char**)iter;
2701 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2702 char **arr = (
char**)iter;
2713 template <
typename T>
2729 template <
typename T>
2745 template <
typename T>
2761 template <
typename T,
void (*action)(TBuffer&,
void *,Int_t)>
2767 UInt_t
start, count;
2776 void* alternative = newProxy->
Allocate(nvalues,
true);
2780 void *begin = &(startbuf[0]);
2781 void *end = &(endbuf[0]);
2786 action(buf,begin,nvalues);
2788 if (begin != &(startbuf[0])) {
2793 newProxy->
Commit(alternative);
2799 template <
void (*action)(TBuffer&,
void*, const TStreamerElement*)>
2803 while( (addr = next(iter, end)) )
2805 action(buf, addr, elem);
2809 template <
typename Memory,
typename Onfile,
void (*action)(TBuffer&,
void*, Int_t, const TStreamerElement *elem)>
2812 Onfile *temp =
new Onfile[nvalues];
2815 while( (addr = next(iter, end)) )
2817 temp[ind] = (Onfile)*(Memory*)addr;
2820 action(buf, temp, nvalues, elem);
2824 template <
typename T,
void (*action)(TBuffer&,
void *, const
void *, Next_t, Int_t, const TStreamerElement *elem)>
2834 void *collection = ((
char*)addr)+config->
fOffset;
2842 void *begin = &(startbuf[0]);
2843 void *end = &(endbuf[0]);
2848 if (begin != &(startbuf[0])) {
2878 template <
typename T>
2884 template <
typename T>
2890 template <
typename From,
typename To>
2894 From *temp =
new From[nvalues];
2896 To *
vec = (To*)addr;
2897 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2898 vec[ind] = (To)temp[ind];
2904 template <
typename From,
typename To>
2908 From *temp =
new From[nvalues];
2910 To *
vec = (To*)addr;
2911 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2912 vec[ind] = (To)temp[ind];
2918 template <
typename From,
typename To>
2922 From *temp =
new From[nvalues];
2925 To *
vec = (To*)addr;
2926 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2927 vec[ind] = (To)temp[ind];
2932 template <
typename From,
typename To>
2940 template <
typename Memory,
typename Onfile>
2947 template <
typename Memory,
typename Onfile>
2955 template <
typename Memory,
typename Onfile>
2968 template <
bool kIsText>
2970 template <
bool kIsText>
2973 template <
typename T>
2984 while( (addr = next(iter,end)) ) {
2985 T *
x = (T*)( ((
char*)addr) + offset );
2988 if (iter != &iterator[0]) {
2994 template <
typename T>
3005 while( (addr = next(iter,end)) ) {
3006 T *
x = (T*)( ((
char*)addr) + offset );
3009 if (iter != &iterator[0]) {
3015 template <
typename To,
typename From>
3027 while( (addr = next(iter,end)) ) {
3028 From *
x = (From*)( ((
char*)addr) + offset );
3032 if (iter != &iterator[0]) {
3039 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
3050 while( (addr = next(iter,end)) ) {
3051 iter_action(buf, addr, config);
3053 if (iter != &iterator[0]) {
3059 template <
typename From,
typename To>
3071 while( (addr = next(iter,end)) ) {
3072 To *
x = (To*)( ((
char*)addr) + offset );
3076 if (iter != &iterator[0]) {
3092 while( (addr = next(iter,end)) ) {
3093 From *
x = (From*)( ((
char*)addr) + offset );
3097 if (iter != &iterator[0]) {
3103 template <
typename From,
typename To>
3116 while( (addr = next(iter,end)) ) {
3117 To *
x = (To*)(addr);
3133 while( (addr = next(iter,end)) ) {
3134 From *
x = (From*)(addr);
3141 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter = Generic >
3151 From *items =
new From[nvalues];
3153 Converter<From,To>::ConvertAction(items,
start,end,loopconfig,config);
3159 template <
typename To>
3169 UInt_t *items_storage =
new UInt_t[nvalues];
3170 UInt_t *items = items_storage;
3178 while( (addr = next(iter,end)) ) {
3183 To *
x = (To*)( ((
char*)addr) + offset );
3187 if (iter != &iterator[0]) {
3191 delete [] items_storage;
3196 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
3208 From *items =
new From[nvalues];
3210 Converter<From,To>::ConvertAction(items,
start,end,loopconfig,config);
3216 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
3228 From *items =
new From[nvalues];
3230 Converter<From,To>::ConvertAction(items,
start,end,loopconfig,config);
3236 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter = Generic >
3246 Onfile *items =
new Onfile[nvalues];
3247 Converter<Memory,Onfile>::WriteConvertAction(
start, end, loopconfig, config, items);
3254 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter >
3266 Onfile *items =
new Onfile[nvalues];
3267 Converter<Memory,Onfile>::WriteConvertAction(
start, end, loopconfig, config, items);
3268 R__ASSERT(
false &&
"Not yet implemented");
3276 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter >
3288 Onfile *items =
new Onfile[nvalues];
3289 Converter<Memory,Onfile>::WriteConvertAction(
start, end, loopconfig, config, items);
3290 R__ASSERT(
false &&
"Not yet implemented");
3328 template <
typename T>
3359 template <
typename ActionHolder>
3365 UInt_t
start, count;
3374 void* alternative = newProxy->
Allocate(nvalues,
true);
3378 void *begin = &(startbuf[0]);
3379 void *end = &(endbuf[0]);
3385 ActionHolder::Action(buf,begin,end,&loopconf,config);
3387 if (begin != &(startbuf[0])) {
3392 newProxy->
Commit(alternative);
3398 template <
typename ActionHolder>
3408 void *collection = ((
char*)addr)+config->
fOffset;
3416 void *begin = &(startbuf[0]);
3417 void *end = &(endbuf[0]);
3423 ActionHolder::Action(buf,begin,end,&loopconf,config);
3425 if (begin != &(startbuf[0])) {
3459 template <
typename T>
3467 template <
typename T>
3475 template <
typename From,
typename To>
3484 template <
typename Memory,
typename Onfile>
3497template <
typename Looper,
typename From>
3524template <
class Looper>
3546 case TStreamerInfo::kBits:
Error(
"GetNumericCollectionReadAction",
"There is no support for kBits outside of a TObject.");
break;
3575 Fatal(
"GetNumericCollectionReadAction",
"Is confused about %d",type);
3580template <
typename Looper,
typename From>
3603 Error(
"GetConvertCollectionReadActionFrom",
"UNEXPECTED: newtype == %d", newtype);
3611template <
typename Looper>
3646 Error(
"GetConvertCollectionReadAction",
"There is no support for kBits outside of a TObject.");
3651 Error(
"GetConvertCollectionReadAction",
"UNEXPECTED: oldtype == %d", oldtype);
3656template <
class Looper>
3682 if (!nbits) nbits = 12;
3715 auto baseActions = Looper::CreateReadActionSequence(*baseinfo, loopConfig);
3716 baseActions->AddToOffset(baseEl->
GetOffset());
3738 return TConfiguredAction( Looper::template LoopOverCollection<ReadViaClassBuffer>,
3741 return TConfiguredAction( Looper::template LoopOverCollection<ReadViaClassBuffer>,
3781 if (!nbits) nbits = 12;
3804template <
typename Looper,
typename From>
3807 switch (onfileType) {
3826 Error(
"GetConvertCollectionWriteActionFrom",
"Write Conversion to Float16_t not yet supported");
3830 Error(
"GetConvertCollectionWriteActionFrom",
"Write Conversion to Double32_t not yet supported");
3836 Error(
"GetConvertCollectionWriteActionFrom",
"UNEXPECTED: onfileType/oldtype == %d", onfileType);
3844template <
typename Looper>
3847 switch (memoryType) {
3879 Error(
"GetConvertCollectionWriteActionFrom",
"There is no support for kBits outside of a TObject.");
3884 Error(
"GetConvertCollectionWriteActionFrom",
"UNEXPECTED: memoryType/newype == %d", memoryType);
3892template <
typename Looper,
typename Onfile>
3919template <
class Looper>
4006 if (!nbits) nbits = 12;
4034 auto baseActions = Looper::CreateWriteActionSequence(*baseinfo, loopConfig);
4035 baseActions->AddToOffset(baseEl->
GetOffset());
4057 return TConfiguredAction( Looper::template LoopOverCollection<WriteViaClassBuffer>,
4060 return TConfiguredAction( Looper::template LoopOverCollection<WriteViaClassBuffer>,
4072template <
class Looper>
4093 case TStreamerInfo::kBits:
Error(
"GetNumericCollectionWriteAction",
"There is no support for kBits outside of a TObject.");
break;
4122 Fatal(
"GetNumericCollectionWriteAction",
"Is confused about %d",type);
4209 fNslots = ndata + ndata/2 + 1;
4228 for (i = 0; i < ndata; ++i) {
4255 && (
fComp[keep].fMethod == 0)
4272 if (!previousOptimized) {
4283 if (
fComp[keep].fLength == 0) {
4284 fComp[keep].fLength++;
4286 fComp[keep].fLength++;
4288 isOptimized =
kTRUE;
4289 previousOptimized =
kTRUE;
4290 }
else if (element->
GetType() < 0) {
4303 previousOptimized =
kFALSE;
4321 Warning(
"Compile",
"Counter %s should not be skipped from class %s", element->
GetName(),
GetName());
4332 if (
fComp[keep].fLength == 0) {
4333 fComp[keep].fLength = 1;
4336 previousOptimized =
kFALSE;
4346 for (i = 0; i <
fNdata; ++i) {
4375template <
typename From>
4398template <
typename Onfile>
4432 switch (compinfo->
fType) {
4453 if (!nbits) nbits = 12;
4483 if (newClass && newClass != oldClass) {
4485 readSequence->
AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4487 readSequence->
AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
4491 readSequence->
AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4493 readSequence->
AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
4497 if (newClass && newClass != oldClass) {
4499 readSequence->
AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4500 }
else if (oldClass) {
4502 readSequence->
AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
4506 readSequence->
AddAction(
GetConvertCollectionReadAction<VectorLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
4509 readSequence->
AddAction(
GetConvertCollectionReadAction<AssociativeLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
4515 readSequence->
AddAction(
GetConvertCollectionReadAction<GenericLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
4522 readSequence->
AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4523 }
else if (oldClass) {
4525 readSequence->
AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
4547 if (newClass && newClass != oldClass) {
4549 readSequence->
AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4551 readSequence->
AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
4555 readSequence->
AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4557 readSequence->
AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetTypeName(),isSTLbase));
4561 if (newClass && newClass != oldClass) {
4563 readSequence->
AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4565 readSequence->
AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
4569 readSequence->
AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
4571 readSequence->
AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetTypeName(),isSTLbase));
4626 if (!nbits) nbits = 12;
4647 readSequence->
AddAction(ScalarLooper::ReadStreamerLoop<false>::Action,
4657 auto memoryBaseCl = base && base->GetNewBaseClass() ? base->GetNewBaseClass() : onfileBaseCl;
4659 if(!base || !memoryBaseCl ||
4660 memoryBaseCl->GetStreamer() ||
4661 memoryBaseCl->GetStreamerFunc() || memoryBaseCl->GetConvStreamerFunc())
4715 switch (compinfo->
fType) {
4748 readSequence->
AddAction(ScalarLooper::ReadStreamerLoop<true>::Action,
4758 default:
generic =
kTRUE;
break;
4802 switch (compinfo->
fType) {
4856 if (newClass && newClass != onfileClass) {
4862 }
else if (onfileClass) {
4867 new TConfigSTL(
false,
this, i, compinfo, compinfo->
fOffset, 1, onfileClass, newClass,
4874 new TConfigSTL(
false,
this, i, compinfo, compinfo->
fOffset, 1, onfileClass, newClass,
4880 new TConfigSTL(
false,
this, i, compinfo, compinfo->
fOffset, 1, onfileClass, newClass,
4890 new TConfigSTL(
false,
this, i, compinfo, compinfo->
fOffset, 1, onfileClass, newClass,
4902 }
else if (onfileClass) {
4938 if (newClass && newClass != onfileClass) {
4976 writeSequence->
AddAction(ScalarLooper::WriteStreamerLoop<false>::Action,
4986 auto memoryBaseCl = base && base->GetNewBaseClass() ? base->GetNewBaseClass() : onfileBaseCl;
4988 if(!base || !memoryBaseCl ||
4989 memoryBaseCl->GetStreamer() ||
4990 memoryBaseCl->GetStreamerFunc() || memoryBaseCl->GetConvStreamerFunc())
5069 switch (compinfo->
fType) {
5132 default:
generic =
kTRUE;
break;
5175 std::unique_ptr<TLoopConfiguration> loopConfig;
5186 loopConfig = std::make_unique<TVectorLoopConfig>(&proxy, increment,
kTRUE);
5193 loopConfig = std::make_unique<TVectorLoopConfig>(&proxy, increment,
kTRUE);
5196 loopConfig = std::make_unique<TGenericLoopConfig>(&proxy,
kTRUE);
5212 for (UInt_t i = 0; i < ndata; ++i) {
5236 ::Warning(
"CreateReadMemberWiseActions",
"%s",
5249 if (newType != oldType) {
5299 std::unique_ptr<TLoopConfiguration> loopConfig;
5310 loopConfig = std::make_unique<TVectorLoopConfig>(&proxy, increment,
kFALSE);
5312 loopConfig = std::make_unique<TGenericLoopConfig>(&proxy,
kFALSE);
5330 for (UInt_t i = 0; i < ndata; ++i) {
5355 if (memoryType != onfileType) {
5358 if (memoryType > 0) {
5407 TStreamerInfoActions::ActionContainer_t::iterator end =
fActions.end();
5408 for(TStreamerInfoActions::ActionContainer_t::iterator iter =
fActions.begin();
5413 if (iter->fConfiguration->fElemId != (UInt_t)-1 &&
5415 iter->fConfiguration->AddToOffset(delta);
5424 TStreamerInfoActions::ActionContainer_t::iterator end =
fActions.end();
5425 for(TStreamerInfoActions::ActionContainer_t::iterator iter =
fActions.begin();
5429 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5430 iter->fConfiguration->SetMissing();
5442 TStreamerInfoActions::ActionContainer_t::iterator end =
fActions.end();
5443 for(TStreamerInfoActions::ActionContainer_t::iterator iter =
fActions.begin();
5448 sequence->
AddAction( iter->fAction, conf );
5458 for(UInt_t
id = 0;
id < element_ids.size(); ++id) {
5459 if ( element_ids[
id].fElemID < 0 ) {
5460 if (element_ids[
id].fNestedIDs) {
5461 auto original = create(element_ids[
id].fNestedIDs->fInfo,
5464 if (element_ids[
id].fNestedIDs->fOnfileObject) {
5465 auto conf =
new TConfigurationPushDataCache(element_ids[
id].fNestedIDs->fInfo, element_ids[
id].fNestedIDs->fOnfileObject, offset);
5474 original->AddToSubSequence(sequence, element_ids[
id].fNestedIDs->fIDs, element_ids[
id].fNestedIDs->fOffset, create);
5476 if (element_ids[
id].fNestedIDs->fOnfileObject) {
5487 TStreamerInfoActions::ActionContainer_t::iterator end =
fActions.end();
5488 for(TStreamerInfoActions::ActionContainer_t::iterator iter =
fActions.begin();
5493 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5495 sequence->
AddAction( iter->fAction, conf );
5499 TStreamerInfoActions::ActionContainer_t::iterator end =
fActions.end();
5500 for(TStreamerInfoActions::ActionContainer_t::iterator iter =
fActions.begin();
5503 if ( iter->fConfiguration->fElemId == (UInt_t)element_ids[
id].fElemID ) {
5505 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5507 sequence->
AddAction( iter->fAction, conf );
5538 for(UInt_t
id = 0;
id < element_ids.size(); ++id) {
5539 if ( element_ids[
id] < 0 ) {
5540 TStreamerInfoActions::ActionContainer_t::iterator end =
fActions.end();
5541 for(TStreamerInfoActions::ActionContainer_t::iterator iter =
fActions.begin();
5546 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5548 sequence->
AddAction( iter->fAction, conf );
5551 TStreamerInfoActions::ActionContainer_t::iterator end =
fActions.end();
5552 for(TStreamerInfoActions::ActionContainer_t::iterator iter =
fActions.begin();
5555 if ( iter->fConfiguration->fElemId == (UInt_t)element_ids[
id] ) {
5557 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5559 sequence->
AddAction( iter->fAction, conf );
5567#if !defined(R__WIN32) && !defined(_AIX)
5576#if defined(R__WIN32) || defined(__CYGWIN__) || defined(_AIX)
5577 return "not available on this platform";
5579 MEMORY_BASIC_INFORMATION mbi;
5580 if (!VirtualQuery (func, &mbi,
sizeof (mbi)))
5585 HMODULE hMod = (HMODULE) mbi.AllocationBase;
5586 static char moduleName[MAX_PATH];
5588 if (!GetModuleFileNameA (hMod, moduleName,
sizeof (moduleName)))
5596 if (dladdr((
void*)func,&info)==0) {
5598 return "name not found";
5601 return info.dli_sname;
5615 TStreamerInfoActions::ActionContainer_t::const_iterator end =
fActions.end();
5616 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter =
fActions.begin();
5620 iter->fConfiguration->Print();
5621 if (strstr(opt,
"func")) {
unsigned short UShort_t
Unsigned Short integer 2 bytes (unsigned short).
double Double32_t
Double 8 bytes in memory, written to disk as a 4 bytes Float_t (32-bits) by default,...
int Int_t
Signed integer 4 bytes (int).
short Version_t
Class version identifier (short).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
const char Option_t
Option string (const char).
Error("WriteTObject","The current directory (%s) is not associated with a file. The object (%s) has not been written.", GetName(), objname)
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
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.
externTVirtualMutex * 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)
#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
! Pointer to the function implementing streaming for this class
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
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.
Bool_t TestBit(UInt_t f) const
virtual const char * GetName() const
Returns name of object.
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
Describe one element (data member) to be Streamed.
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 and updates fClassObject.
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 '...
std::unique_ptr< 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.
TVirtualStreamerInfo * fStreamerInfo
StreamerInfo used to derive these actions.
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.
TConfiguration(TVirtualStreamerInfo *info, UInt_t id, TCompInfo_t *compinfo, Int_t offset)
UInt_t fElemId
Identifier of the TStreamerElement.
TStreamerInfo::TCompInfo_t TCompInfo_t
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
TLoopConfiguration()=default
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.
TStreamerInfo(const TStreamerInfo &)=delete
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.
size_t fAlignment
!alignment of the memory representation of the class
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'.
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
Bool_t fOptimized
! true if the StreamerInfo has been optimized
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 ReadBasicType(TBuffer &buf, void *addr, const TConfiguration *config)
std::vector< TIDNode > TIDs
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)
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 std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateWriteActionSequence(TStreamerInfo &info, TLoopConfiguration *loopConfig)
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 Int_t WriteStreamerCase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateReadActionSequence(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 Int_t ReadBasicType(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateWriteActionSequence(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
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateReadActionSequence(TStreamerInfo &info, TLoopConfiguration *)
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)