39# define INLINE_TEMPLATE_ARGS
41# define INLINE_TEMPLATE_ARGS inline
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>
351 &&
"Need to new TBufferFile::WriteClassBuffer overload to support this case");
374 template <
typename T>
381 template <
typename T>
390 template <
typename Onfile,
typename Memory>
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>
617 if (
proxy->HasPointers()) {
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),
765 if (iter != &iterator[0]) {
860 char *obj = (
char*)
addr;
896 char *obj = (
char*)
addr;
928 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
972 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
982 char *obj = (
char*)
addr;
1061 "Class level transformation while writing is not yet supported");
1078 void *end = &(
endbuf[0]);
1107 "Class level transformation while writing is not yet supported");
1117 char *obj = (
char*)
addr;
1129 void *end = &(
endbuf[0]);
1187 && !(
vClass->HasCustomStreamerMember()) )
1199 template <
typename From,
typename To>
1211 template <
typename To>
1228 template <
typename From,
typename To>
1241 template <
typename From,
typename To>
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",
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);
1377 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",
info->GetName(),
aElement->GetName());
1378 char *ptr = (
char*)
addr;
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));
1425 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",
info->GetName(),
aElement->GetName());
1426 char *ptr = (
char*)start;
1453 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",
info->GetName(),
aElement->GetName());
1514 template<
typename Looper>
1520 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
1524 std::unique_ptr<TStreamerInfoActions::TActionSequence>
actions(
1532 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
1536 std::unique_ptr<TStreamerInfoActions::TActionSequence>
actions(
1577 (*pstreamer)(buf, (
char *)
addr +
ioffset , *counter);
1581 template<
bool kIsTextT>
1660 char**
r = (
char**) pp[
ndx];
1716 template<
bool kIsTextT>
1788 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1795 pp[
ndx] = (
char *)
new char *[
vlen];
1797 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1883 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1890 pp[
ndx] = (
char *)
new char *[
vlen];
1892 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1909 char **
r = (
char **)pp[
ndx];
1913 r[
v] = (
char *)cl->
New();
1984 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
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 ) {
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 ) {
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 ) {
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 ) {
2173 for(
void *iter = start; iter != end; iter = (
char*)iter +
incr, ++i ) {
2190 for(
void *iter = start; iter != end; iter = (
char*)iter +
incr, ++i ) {
2206 for(
void *iter = start; iter != end; iter = (
char*)iter +
incr, ++i ) {
2222 for(
void *iter = start; iter != end; iter = (
char*)iter +
incr, ++i ) {
2230 template <
typename T>
2239 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)
addr)+config->
fOffset);
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();
2284 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)
addr)+config->
fOffset);
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();
2328 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)
addr)+config->
fOffset);
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>
2374 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)
addr)+config->
fOffset);
2391 template <
typename From,
typename To>
2401 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)
addr)+config->
fOffset);
2418 template <
typename To>
2427 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)
addr)+config->
fOffset);
2443 template <
typename Memory,
typename Onfile>
2452 std::vector<Memory> *
const vec = (std::vector<Memory>*)(((
char*)
addr)+config->
fOffset);
2477 template <
bool kIsText>
2479 template <
bool kIsText>
2482 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
2485 using unique_ptr = std::unique_ptr<TStreamerInfoActions::TActionSequence>;
2486 return unique_ptr(
info.GetReadMemberWiseActions(
kTRUE)->CreateCopy());
2489 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
2492 using unique_ptr = std::unique_ptr<TStreamerInfoActions::TActionSequence>;
2493 return unique_ptr(
info.GetWriteMemberWiseActions(
kTRUE)->CreateCopy());
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);
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*) ) {
2617 To to = (
To)(*from);
2624 template <
typename To,
typename From>
2631 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2633 To to = (
To)(*from);
2639 template <
typename To,
typename From>
2646 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
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)>
2781 void *end = &(
endbuf[0]);
2799 template <
void (*action)(TBuffer&,
void*, const TStreamerElement*)>
2803 while( (
addr = next(iter, end)) )
2809 template <
typename Memory,
typename Onfile,
void (*action)(TBuffer&,
void*, Int_t, const TStreamerElement *elem)>
2815 while( (
addr = next(iter, end)) )
2824 template <
typename T,
void (*action)(TBuffer&,
void *, const
void *, Next_t, Int_t, const TStreamerElement *elem)>
2843 void *end = &(
endbuf[0]);
2878 template <
typename T>
2884 template <
typename T>
2890 template <
typename From,
typename To>
2904 template <
typename From,
typename To>
2918 template <
typename From,
typename To>
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>
2982 void *iter =
loopconfig->fCopyIterator(iterator,start);
2984 while( (
addr = next(iter,end)) ) {
2988 if (iter != &iterator[0]) {
2994 template <
typename T>
3003 void *iter =
loopconfig->fCopyIterator(iterator,start);
3005 while( (
addr = next(iter,end)) ) {
3009 if (iter != &iterator[0]) {
3015 template <
typename To,
typename From>
3025 void *iter =
loopconfig->fCopyIterator(iterator,start);
3027 while( (
addr = next(iter,end)) ) {
3032 if (iter != &iterator[0]) {
3039 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
3048 void *iter =
loopconfig->fCopyIterator(&iterator,start);
3050 while( (
addr = next(iter,end)) ) {
3053 if (iter != &iterator[0]) {
3059 template <
typename From,
typename To>
3069 void *iter =
loopconfig->fCopyIterator(&iterator,start);
3071 while( (
addr = next(iter,end)) ) {
3076 if (iter != &iterator[0]) {
3089 void *iter =
loopconfig->fCopyIterator(&iterator,start);
3092 while( (
addr = next(iter,end)) ) {
3097 if (iter != &iterator[0]) {
3103 template <
typename From,
typename To>
3116 while( (
addr = next(iter,end)) ) {
3133 while( (
addr = next(iter,end)) ) {
3141 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter = Generic >
3159 template <
typename To>
3176 void *iter =
loopconfig->fCopyIterator(&iterator,start);
3178 while( (
addr = next(iter,end)) ) {
3187 if (iter != &iterator[0]) {
3196 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
3216 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
3236 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter = Generic >
3247 Converter<Memory,Onfile>::WriteConvertAction(start, end,
loopconfig, config,
items);
3254 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter >
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 >
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>
3379 void *end = &(
endbuf[0]);
3385 ActionHolder::Action(buf,begin,end,&
loopconf,config);
3398 template <
typename ActionHolder>
3417 void *end = &(
endbuf[0]);
3423 ActionHolder::Action(buf,begin,end,&
loopconf,config);
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>
3678 if (
element->GetFactor() != 0) {
3687 if (
element->GetFactor() != 0) {
3729 if (
info->GetOldVersion() >= 3)
3737 if (
compinfo->fNewClass &&
compinfo->fNewClass->HasDirectStreamerInfoUse())
3777 if (
element->GetFactor() != 0) {
3786 if (
element->GetFactor() != 0) {
3804template <
typename Looper,
typename From>
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>
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>
4002 if (
element->GetFactor() != 0) {
4012 if (
element->GetFactor() != 0) {
4048 if (
info->GetOldVersion() >= 3)
4056 if (
compinfo->fNewClass &&
compinfo->fNewClass->HasDirectStreamerInfoUse())
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);
4227 for (i = 0; i <
ndata; ++i) {
4234 if (
element->GetArrayLength()) {
4255 && (
element->GetArrayDim() == 0)
4289 }
else if (
element->GetType() < 0) {
4320 Warning(
"Compile",
"Counter %s should not be skipped from class %s",
element->GetName(),
GetName());
4345 for (i = 0; i <
fNdata; ++i) {
4374template <
typename From>
4397template <
typename Onfile>
4448 if (
element->GetFactor() != 0) {
4458 if (
element->GetFactor() != 0) {
4480 if (
element->GetArrayLength() <= 1) {
4484 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4486 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase));
4490 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4492 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
element->GetTypeName(),
isSTLbase));
4498 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4500 if (
oldClass->GetCollectionProxy() == 0 ||
oldClass->GetCollectionProxy()->GetValueClass() ||
oldClass->GetCollectionProxy()->HasPointers() ) {
4501 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase));
4505 readSequence->AddAction(
GetConvertCollectionReadAction<VectorLooper>(
oldClass->GetCollectionProxy()->GetType(),
newClass->GetCollectionProxy()->GetType(),
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase)));
4508 readSequence->AddAction(
GetConvertCollectionReadAction<AssociativeLooper>(
oldClass->GetCollectionProxy()->GetType(),
newClass->GetCollectionProxy()->GetType(),
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase)));
4514 readSequence->AddAction(
GetConvertCollectionReadAction<GenericLooper>(
oldClass->GetCollectionProxy()->GetType(),
newClass->GetCollectionProxy()->GetType(),
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase)));
4521 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4523 if (
oldClass->GetCollectionProxy() == 0 ||
oldClass->GetCollectionProxy()->GetValueClass() ||
oldClass->GetCollectionProxy()->HasPointers() ) {
4524 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
element->GetTypeName(),
isSTLbase));
4548 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
newClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4550 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
newClass,
element->GetTypeName(),
isSTLbase));
4554 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4556 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
element->GetTypeName(),
isSTLbase));
4562 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
newClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4564 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
newClass,
element->GetTypeName(),
isSTLbase));
4568 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4570 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
element->GetTypeName(),
isSTLbase));
4621 if (
element->GetFactor() != 0) {
4631 if (
element->GetFactor() != 0) {
4646 readSequence->AddAction(ScalarLooper::ReadStreamerLoop<false>::Action,
4655 auto onfileBaseCl = base ? base->GetClassPointer() :
nullptr;
4681 if (
compinfo->fNewClass &&
compinfo->fNewClass->HasDirectStreamerInfoUse())
4747 readSequence->AddAction(ScalarLooper::ReadStreamerLoop<true>::Action,
4757 default:
generic =
kTRUE;
break;
4854 if (
element->GetArrayLength() <= 1) {
4863 onfileClass->GetCollectionProxy()->HasPointers()) {
4903 onfileClass->GetCollectionProxy()->GetValueClass() ||
4904 onfileClass->GetCollectionProxy()->HasPointers()) {
4975 writeSequence->AddAction(ScalarLooper::WriteStreamerLoop<false>::Action,
4984 auto onfileBaseCl = base ? base->GetClassPointer() :
nullptr;
5131 default:
generic =
kTRUE;
break;
5177 if (
proxy.HasPointers()) {
5180 return sinfo->GetReadMemberWiseActions(
kTRUE)->CreateCopy();
5234 ::Warning(
"CreateReadMemberWiseActions",
"%s",
5235 baseEl->GetErrorMessage());
5300 if (
proxy.HasPointers()) {
5303 return sinfo->GetWriteMemberWiseActions(
kTRUE)->CreateCopy();
5404 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5405 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5410 if (iter->fConfiguration->fElemId != (
UInt_t)-1 &&
5412 iter->fConfiguration->AddToOffset(delta);
5421 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5422 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5426 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5427 iter->fConfiguration->SetMissing();
5437 sequence->fLoopConfig = fLoopConfig ? fLoopConfig->Copy() : 0;
5439 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5440 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5459 sequence->fLoopConfig ?
sequence->fLoopConfig->GetCollectionProxy() :
nullptr,
5465 else if (
sequence->IsForVectorPtrLooper() )
5478 else if (
sequence->IsForVectorPtrLooper() )
5484 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5485 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5490 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5496 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5497 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5502 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5519 sequence->fLoopConfig = fLoopConfig ? fLoopConfig->Copy() : 0;
5533 sequence->fLoopConfig = fLoopConfig ? fLoopConfig->Copy() : 0;
5537 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5538 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5543 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5548 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5549 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5554 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5564#if !defined(R__WIN32) && !defined(_AIX)
5573#if defined(R__WIN32) || defined(__CYGWIN__) || defined(_AIX)
5574 return "not available on this platform";
5595 return "name not found";
5598 return info.dli_sname;
5610 fLoopConfig->Print();
5612 TStreamerInfoActions::ActionContainer_t::const_iterator end = fActions.end();
5613 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = fActions.begin();
5617 iter->fConfiguration->Print();
5618 if (
strstr(opt,
"func")) {
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#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
void * NewArray(Long_t nElements, ENewType defConstructor=kClassNew) const
Return a pointer to a newly allocated array of objects of this class.
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
Int_t Size() const
Return size of object of this class.
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.
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
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.
Int_t GetEntriesFast() const
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 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...
Describe one element (data member) to be Streamed.
virtual const char * GetFullName() const
Return element name including dimensions, if any Note that this function stores the name into a stati...
const char * GetTypeName() const
static TActionSequence * CreateReadMemberWiseActions(TVirtualStreamerInfo *info, TVirtualCollectionProxy &proxy)
Create the bundle of the actions necessary for the streaming memberwise of the content described by '...
void Print(Option_t *="") const 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 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 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
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.
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 * 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]
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...
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.
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
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.
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...
@ kCustomAlloc
The collection has a custom allocator.
void *(* CopyIterator_t)(void *dest, const void *source)
Copy the iterator source into dest.
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 Next_t GetFunctionNext(Bool_t read=kTRUE)=0
Return a pointer to a function that can advance an iterator (see Next_t).
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 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 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)
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)
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)
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)
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)
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)
static Int_t WriteCollectionFloat16(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t WriteCollectionBasicType(TBuffer &buf, void *addr, const TConfiguration *conf)
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)
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)
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)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateReadActionSequence(TStreamerInfo &info, TLoopConfiguration *)
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)