39# define INLINE_TEMPLATE_ARGS
41# define INLINE_TEMPLATE_ARGS inline
54 return isEmulated || (isVector && hasDefaultAlloc);
57 template <
typename From>
62 template <
typename From>
105 printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
106 " %s, offset=%d (%s), elemnId=%d \n",
122 printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
123 " %s, bufpos=%d, arr=%p, offset=%d (%s)\n",
133 printf(
"TLoopConfiguration: unconfigured\n");
165 printf(
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
166 " %s, offset=%d (%s)\n",
193 char *obj = (
char*)addr;
200 char *obj = (
char*)addr;
205 template <
typename T>
208 T *
x = (T*)( ((
char*)addr) + config->
fOffset );
227 uid = ( obj->
GetUniqueID() & 0xffffff) + (gpid<<24);
250 template <
typename T>
253 T *
x = (T *)(((
char *)addr) + config->
fOffset);
261 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
269 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
277 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
285 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
295 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
302 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
309 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
317 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
330 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
337 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
344 template<
bool kIsTextT>
369 char **contp = (
char **)((
char *)addr + ioffset);
371 char *cont = contp[j];
373 Int_t nobjects = cont ? proxy->
Size() : 0;
387 }
else if (pstreamer ==
nullptr) {
389 char **contp = (
char **)((
char *)addr + ioffset);
391 char *cont = contp[j];
407 template<
bool kIsTextT>
430 if( vers < 9 && newClass && newClass!=oldClass ) {
431 Error(
"ReadBuffer",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
455 void **contp = (
void**)((
char *) addr + ioffset);
457 void *cont = contp[j];
459 contp[j] = cle->
New();
465 env = newProxy->
Allocate(nobjects,
true);
478 }
else if (pstreamer ==
nullptr) {
480 void **contp = (
void **)((
char *)addr + ioffset);
482 void *cont = contp[j];
483 if (cont ==
nullptr) {
488 contp[j] = cle->
New();
504 template<
bool kIsTextT>
521 (*pstreamer)(buf, (
char *) addr + ioffset , *counter);
523 buf.SetByteCount(pos,
kTRUE);
541 fileVersion =
file->GetVersion();
546 if (fileVersion > 51508) {
556 char** pp = (
char**) ((
char *) addr + ioffset );
595 char** pp = (
char**) ((
char *) addr + ioffset );
619 char**
r = (
char**) pp[ndx];
637 template<
bool kIsTextT>
660 (*pstreamer)(buf, (
char *) addr + ioffset , *counter);
678 fileVersion =
file->GetVersion();
685 if (fileVersion > 51508) {
690 Int_t vlen = *((
Int_t *)((
char *)addr + eoffset +
698 char **pp = (
char **)((
char *)addr + ioffset );
751 pp[ndx] = (
char *)cl->
NewArray(vlen);
753 Error(
"ReadBuffer",
"Memory allocation failed!\n");
760 pp[ndx] = (
char *)
new char *[vlen];
762 Error(
"ReadBuffer",
"Memory allocation failed!\n");
766 memset(pp[ndx], 0, vlen *
sizeof(
char *));
783 Int_t vlen = *((
Int_t *)((
char *)addr + eoffset +
791 char **pp = (
char **)((
char *)addr + ioffset );
841 pp[ndx] = (
char *)cl->
NewArray(vlen);
843 Error(
"ReadBuffer",
"Memory allocation failed!\n");
850 pp[ndx] = (
char *)
new char *[vlen];
852 Error(
"ReadBuffer",
"Memory allocation failed!\n");
856 memset(pp[ndx], 0, vlen *
sizeof(
char *));
869 char **
r = (
char **)pp[ndx];
873 r[
v] = (
char *)cl->
New();
895 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) {};
899 template <
typename T>
918 template <
typename T>
936 ((
TString*)(((
char*)addr)+config->
fOffset))->TString::Streamer(buf);
946 ((
TObject*)(((
char*)addr)+config->
fOffset))->TObject::Streamer(buf);
990 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(oldClass),
fStreamer(0),
fTypeName(type_name),
fIsSTLBase(isbase),
994 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(newClass),
fStreamer(0),
fTypeName(type_name),
fIsSTLBase(isbase),
998 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(oldClass),
fStreamer(streamer),
fTypeName(type_name),
fIsSTLBase(isbase),
1002 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(newClass),
fStreamer(streamer),
fTypeName(type_name),
fIsSTLBase(isbase),
1036 printf(
"TVectorLoopConfig: increment=%ld\n",
fIncrement);
1114 void *arr0 =
fNext(iter,end_collection);
1115 if (iter != &iterator[0]) {
1144 void* alternative = oldProxy->
Allocate(nobjects,
true);
1150 void *begin = &(startbuf[0]);
1151 void *end = &(endbuf[0]);
1156 if (begin != &(startbuf[0])) {
1161 oldProxy->
Commit(alternative);
1176 void* env = oldProxy->
Allocate(nobjects,
true);
1178 if (nobjects || vers < 7 ) {
1209 int objectSize = oldClass->
Size();
1210 char *obj = (
char*)addr;
1211 char *endobj = obj + conf->
fLength*objectSize;
1213 for(; obj<endobj; obj+=objectSize) {
1217 void* alternative = oldProxy->
Allocate(nobjects,
true);
1221 void *begin = &(startbuf[0]);
1222 void *end = &(endbuf[0]);
1227 if (begin != &(startbuf[0])) {
1232 oldProxy->
Commit(alternative);
1245 int objectSize = oldClass->
Size();
1246 char *obj = (
char*)addr;
1247 char *endobj = obj + conf->
fLength*objectSize;
1249 for(; obj<endobj; obj+=objectSize) {
1253 void* env = oldProxy->
Allocate(nobjects,
true);
1255 if (nobjects || vers < 7 ) {
1278 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1290 void* alternative = newProxy->
Allocate(nobjects,
true);
1295 void *begin = &(startbuf[0]);
1296 void *end = &(endbuf[0]);
1301 if (begin != &(startbuf[0])) {
1306 newProxy->
Commit(alternative);
1322 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1331 int objectSize = newClass->
Size();
1332 char *obj = (
char*)addr;
1333 char *endobj = obj + conf->
fLength*objectSize;
1335 for(; obj<endobj; obj+=objectSize) {
1339 void* alternative = newProxy->
Allocate(nobjects,
true);
1344 void *begin = &(startbuf[0]);
1345 void *end = &(endbuf[0]);
1350 if (begin != &(startbuf[0])) {
1355 newProxy->
Commit(alternative);
1405 memberwise(buf,((
char*)addr)+config->
fOffset,config, vers);
1407 objectwise(buf,((
char*)addr)+config->
fOffset,config, vers, start);
1413 template <
typename From,
typename To>
1420 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1425 template <
typename To>
1437 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1442 template <
typename From,
typename To>
1450 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1455 template <
typename From,
typename To>
1463 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1481 printf(
"StreamerInfoAction, class:%s, PushDataCache offset=%d\n",
1484 printf(
"StreamerInfoAction, class:%s, PopDataCache offset=%d\n",
1491 printf(
"StreamerInfoAction, class:%s, %sDataCache, bufpos=%d, arr=%p, offset=%d, onfileObject=%p\n",
1504 b.PushDataCache( onfileObject );
1515 b.PushDataCache( onfileObject );
1528 onfileObject->SetSize(
n);
1529 b.PushDataCache( onfileObject );
1566 fprintf(stdout,
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
1567 " %s, bufpos=%d, arr=%p, eoffset=%d, Redirect=%p\n",
1569 aElement->
ClassName(),
b.Length(),addr, 0,
b.PeekDataCache() ?
b.PeekDataCache()->GetObjectAt(0) : 0);
1586 Int_t bufpos =
b.Length();
1591 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1592 char *ptr = (
char*)addr;
1599 b.SetBufferOffset(bufpos);
1607 Int_t bufpos =
b.Length();
1613 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1614 char *ptr = (
char*)start;
1615 UInt_t n = (((
void**)end)-((
void**)start));
1619 void *cached_start = (*cached)[0];
1620 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.
fIncrement;
1621 config->
fAction(
b,cached_start,cached_end,&cached_config);
1625 b.SetBufferOffset(bufpos);
1634 Int_t bufpos =
b.Length();
1639 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1640 char *ptr = (
char*)start;
1645 void *cached_start = (*cached)[0];
1646 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.
fIncrement;
1647 config->
fAction(
b,cached_start,cached_end,&cached_config);
1651 b.SetBufferOffset(bufpos);
1660 Int_t bufpos =
b.Length();
1667 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1672 void *cached_start = (*cached)[0];
1673 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.
fIncrement;
1674 config->
fAction(
b,cached_start,cached_end,&cached_config);
1678 b.SetBufferOffset(bufpos);
1721 template <
typename T>
1725 iter = (
char*)iter + config->
fOffset;
1726 end = (
char*)end + config->
fOffset;
1727 for(; iter != end; iter = (
char*)iter + incr ) {
1728 T *
x = (T*) ((
char*) iter);
1734 template <
typename From,
typename To>
1741 iter = (
char*)iter + config->
fOffset;
1742 end = (
char*)end + config->
fOffset;
1743 for(; iter != end; iter = (
char*)iter + incr ) {
1745 *(To*)( ((
char*)iter) ) = (To)temp;
1751 template <
typename To>
1758 iter = (
char*)iter + config->
fOffset;
1759 end = (
char*)end + config->
fOffset;
1760 for(; iter != end; iter = (
char*)iter + incr ) {
1767 *(To*)( ((
char*)iter) ) = (To)temp;
1773 template <
typename From,
typename To>
1781 iter = (
char*)iter + config->
fOffset;
1782 end = (
char*)end + config->
fOffset;
1783 for(; iter != end; iter = (
char*)iter + incr ) {
1785 *(To*)( ((
char*)iter) ) = (To)temp;
1791 template <
typename From,
typename To>
1799 iter = (
char*)iter + config->
fOffset;
1800 end = (
char*)end + config->
fOffset;
1801 for(; iter != end; iter = (
char*)iter + incr ) {
1803 *(To*)( ((
char*)iter) ) = (To)temp;
1809 template <
typename T>
1813 iter = (
char*)iter + config->
fOffset;
1814 end = (
char*)end + config->
fOffset;
1815 for(; iter != end; iter = (
char*)iter + incr ) {
1816 T *
x = (T*) ((
char*) iter);
1822 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
1828 for(
void *iter = start; iter != end; iter = (
char*)iter + incr ) {
1829 iter_action(buf, iter, config);
1840 UInt_t n = (((
char*)end)-((
char*)start))/incr;
1841 char **arrptr =
new char*[
n];
1843 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
1844 arrptr[i] = (
char*)iter;
1877 UInt_t n = (((
char*)end)-((
char*)start))/incr;
1878 char **arrptr =
new char*[
n];
1880 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
1881 arrptr[i] = (
char*)iter;
1893 UInt_t n = (((
char*)end)-((
char*)start))/incr;
1894 char **arrptr =
new char*[
n];
1896 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
1897 arrptr[i] = (
char*)iter;
1904 template <
typename T>
1913 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)addr)+config->
fOffset);
1916 vec->resize(nvalues);
1918#ifdef R__VISUAL_CPLUSPLUS
1924 T *begin = &(*
vec->begin());
1939 std::vector<bool> *
const vec = (std::vector<bool>*)(((
char*)addr)+config->
fOffset);
1942 vec->resize(nvalues);
1944 bool *items =
new bool[nvalues];
1946 for(
Int_t i = 0 ; i < nvalues; ++i) {
1947 (*vec)[i] = items[i];
1970 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)addr)+config->
fOffset);
1973 vec->resize(nvalues);
1975#ifdef R__VISUAL_CPLUSPLUS
1981 float *begin = &(*
vec->begin());
1996 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)addr)+config->
fOffset);
1999 vec->resize(nvalues);
2001#ifdef R__VISUAL_CPLUSPLUS
2007 double *begin = &(*
vec->begin());
2014 template <
typename From,
typename To>
2024 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2027 vec->resize(nvalues);
2029 From *temp =
new From[nvalues];
2031 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2032 (*vec)[ind] = (To)temp[ind];
2041 template <
typename From,
typename To>
2051 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2054 vec->resize(nvalues);
2056 From *temp =
new From[nvalues];
2058 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2059 (*vec)[ind] = (To)temp[ind];
2068 template <
typename To>
2077 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2080 vec->resize(nvalues);
2084 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2085 (*vec)[ind] = (To)temp[ind];
2097 template <
typename T>
2102 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2103 T *
x = (T*)( ((
char*) (*(
void**)iter) ) +
offset );
2109 template <
typename From,
typename To>
2116 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2118 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2125 template <
typename To>
2132 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2139 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2146 template <
typename From,
typename To>
2154 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2156 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2163 template <
typename From,
typename To>
2171 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2173 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2180 template <
typename T>
2185 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2186 T *
x = (T*)( ((
char*) (*(
void**)iter) ) +
offset );
2192 template <Int_t (*action)(TBuffer&,
void *,const TConfiguration*)>
2195 for(
void *iter = start; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2196 action(buf, *(
void**)iter, config);
2211 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2212 char **arr = (
char**)iter;
2218 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2219 char **arr = (
char**)iter;
2227 template <
typename T>
2243 template <
typename T,
void (*action)(TBuffer&,
void *,Int_t)>
2258 void* alternative = newProxy->
Allocate(nvalues,
true);
2262 void *begin = &(startbuf[0]);
2263 void *end = &(endbuf[0]);
2268 action(buf,begin,nvalues);
2270 if (begin != &(startbuf[0])) {
2275 newProxy->
Commit(alternative);
2283 return ReadNumericalCollection<bool,SimpleRead<bool> >(buf,addr,conf);
2288 return ReadNumericalCollection<Float_t,SimpleReadFloat16 >(buf,addr,conf);
2293 return ReadNumericalCollection<Double_t,SimpleReadDouble32 >(buf,addr,conf);
2296 template <
typename T>
2299 return ReadNumericalCollection<T,SimpleRead<T> >(buf,addr,conf);
2302 template <
typename From,
typename To>
2306 From *temp =
new From[nvalues];
2308 To *
vec = (To*)addr;
2309 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2310 vec[ind] = (To)temp[ind];
2316 template <
typename From,
typename To>
2320 From *temp =
new From[nvalues];
2322 To *
vec = (To*)addr;
2323 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2324 vec[ind] = (To)temp[ind];
2330 template <
typename From,
typename To>
2334 From *temp =
new From[nvalues];
2337 To *
vec = (To*)addr;
2338 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2339 vec[ind] = (To)temp[ind];
2345 template <
typename From,
typename To>
2349 return ReadNumericalCollection<To,ConvertRead<From,To>::Action >(buf,addr,conf);
2357 template <
typename T>
2368 while( (addr = next(iter,end)) ) {
2369 T *
x = (T*)( ((
char*)addr) +
offset );
2372 if (iter != &iterator[0]) {
2378 template <
typename T>
2389 while( (addr = next(iter,end)) ) {
2390 T *
x = (T*)( ((
char*)addr) +
offset );
2393 if (iter != &iterator[0]) {
2399 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
2410 while( (addr = next(iter,end)) ) {
2411 iter_action(buf, addr, config);
2413 if (iter != &iterator[0]) {
2419 template <
typename From,
typename To>
2431 while( (addr = next(iter,end)) ) {
2432 To *
x = (To*)( ((
char*)addr) +
offset );
2436 if (iter != &iterator[0]) {
2442 template <
typename From,
typename To>
2454 while( (addr = next(iter,end)) ) {
2455 To *
x = (To*)(addr);
2462 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter = Generic >
2472 From *items =
new From[nvalues];
2474 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
2480 template <
typename To>
2491 UInt_t *items = items_storage;
2499 while( (addr = next(iter,end)) ) {
2504 To *
x = (To*)( ((
char*)addr) +
offset );
2508 if (iter != &iterator[0]) {
2512 delete [] items_storage;
2517 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
2529 From *items =
new From[nvalues];
2531 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
2537 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
2549 From *items =
new From[nvalues];
2551 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
2562 return GenericRead(buf,start,end,loopconfig, config);
2579 template <
typename T>
2598 template <
typename ActionHolder>
2613 void* alternative = newProxy->
Allocate(nvalues,
true);
2617 void *begin = &(startbuf[0]);
2618 void *end = &(endbuf[0]);
2624 ActionHolder::Action(buf,begin,end,&loopconf,config);
2626 if (begin != &(startbuf[0])) {
2631 newProxy->
Commit(alternative);
2639 return ReadNumericalCollection<ConvertBasicType<bool,bool,Numeric > >(buf,addr,conf);
2644 return ReadNumericalCollection<ConvertBasicType<NoFactorMarker<float>,float,
Numeric > >(buf,addr,conf);
2649 return ReadNumericalCollection<ConvertBasicType<float,double,Numeric > >(buf,addr,conf);
2654 template <
typename T>
2659 return ReadNumericalCollection<ConvertBasicType<T,T,Numeric > >(buf,addr,conf);
2662 template <
typename From,
typename To>
2667 return ReadNumericalCollection<ConvertBasicType<From,To,Numeric > >(buf,addr,conf);
2674template <
typename Looper,
typename From>
2702template <
class Looper>
2722 case TStreamerInfo::kBits:
Error(
"GetNumericCollectionReadAction",
"There is no support for kBits outside of a TObject.");
break;
2753 Fatal(
"GetNumericCollectionReadAction",
"Is confused about %d",
type);
2758template <
typename Looper,
typename From>
2781 Error(
"GetConvertCollectionReadActionFrom",
"UNEXPECTED: newtype == %d", newtype);
2786template <
typename Looper>
2791 return GetConvertCollectionReadActionFrom<Looper,Bool_t>(newtype, conf );
2794 return GetConvertCollectionReadActionFrom<Looper,Char_t>(newtype, conf );
2797 return GetConvertCollectionReadActionFrom<Looper,Short_t>(newtype, conf );
2800 return GetConvertCollectionReadActionFrom<Looper,Int_t>(newtype, conf );
2803 return GetConvertCollectionReadActionFrom<Looper,Long_t>(newtype, conf );
2806 return GetConvertCollectionReadActionFrom<Looper,Long64_t>(newtype, conf );
2809 return GetConvertCollectionReadActionFrom<Looper,Float_t>( newtype, conf );
2812 return GetConvertCollectionReadActionFrom<Looper,Double_t>(newtype, conf );
2815 return GetConvertCollectionReadActionFrom<Looper,UChar_t>(newtype, conf );
2818 return GetConvertCollectionReadActionFrom<Looper,UShort_t>(newtype, conf );
2821 return GetConvertCollectionReadActionFrom<Looper,UInt_t>(newtype, conf );
2824 return GetConvertCollectionReadActionFrom<Looper,ULong_t>(newtype, conf );
2827 return GetConvertCollectionReadActionFrom<Looper,ULong64_t>(newtype, conf );
2830 return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Float16_t> >( newtype, conf );
2833 return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Double32_t> >( newtype, conf );
2836 Error(
"GetConvertCollectionReadAction",
"There is no support for kBits outside of a TObject.");
2841 Error(
"GetConvertCollectionReadAction",
"UNEXPECTED: oldtype == %d", oldtype);
2846template <
class Looper>
2870 if (!nbits) nbits = 12;
2947 if (!nbits) nbits = 12;
2948 return GetCollectionReadConvertAction<Looper,NoFactorMarker<float> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,
offset,nbits) );
2960 return GetCollectionReadConvertAction<Looper,NoFactorMarker<double> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,
offset,nbits) );
2973template <
class Looper>
3080 fNslots = ndata + ndata/2 + 1;
3099 for (i = 0; i < ndata; ++i) {
3143 if (!previousOptimized) {
3154 if (
fComp[keep].fLength == 0) {
3159 isOptimized =
kTRUE;
3160 previousOptimized =
kTRUE;
3161 }
else if (element->
GetType() < 0) {
3174 previousOptimized =
kFALSE;
3192 Warning(
"Compile",
"Counter %s should not be skipped from class %s", element->
GetName(),
GetName());
3203 if (
fComp[keep].fLength == 0) {
3207 previousOptimized =
kFALSE;
3217 for (i = 0; i <
fNdata; ++i) {
3246template <
typename From>
3278 switch (compinfo->
fType) {
3299 if (!nbits) nbits = 12;
3329 if (newClass && newClass != oldClass) {
3331 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3333 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
3337 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3339 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
3343 if (newClass && newClass != oldClass) {
3345 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3348 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
3352 readSequence->
AddAction(GetConvertCollectionReadAction<VectorLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
3355 readSequence->
AddAction(GetConvertCollectionReadAction<AssociativeLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
3361 readSequence->
AddAction(GetConvertCollectionReadAction<GenericLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
3368 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3371 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
3393 if (newClass && newClass != oldClass) {
3395 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3397 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
3401 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3407 if (newClass && newClass != oldClass) {
3409 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3411 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
3415 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3472 if (!nbits) nbits = 12;
3473 AddReadConvertAction<NoFactorMarker<float> >(readSequence, compinfo->
fNewType,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
3485 AddReadConvertAction<NoFactorMarker<double> >(readSequence, compinfo->
fNewType,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
3513 switch (compinfo->
fType) {
3554 default:
generic =
kTRUE;
break;
3581 readSequence->
AddAction( GetCollectionReadAction<VectorPtrLooper>(
this,element,compinfo->
fType,i,compinfo,compinfo->
fOffset) );
3598 switch (compinfo->
fType) {
3682#if defined(CDJ_NO_COMPILE)
3685 writeSequence->
fActions.pop_back();
3707 switch (compinfo->
fType) {