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>
1517 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
1521 std::unique_ptr<TStreamerInfoActions::TActionSequence>
actions(
1526 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
1530 std::unique_ptr<TStreamerInfoActions::TActionSequence>
actions(
1571 (*pstreamer)(buf, (
char *)
addr +
ioffset , *counter);
1575 template<
bool kIsTextT>
1654 char**
r = (
char**) pp[
ndx];
1710 template<
bool kIsTextT>
1782 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1789 pp[
ndx] = (
char *)
new char *[
vlen];
1791 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1877 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1884 pp[
ndx] = (
char *)
new char *[
vlen];
1886 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1903 char **
r = (
char **)pp[
ndx];
1907 r[
v] = (
char *)cl->
New();
1978 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
1990 template <
bool kIsText>
1992 template <
bool kIsText>
1995 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
2001 for(
void *iter = start; iter != end; iter = (
char*)iter +
incr ) {
2007 template <
typename T>
2011 iter = (
char*)iter + config->
fOffset;
2012 end = (
char*)end + config->
fOffset;
2013 for(; iter != end; iter = (
char*)iter +
incr ) {
2014 T *
x = (T*) ((
char*) iter);
2020 template <
typename From,
typename To>
2027 iter = (
char*)iter + config->
fOffset;
2028 end = (
char*)end + config->
fOffset;
2029 for(; iter != end; iter = (
char*)iter +
incr ) {
2031 *(
To*)( ((
char*)iter) ) = (
To)temp;
2037 template <
typename To>
2044 iter = (
char*)iter + config->
fOffset;
2045 end = (
char*)end + config->
fOffset;
2046 for(; iter != end; iter = (
char*)iter +
incr ) {
2053 *(
To*)( ((
char*)iter) ) = (
To)temp;
2059 template <
typename From,
typename To>
2067 iter = (
char*)iter + config->
fOffset;
2068 end = (
char*)end + config->
fOffset;
2069 for(; iter != end; iter = (
char*)iter +
incr ) {
2071 *(
To*)( ((
char*)iter) ) = (
To)temp;
2077 template <
typename From,
typename To>
2085 iter = (
char*)iter + config->
fOffset;
2086 end = (
char*)end + config->
fOffset;
2087 for(; iter != end; iter = (
char*)iter +
incr ) {
2089 *(
To*)( ((
char*)iter) ) = (
To)temp;
2095 template <
typename T>
2099 iter = (
char*)iter + config->
fOffset;
2100 end = (
char*)end + config->
fOffset;
2101 for(; iter != end; iter = (
char*)iter +
incr ) {
2102 T *
x = (T*) ((
char*) iter);
2108 template <
typename Onfile,
typename Memory>
2113 iter = (
char*)iter + config->
fOffset;
2114 end = (
char*)end + config->
fOffset;
2115 for(; iter != end; iter = (
char*)iter +
incr ) {
2124 template <
typename Onfile,
typename Memory>
2130 iter = (
char*)iter + config->
fOffset;
2131 end = (
char*)end + config->
fOffset;
2132 for(; iter != end; iter = (
char*)iter +
incr ) {
2141 template <
typename Onfile,
typename Memory>
2147 iter = (
char*)iter + config->
fOffset;
2148 end = (
char*)end + config->
fOffset;
2149 for(; iter != end; iter = (
char*)iter +
incr ) {
2167 for(
void *iter = start; iter != end; iter = (
char*)iter +
incr, ++i ) {
2184 for(
void *iter = start; iter != end; iter = (
char*)iter +
incr, ++i ) {
2200 for(
void *iter = start; iter != end; iter = (
char*)iter +
incr, ++i ) {
2216 for(
void *iter = start; iter != end; iter = (
char*)iter +
incr, ++i ) {
2224 template <
typename T>
2233 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)
addr)+config->
fOffset);
2238#ifdef R__VISUAL_CPLUSPLUS
2244 T *begin =
vec->data();
2251 template <
typename T>
2259 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)
addr)+config->
fOffset);
2263 T *begin =
vec->data();
2278 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)
addr)+config->
fOffset);
2283#ifdef R__VISUAL_CPLUSPLUS
2289 float *begin =
vec->data();
2303 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)
addr)+config->
fOffset);
2307 float *begin =
vec->data();
2322 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)
addr)+config->
fOffset);
2327#ifdef R__VISUAL_CPLUSPLUS
2333 double *begin =
vec->data();
2347 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)
addr)+config->
fOffset);
2351 double *begin =
vec->data();
2358 template <
typename From,
typename To>
2368 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)
addr)+config->
fOffset);
2385 template <
typename From,
typename To>
2395 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)
addr)+config->
fOffset);
2412 template <
typename To>
2421 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)
addr)+config->
fOffset);
2437 template <
typename Memory,
typename Onfile>
2446 std::vector<Memory> *
const vec = (std::vector<Memory>*)(((
char*)
addr)+config->
fOffset);
2471 template <
bool kIsText>
2473 template <
bool kIsText>
2476 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
2479 using unique_ptr = std::unique_ptr<TStreamerInfoActions::TActionSequence>;
2480 return unique_ptr(
info.GetReadMemberWiseActions(
kTRUE)->CreateCopy());
2483 static std::unique_ptr<TStreamerInfoActions::TActionSequence>
2486 using unique_ptr = std::unique_ptr<TStreamerInfoActions::TActionSequence>;
2487 return unique_ptr(
info.GetWriteMemberWiseActions(
kTRUE)->CreateCopy());
2490 template <Int_t (*action)(TBuffer&,
void *,const TConfiguration*)>
2493 for(
void *iter = start; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2494 action(buf, *(
void**)iter, config);
2508 template <
typename T>
2513 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2514 T *
x = (T*)( ((
char*) (*(
void**)iter) ) +
offset );
2520 template <
typename From,
typename To>
2527 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2529 To *
x = (
To*)( ((
char*) (*(
void**)iter) ) +
offset );
2536 template <
typename To>
2543 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2550 To *
x = (
To*)( ((
char*) (*(
void**)iter) ) +
offset );
2557 template <
typename From,
typename To>
2565 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2567 To *
x = (
To*)( ((
char*) (*(
void**)iter) ) +
offset );
2574 template <
typename From,
typename To>
2582 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2584 To *
x = (
To*)( ((
char*) (*(
void**)iter) ) +
offset );
2591 template <
typename T>
2596 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2597 T *
x = (T*)( ((
char*) (*(
void**)iter) ) +
offset );
2603 template <
typename To,
typename From>
2609 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2611 To to = (
To)(*from);
2618 template <
typename To,
typename From>
2625 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2627 To to = (
To)(*from);
2633 template <
typename To,
typename From>
2640 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2642 To to = (
To)(*from);
2688 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2689 char **
arr = (
char**)iter;
2695 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2696 char **
arr = (
char**)iter;
2707 template <
typename T>
2723 template <
typename T>
2739 template <
typename T>
2755 template <
typename T,
void (*action)(TBuffer&,
void *,Int_t)>
2775 void *end = &(
endbuf[0]);
2793 template <
void (*action)(TBuffer&,
void*, const TStreamerElement*)>
2797 while( (
addr = next(iter, end)) )
2803 template <
typename Memory,
typename Onfile,
void (*action)(TBuffer&,
void*, Int_t, const TStreamerElement *elem)>
2809 while( (
addr = next(iter, end)) )
2818 template <
typename T,
void (*action)(TBuffer&,
void *, const
void *, Next_t, Int_t, const TStreamerElement *elem)>
2837 void *end = &(
endbuf[0]);
2872 template <
typename T>
2878 template <
typename T>
2884 template <
typename From,
typename To>
2898 template <
typename From,
typename To>
2912 template <
typename From,
typename To>
2926 template <
typename From,
typename To>
2934 template <
typename Memory,
typename Onfile>
2941 template <
typename Memory,
typename Onfile>
2949 template <
typename Memory,
typename Onfile>
2962 template <
bool kIsText>
2964 template <
bool kIsText>
2967 template <
typename T>
2976 void *iter =
loopconfig->fCopyIterator(iterator,start);
2978 while( (
addr = next(iter,end)) ) {
2982 if (iter != &iterator[0]) {
2988 template <
typename T>
2997 void *iter =
loopconfig->fCopyIterator(iterator,start);
2999 while( (
addr = next(iter,end)) ) {
3003 if (iter != &iterator[0]) {
3009 template <
typename To,
typename From>
3019 void *iter =
loopconfig->fCopyIterator(iterator,start);
3021 while( (
addr = next(iter,end)) ) {
3026 if (iter != &iterator[0]) {
3033 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
3042 void *iter =
loopconfig->fCopyIterator(&iterator,start);
3044 while( (
addr = next(iter,end)) ) {
3047 if (iter != &iterator[0]) {
3053 template <
typename From,
typename To>
3063 void *iter =
loopconfig->fCopyIterator(&iterator,start);
3065 while( (
addr = next(iter,end)) ) {
3070 if (iter != &iterator[0]) {
3083 void *iter =
loopconfig->fCopyIterator(&iterator,start);
3086 while( (
addr = next(iter,end)) ) {
3091 if (iter != &iterator[0]) {
3097 template <
typename From,
typename To>
3110 while( (
addr = next(iter,end)) ) {
3127 while( (
addr = next(iter,end)) ) {
3135 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter = Generic >
3153 template <
typename To>
3170 void *iter =
loopconfig->fCopyIterator(&iterator,start);
3172 while( (
addr = next(iter,end)) ) {
3181 if (iter != &iterator[0]) {
3190 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
3210 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
3230 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter = Generic >
3241 Converter<Memory,Onfile>::WriteConvertAction(start, end,
loopconfig, config,
items);
3248 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter >
3261 Converter<Memory,Onfile>::WriteConvertAction(start, end,
loopconfig, config,
items);
3262 R__ASSERT(
false &&
"Not yet implemented");
3270 template <
typename Onfile,
typename Memory,
template <
typename F,
typename T>
class Converter >
3283 Converter<Memory,Onfile>::WriteConvertAction(start, end,
loopconfig, config,
items);
3284 R__ASSERT(
false &&
"Not yet implemented");
3322 template <
typename T>
3353 template <
typename ActionHolder>
3373 void *end = &(
endbuf[0]);
3379 ActionHolder::Action(buf,begin,end,&
loopconf,config);
3392 template <
typename ActionHolder>
3411 void *end = &(
endbuf[0]);
3417 ActionHolder::Action(buf,begin,end,&
loopconf,config);
3453 template <
typename T>
3461 template <
typename T>
3469 template <
typename From,
typename To>
3478 template <
typename Memory,
typename Onfile>
3491template <
typename Looper,
typename From>
3518template <
class Looper>
3540 case TStreamerInfo::kBits:
Error(
"GetNumericCollectionReadAction",
"There is no support for kBits outside of a TObject.");
break;
3569 Fatal(
"GetNumericCollectionReadAction",
"Is confused about %d",
type);
3574template <
typename Looper,
typename From>
3597 Error(
"GetConvertCollectionReadActionFrom",
"UNEXPECTED: newtype == %d",
newtype);
3605template <
typename Looper>
3640 Error(
"GetConvertCollectionReadAction",
"There is no support for kBits outside of a TObject.");
3645 Error(
"GetConvertCollectionReadAction",
"UNEXPECTED: oldtype == %d",
oldtype);
3650template <
class Looper>
3672 if (
element->GetFactor() != 0) {
3681 if (
element->GetFactor() != 0) {
3724 if (
info->GetOldVersion() >= 3)
3732 if (
compinfo->fNewClass &&
compinfo->fNewClass->HasDirectStreamerInfoUse())
3772 if (
element->GetFactor() != 0) {
3781 if (
element->GetFactor() != 0) {
3799template <
typename Looper,
typename From>
3821 Error(
"GetConvertCollectionWriteActionFrom",
"Write Conversion to Float16_t not yet supported");
3825 Error(
"GetConvertCollectionWriteActionFrom",
"Write Conversion to Double32_t not yet supported");
3831 Error(
"GetConvertCollectionWriteActionFrom",
"UNEXPECTED: onfileType/oldtype == %d",
onfileType);
3839template <
typename Looper>
3874 Error(
"GetConvertCollectionWriteActionFrom",
"There is no support for kBits outside of a TObject.");
3879 Error(
"GetConvertCollectionWriteActionFrom",
"UNEXPECTED: memoryType/newype == %d",
memoryType);
3887template <
typename Looper,
typename Onfile>
3914template <
class Looper>
3997 if (
element->GetFactor() != 0) {
4007 if (
element->GetFactor() != 0) {
4044 if (
info->GetOldVersion() >= 3)
4052 if (
compinfo->fNewClass &&
compinfo->fNewClass->HasDirectStreamerInfoUse())
4068template <
class Looper>
4089 case TStreamerInfo::kBits:
Error(
"GetNumericCollectionWriteAction",
"There is no support for kBits outside of a TObject.");
break;
4118 Fatal(
"GetNumericCollectionWriteAction",
"Is confused about %d",
type);
4223 for (i = 0; i <
ndata; ++i) {
4230 if (
element->GetArrayLength()) {
4251 && (
element->GetArrayDim() == 0)
4285 }
else if (
element->GetType() < 0) {
4316 Warning(
"Compile",
"Counter %s should not be skipped from class %s",
element->GetName(),
GetName());
4341 for (i = 0; i <
fNdata; ++i) {
4370template <
typename From>
4393template <
typename Onfile>
4444 if (
element->GetFactor() != 0) {
4454 if (
element->GetFactor() != 0) {
4476 if (
element->GetArrayLength() <= 1) {
4480 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4482 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase));
4486 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4488 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
element->GetTypeName(),
isSTLbase));
4494 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4496 if (
oldClass->GetCollectionProxy() == 0 ||
oldClass->GetCollectionProxy()->GetValueClass() ||
oldClass->GetCollectionProxy()->HasPointers() ) {
4497 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase));
4501 readSequence->AddAction(
GetConvertCollectionReadAction<VectorLooper>(
oldClass->GetCollectionProxy()->GetType(),
newClass->GetCollectionProxy()->GetType(),
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase)));
4504 readSequence->AddAction(
GetConvertCollectionReadAction<AssociativeLooper>(
oldClass->GetCollectionProxy()->GetType(),
newClass->GetCollectionProxy()->GetType(),
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase)));
4510 readSequence->AddAction(
GetConvertCollectionReadAction<GenericLooper>(
oldClass->GetCollectionProxy()->GetType(),
newClass->GetCollectionProxy()->GetType(),
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
newClass,
element->GetTypeName(),
isSTLbase)));
4517 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4519 if (
oldClass->GetCollectionProxy() == 0 ||
oldClass->GetCollectionProxy()->GetValueClass() ||
oldClass->GetCollectionProxy()->HasPointers() ) {
4520 readSequence->AddAction(
ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,1,
oldClass,
element->GetTypeName(),
isSTLbase));
4544 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
newClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4546 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
newClass,
element->GetTypeName(),
isSTLbase));
4550 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4552 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
element->GetTypeName(),
isSTLbase));
4558 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
newClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4560 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
newClass,
element->GetTypeName(),
isSTLbase));
4564 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
element->GetStreamer(),
element->GetTypeName(),
isSTLbase));
4566 readSequence->AddAction(
ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
true,
this,i,
compinfo,
compinfo->fOffset,
element->GetArrayLength(),
oldClass,
element->GetTypeName(),
isSTLbase));
4617 if (
element->GetFactor() != 0) {
4627 if (
element->GetFactor() != 0) {
4642 readSequence->AddAction(ScalarLooper::ReadStreamerLoop<false>::Action,
4651 auto onfileBaseCl = base ? base->GetClassPointer() :
nullptr;
4677 if (
compinfo->fNewClass &&
compinfo->fNewClass->HasDirectStreamerInfoUse())
4743 readSequence->AddAction(ScalarLooper::ReadStreamerLoop<true>::Action,
4753 default:
generic =
kTRUE;
break;
4850 if (
element->GetArrayLength() <= 1) {
4859 onfileClass->GetCollectionProxy()->HasPointers()) {
4899 onfileClass->GetCollectionProxy()->GetValueClass() ||
4900 onfileClass->GetCollectionProxy()->HasPointers()) {
4971 writeSequence->AddAction(ScalarLooper::WriteStreamerLoop<false>::Action,
4980 auto onfileBaseCl = base ? base->GetClassPointer() :
nullptr;
5127 default:
generic =
kTRUE;
break;
5173 if (
proxy.HasPointers()) {
5176 return sinfo->GetReadMemberWiseActions(
kTRUE)->CreateCopy();
5230 ::Warning(
"CreateReadMemberWiseActions",
"%s",
5231 baseEl->GetErrorMessage());
5296 if (
proxy.HasPointers()) {
5299 return sinfo->GetWriteMemberWiseActions(
kTRUE)->CreateCopy();
5397 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5398 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5403 if (iter->fConfiguration->fElemId != (
UInt_t)-1 &&
5405 iter->fConfiguration->AddToOffset(delta);
5414 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5415 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5419 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5420 iter->fConfiguration->SetMissing();
5430 sequence->fLoopConfig = fLoopConfig ? fLoopConfig->Copy() : 0;
5432 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5433 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5452 sequence->fLoopConfig ?
sequence->fLoopConfig->GetCollectionProxy() :
nullptr,
5458 else if (
sequence->IsForVectorPtrLooper() )
5471 else if (
sequence->IsForVectorPtrLooper() )
5477 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5478 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5483 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5489 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5490 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5495 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5512 sequence->fLoopConfig = fLoopConfig ? fLoopConfig->Copy() : 0;
5526 sequence->fLoopConfig = fLoopConfig ? fLoopConfig->Copy() : 0;
5530 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5531 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5536 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5541 TStreamerInfoActions::ActionContainer_t::iterator end = fActions.end();
5542 for(TStreamerInfoActions::ActionContainer_t::iterator iter = fActions.begin();
5547 if (!iter->fConfiguration->fInfo->GetElements()->At(iter->fConfiguration->fElemId)->TestBit(
TStreamerElement::kCache))
5557#if !defined(R__WIN32) && !defined(_AIX)
5566#if defined(R__WIN32) || defined(__CYGWIN__) || defined(_AIX)
5567 return "not available on this platform";
5588 return "name not found";
5591 return info.dli_sname;
5603 fLoopConfig->Print();
5605 TStreamerInfoActions::ActionContainer_t::const_iterator end = fActions.end();
5606 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = fActions.begin();
5610 iter->fConfiguration->Print();
5611 if (
strstr(opt,
"func")) {
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...
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 Int_t WriteStreamerLoopStatic(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t WriteStreamerLoopPoly(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t ReadStreamerLoopPoly(TBuffer &buf, void *addr, const TConfiguration *config)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateReadActionSquence(TStreamerInfo &info, TLoopConfiguration *loopConfig)
static Int_t WriteStreamerCase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateWriteActionSquence(TStreamerInfo &info, TLoopConfiguration *loopConfig)
static Int_t StreamerLoopExternal(TBuffer &buf, void *addr, const TConfiguration *actionConfig)
static Int_t ReadStreamerCase(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconfig, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static void WriteConvertAction(void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config, To *items)
static void ConvertAction(From *items, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static void WriteConvertAction(void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *, To *items)
static void ConvertAction(From *items, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *)
static Int_t Action(TBuffer &, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t Action(TBuffer &buf, void *addr, const TConfiguration *conf)
static Int_t Action(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
static Int_t ReadBasicType(TBuffer &buf, void *start, const void *end, const TLoopConfiguration *loopconf, const TConfiguration *config)
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 std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateWriteActionSquence(TStreamerInfo &info, TLoopConfiguration *)
static Int_t ReadBasicType(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static std::unique_ptr< TStreamerInfoActions::TActionSequence > CreateReadActionSquence(TStreamerInfo &info, TLoopConfiguration *)
static Int_t LoopOverCollection(TBuffer &buf, void *start, const void *end, const TConfiguration *config)
static Int_t GenericRead(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t WriteBasicType(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t GenericWrite(TBuffer &buf, void *iter, const void *end, const TConfiguration *config)
static Int_t WriteBase(TBuffer &buf, void *start, const void *end, const TConfiguration *config)
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)