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);
248 template <
typename T>
251 T *
x = (
T *)(((
char *)addr) + config->
fOffset);
259 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
267 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
275 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
283 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
293 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
300 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
307 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
315 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
328 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
335 void *
x = (
void *)(((
char *)addr) + config->
fOffset);
342 template<
bool kIsTextT>
367 char **contp = (
char **)((
char *)addr + ioffset);
369 char *cont = contp[j];
371 Int_t nobjects = cont ? proxy->
Size() : 0;
385 }
else if (pstreamer ==
nullptr) {
387 char **contp = (
char **)((
char *)addr + ioffset);
389 char *cont = contp[j];
405 template<
bool kIsTextT>
428 if( vers < 9 && newClass && newClass!=oldClass ) {
429 Error(
"ReadBuffer",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
453 void **contp = (
void**)((
char *) addr + ioffset);
455 void *cont = contp[j];
457 contp[j] = cle->
New();
463 env = newProxy->
Allocate(nobjects,
true);
476 }
else if (pstreamer ==
nullptr) {
478 void **contp = (
void **)((
char *)addr + ioffset);
480 void *cont = contp[j];
481 if (cont ==
nullptr) {
486 contp[j] = cle->
New();
502 template<
bool kIsTextT>
519 (*pstreamer)(buf, (
char *) addr + ioffset , *counter);
521 buf.SetByteCount(pos,
kTRUE);
539 fileVersion =
file->GetVersion();
544 if (fileVersion > 51508) {
554 char** pp = (
char**) ((
char *) addr + ioffset );
593 char** pp = (
char**) ((
char *) addr + ioffset );
617 char**
r = (
char**) pp[ndx];
635 template<
bool kIsTextT>
658 (*pstreamer)(buf, (
char *) addr + ioffset , *counter);
676 fileVersion =
file->GetVersion();
683 if (fileVersion > 51508) {
688 Int_t vlen = *((
Int_t *)((
char *)addr + eoffset +
696 char **pp = (
char **)((
char *)addr + ioffset );
749 pp[ndx] = (
char *)cl->
NewArray(vlen);
751 Error(
"ReadBuffer",
"Memory allocation failed!\n");
758 pp[ndx] = (
char *)
new char *[vlen];
760 Error(
"ReadBuffer",
"Memory allocation failed!\n");
764 memset(pp[ndx], 0, vlen *
sizeof(
char *));
781 Int_t vlen = *((
Int_t *)((
char *)addr + eoffset +
789 char **pp = (
char **)((
char *)addr + ioffset );
839 pp[ndx] = (
char *)cl->
NewArray(vlen);
841 Error(
"ReadBuffer",
"Memory allocation failed!\n");
848 pp[ndx] = (
char *)
new char *[vlen];
850 Error(
"ReadBuffer",
"Memory allocation failed!\n");
854 memset(pp[ndx], 0, vlen *
sizeof(
char *));
867 char **
r = (
char **)pp[ndx];
871 r[
v] = (
char *)cl->
New();
893 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) {};
897 template <
typename T>
916 template <
typename T>
934 ((
TString*)(((
char*)addr)+config->
fOffset))->TString::Streamer(buf);
944 ((
TObject*)(((
char*)addr)+config->
fOffset))->TObject::Streamer(buf);
988 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(oldClass),
fStreamer(0),
fTypeName(type_name),
fIsSTLBase(isbase),
992 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(newClass),
fStreamer(0),
fTypeName(type_name),
fIsSTLBase(isbase),
996 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(oldClass),
fStreamer(streamer),
fTypeName(type_name),
fIsSTLBase(isbase),
1000 TConfiguration(info,
id,compinfo,
offset,
length),
fOldClass(oldClass),
fNewClass(newClass),
fStreamer(streamer),
fTypeName(type_name),
fIsSTLBase(isbase),
1034 printf(
"TVectorLoopConfig: increment=%ld\n",
fIncrement);
1112 void *arr0 =
fNext(iter,end_collection);
1113 if (iter != &iterator[0]) {
1142 void* alternative = oldProxy->
Allocate(nobjects,
true);
1148 void *begin = &(startbuf[0]);
1149 void *end = &(endbuf[0]);
1154 if (begin != &(startbuf[0])) {
1159 oldProxy->
Commit(alternative);
1174 void* env = oldProxy->
Allocate(nobjects,
true);
1176 if (nobjects || vers < 7 ) {
1207 int objectSize = oldClass->
Size();
1208 char *obj = (
char*)addr;
1209 char *endobj = obj + conf->
fLength*objectSize;
1211 for(; obj<endobj; obj+=objectSize) {
1215 void* alternative = oldProxy->
Allocate(nobjects,
true);
1219 void *begin = &(startbuf[0]);
1220 void *end = &(endbuf[0]);
1225 if (begin != &(startbuf[0])) {
1230 oldProxy->
Commit(alternative);
1243 int objectSize = oldClass->
Size();
1244 char *obj = (
char*)addr;
1245 char *endobj = obj + conf->
fLength*objectSize;
1247 for(; obj<endobj; obj+=objectSize) {
1251 void* env = oldProxy->
Allocate(nobjects,
true);
1253 if (nobjects || vers < 7 ) {
1276 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1288 void* alternative = newProxy->
Allocate(nobjects,
true);
1293 void *begin = &(startbuf[0]);
1294 void *end = &(endbuf[0]);
1299 if (begin != &(startbuf[0])) {
1304 newProxy->
Commit(alternative);
1320 Error(
"ReadSTLMemberWiseChangedClass",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1329 int objectSize = newClass->
Size();
1330 char *obj = (
char*)addr;
1331 char *endobj = obj + conf->
fLength*objectSize;
1333 for(; obj<endobj; obj+=objectSize) {
1337 void* alternative = newProxy->
Allocate(nobjects,
true);
1342 void *begin = &(startbuf[0]);
1343 void *end = &(endbuf[0]);
1348 if (begin != &(startbuf[0])) {
1353 newProxy->
Commit(alternative);
1403 memberwise(buf,((
char*)addr)+config->
fOffset,config, vers);
1405 objectwise(buf,((
char*)addr)+config->
fOffset,config, vers, start);
1411 template <
typename From,
typename To>
1418 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1423 template <
typename To>
1435 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1440 template <
typename From,
typename To>
1448 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1453 template <
typename From,
typename To>
1461 *(To*)( ((
char*)addr) + config->
fOffset ) = (To)temp;
1479 printf(
"StreamerInfoAction, class:%s, PushDataCache offset=%d\n",
1482 printf(
"StreamerInfoAction, class:%s, PopDataCache offset=%d\n",
1489 printf(
"StreamerInfoAction, class:%s, %sDataCache, bufpos=%d, arr=%p, offset=%d, onfileObject=%p\n",
1502 b.PushDataCache( onfileObject );
1513 b.PushDataCache( onfileObject );
1526 onfileObject->SetSize(
n);
1527 b.PushDataCache( onfileObject );
1564 fprintf(stdout,
"StreamerInfoAction, class:%s, name=%s, fType[%d]=%d,"
1565 " %s, bufpos=%d, arr=%p, eoffset=%d, Redirect=%p\n",
1567 aElement->
ClassName(),
b.Length(),addr, 0,
b.PeekDataCache() ?
b.PeekDataCache()->GetObjectAt(0) : 0);
1584 Int_t bufpos =
b.Length();
1589 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1590 char *ptr = (
char*)addr;
1597 b.SetBufferOffset(bufpos);
1605 Int_t bufpos =
b.Length();
1611 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1612 char *ptr = (
char*)start;
1613 UInt_t n = (((
void**)end)-((
void**)start));
1617 void *cached_start = (*cached)[0];
1618 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.
fIncrement;
1619 config->
fAction(
b,cached_start,cached_end,&cached_config);
1623 b.SetBufferOffset(bufpos);
1632 Int_t bufpos =
b.Length();
1637 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1638 char *ptr = (
char*)start;
1643 void *cached_start = (*cached)[0];
1644 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.
fIncrement;
1645 config->
fAction(
b,cached_start,cached_end,&cached_config);
1649 b.SetBufferOffset(bufpos);
1658 Int_t bufpos =
b.Length();
1665 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",info->
GetName(),aElement->
GetName());
1670 void *cached_start = (*cached)[0];
1671 void *cached_end = ((
char*)cached_start) + cached->
fSize * cached_config.
fIncrement;
1672 config->
fAction(
b,cached_start,cached_end,&cached_config);
1676 b.SetBufferOffset(bufpos);
1719 template <
typename T>
1723 iter = (
char*)iter + config->
fOffset;
1724 end = (
char*)end + config->
fOffset;
1725 for(; iter != end; iter = (
char*)iter + incr ) {
1726 T *
x = (
T*) ((
char*) iter);
1732 template <
typename From,
typename To>
1739 iter = (
char*)iter + config->
fOffset;
1740 end = (
char*)end + config->
fOffset;
1741 for(; iter != end; iter = (
char*)iter + incr ) {
1743 *(To*)( ((
char*)iter) ) = (To)temp;
1749 template <
typename To>
1756 iter = (
char*)iter + config->
fOffset;
1757 end = (
char*)end + config->
fOffset;
1758 for(; iter != end; iter = (
char*)iter + incr ) {
1765 *(To*)( ((
char*)iter) ) = (To)temp;
1771 template <
typename From,
typename To>
1779 iter = (
char*)iter + config->
fOffset;
1780 end = (
char*)end + config->
fOffset;
1781 for(; iter != end; iter = (
char*)iter + incr ) {
1783 *(To*)( ((
char*)iter) ) = (To)temp;
1789 template <
typename From,
typename To>
1797 iter = (
char*)iter + config->
fOffset;
1798 end = (
char*)end + config->
fOffset;
1799 for(; iter != end; iter = (
char*)iter + incr ) {
1801 *(To*)( ((
char*)iter) ) = (To)temp;
1807 template <
typename T>
1811 iter = (
char*)iter + config->
fOffset;
1812 end = (
char*)end + config->
fOffset;
1813 for(; iter != end; iter = (
char*)iter + incr ) {
1814 T *
x = (
T*) ((
char*) iter);
1820 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
1826 for(
void *iter = start; iter != end; iter = (
char*)iter + incr ) {
1827 iter_action(buf, iter, config);
1838 UInt_t n = (((
char*)end)-((
char*)start))/incr;
1839 char **arrptr =
new char*[
n];
1841 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
1842 arrptr[i] = (
char*)iter;
1875 UInt_t n = (((
char*)end)-((
char*)start))/incr;
1876 char **arrptr =
new char*[
n];
1878 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
1879 arrptr[i] = (
char*)iter;
1891 UInt_t n = (((
char*)end)-((
char*)start))/incr;
1892 char **arrptr =
new char*[
n];
1894 for(
void *iter = start; iter != end; iter = (
char*)iter + incr, ++i ) {
1895 arrptr[i] = (
char*)iter;
1902 template <
typename T>
1911 std::vector<T> *
const vec = (std::vector<T>*)(((
char*)addr)+config->
fOffset);
1914 vec->resize(nvalues);
1916#ifdef R__VISUAL_CPLUSPLUS
1922 T *begin = &(*
vec->begin());
1937 std::vector<bool> *
const vec = (std::vector<bool>*)(((
char*)addr)+config->
fOffset);
1940 vec->resize(nvalues);
1942 bool *items =
new bool[nvalues];
1944 for(
Int_t i = 0 ; i < nvalues; ++i) {
1945 (*vec)[i] = items[i];
1968 std::vector<float> *
const vec = (std::vector<float>*)(((
char*)addr)+config->
fOffset);
1971 vec->resize(nvalues);
1973#ifdef R__VISUAL_CPLUSPLUS
1979 float *begin = &(*
vec->begin());
1994 std::vector<double> *
const vec = (std::vector<double>*)(((
char*)addr)+config->
fOffset);
1997 vec->resize(nvalues);
1999#ifdef R__VISUAL_CPLUSPLUS
2005 double *begin = &(*
vec->begin());
2012 template <
typename From,
typename To>
2022 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2025 vec->resize(nvalues);
2027 From *temp =
new From[nvalues];
2029 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2030 (*vec)[ind] = (To)temp[ind];
2039 template <
typename From,
typename To>
2049 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2052 vec->resize(nvalues);
2054 From *temp =
new From[nvalues];
2056 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2057 (*vec)[ind] = (To)temp[ind];
2066 template <
typename To>
2075 std::vector<To> *
const vec = (std::vector<To>*)(((
char*)addr)+config->
fOffset);
2078 vec->resize(nvalues);
2082 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2083 (*vec)[ind] = (To)temp[ind];
2095 template <
typename T>
2100 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2101 T *
x = (
T*)( ((
char*) (*(
void**)iter) ) +
offset );
2107 template <
typename From,
typename To>
2114 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2116 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2123 template <
typename To>
2130 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2137 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2144 template <
typename From,
typename To>
2152 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2154 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2161 template <
typename From,
typename To>
2169 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2171 To *
x = (To*)( ((
char*) (*(
void**)iter) ) +
offset );
2178 template <
typename T>
2183 for(; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2184 T *
x = (
T*)( ((
char*) (*(
void**)iter) ) +
offset );
2190 template <Int_t (*action)(TBuffer&,
void *,const TConfiguration*)>
2193 for(
void *iter = start; iter != end; iter = (
char*)iter +
sizeof(
void*) ) {
2194 action(buf, *(
void**)iter, config);
2209 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2210 char **arr = (
char**)iter;
2216 Int_t n = ( ((
void**)end) - ((
void**)iter) );
2217 char **arr = (
char**)iter;
2225 template <
typename T>
2241 template <
typename T,
void (*action)(TBuffer&,
void *,Int_t)>
2256 void* alternative = newProxy->
Allocate(nvalues,
true);
2260 void *begin = &(startbuf[0]);
2261 void *end = &(endbuf[0]);
2266 action(buf,begin,nvalues);
2268 if (begin != &(startbuf[0])) {
2273 newProxy->
Commit(alternative);
2281 return ReadNumericalCollection<bool,SimpleRead<bool> >(buf,addr,conf);
2286 return ReadNumericalCollection<Float_t,SimpleReadFloat16 >(buf,addr,conf);
2291 return ReadNumericalCollection<Double_t,SimpleReadDouble32 >(buf,addr,conf);
2294 template <
typename T>
2297 return ReadNumericalCollection<T,SimpleRead<T> >(buf,addr,conf);
2300 template <
typename From,
typename To>
2304 From *temp =
new From[nvalues];
2306 To *
vec = (To*)addr;
2307 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2308 vec[ind] = (To)temp[ind];
2314 template <
typename From,
typename To>
2318 From *temp =
new From[nvalues];
2320 To *
vec = (To*)addr;
2321 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2322 vec[ind] = (To)temp[ind];
2328 template <
typename From,
typename To>
2332 From *temp =
new From[nvalues];
2335 To *
vec = (To*)addr;
2336 for(
Int_t ind = 0; ind < nvalues; ++ind) {
2337 vec[ind] = (To)temp[ind];
2343 template <
typename From,
typename To>
2347 return ReadNumericalCollection<To,ConvertRead<From,To>::Action >(buf,addr,conf);
2355 template <
typename T>
2366 while( (addr = next(iter,end)) ) {
2370 if (iter != &iterator[0]) {
2376 template <
typename T>
2387 while( (addr = next(iter,end)) ) {
2391 if (iter != &iterator[0]) {
2397 template <Int_t (*iter_action)(TBuffer&,
void *,const TConfiguration*)>
2408 while( (addr = next(iter,end)) ) {
2409 iter_action(buf, addr, config);
2411 if (iter != &iterator[0]) {
2417 template <
typename From,
typename To>
2429 while( (addr = next(iter,end)) ) {
2430 To *
x = (To*)( ((
char*)addr) +
offset );
2434 if (iter != &iterator[0]) {
2440 template <
typename From,
typename To>
2452 while( (addr = next(iter,end)) ) {
2453 To *
x = (To*)(addr);
2460 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter = Generic >
2470 From *items =
new From[nvalues];
2472 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
2478 template <
typename To>
2489 UInt_t *items = items_storage;
2497 while( (addr = next(iter,end)) ) {
2502 To *
x = (To*)( ((
char*)addr) +
offset );
2506 if (iter != &iterator[0]) {
2510 delete [] items_storage;
2515 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
2527 From *items =
new From[nvalues];
2529 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
2535 template <
typename From,
typename To,
template <
typename F,
typename T>
class Converter >
2547 From *items =
new From[nvalues];
2549 Converter<From,To>::ConvertAction(items,start,end,loopconfig,config);
2560 return GenericRead(buf,start,end,loopconfig, config);
2577 template <
typename T>
2596 template <
typename ActionHolder>
2611 void* alternative = newProxy->
Allocate(nvalues,
true);
2615 void *begin = &(startbuf[0]);
2616 void *end = &(endbuf[0]);
2622 ActionHolder::Action(buf,begin,end,&loopconf,config);
2624 if (begin != &(startbuf[0])) {
2629 newProxy->
Commit(alternative);
2637 return ReadNumericalCollection<ConvertBasicType<bool,bool,Numeric > >(buf,addr,conf);
2642 return ReadNumericalCollection<ConvertBasicType<NoFactorMarker<float>,float,
Numeric > >(buf,addr,conf);
2647 return ReadNumericalCollection<ConvertBasicType<float,double,Numeric > >(buf,addr,conf);
2652 template <
typename T>
2657 return ReadNumericalCollection<ConvertBasicType<T,T,Numeric > >(buf,addr,conf);
2660 template <
typename From,
typename To>
2665 return ReadNumericalCollection<ConvertBasicType<From,To,Numeric > >(buf,addr,conf);
2672template <
typename Looper,
typename From>
2700template <
class Looper>
2720 case TStreamerInfo::kBits:
Error(
"GetNumericCollectionReadAction",
"There is no support for kBits outside of a TObject.");
break;
2751 Fatal(
"GetNumericCollectionReadAction",
"Is confused about %d",
type);
2756template <
typename Looper,
typename From>
2779 Error(
"GetConvertCollectionReadActionFrom",
"UNEXPECTED: newtype == %d", newtype);
2784template <
typename Looper>
2789 return GetConvertCollectionReadActionFrom<Looper,Bool_t>(newtype, conf );
2792 return GetConvertCollectionReadActionFrom<Looper,Char_t>(newtype, conf );
2795 return GetConvertCollectionReadActionFrom<Looper,Short_t>(newtype, conf );
2798 return GetConvertCollectionReadActionFrom<Looper,Int_t>(newtype, conf );
2801 return GetConvertCollectionReadActionFrom<Looper,Long_t>(newtype, conf );
2804 return GetConvertCollectionReadActionFrom<Looper,Long64_t>(newtype, conf );
2807 return GetConvertCollectionReadActionFrom<Looper,Float_t>( newtype, conf );
2810 return GetConvertCollectionReadActionFrom<Looper,Double_t>(newtype, conf );
2813 return GetConvertCollectionReadActionFrom<Looper,UChar_t>(newtype, conf );
2816 return GetConvertCollectionReadActionFrom<Looper,UShort_t>(newtype, conf );
2819 return GetConvertCollectionReadActionFrom<Looper,UInt_t>(newtype, conf );
2822 return GetConvertCollectionReadActionFrom<Looper,ULong_t>(newtype, conf );
2825 return GetConvertCollectionReadActionFrom<Looper,ULong64_t>(newtype, conf );
2828 return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Float16_t> >( newtype, conf );
2831 return GetConvertCollectionReadActionFrom<Looper,NoFactorMarker<Double32_t> >( newtype, conf );
2834 Error(
"GetConvertCollectionReadAction",
"There is no support for kBits outside of a TObject.");
2839 Error(
"GetConvertCollectionReadAction",
"UNEXPECTED: oldtype == %d", oldtype);
2844template <
class Looper>
2868 if (!nbits) nbits = 12;
2945 if (!nbits) nbits = 12;
2946 return GetCollectionReadConvertAction<Looper,NoFactorMarker<float> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,
offset,nbits) );
2958 return GetCollectionReadConvertAction<Looper,NoFactorMarker<double> >(element->
GetNewType(),
new TConfNoFactor(info,i,compinfo,
offset,nbits) );
2971template <
class Looper>
3078 fNslots = ndata + ndata/2 + 1;
3097 for (i = 0; i < ndata; ++i) {
3141 if (!previousOptimized) {
3152 if (
fComp[keep].fLength == 0) {
3157 isOptimized =
kTRUE;
3158 previousOptimized =
kTRUE;
3159 }
else if (element->
GetType() < 0) {
3172 previousOptimized =
kFALSE;
3190 Warning(
"Compile",
"Counter %s should not be skipped from class %s", element->
GetName(),
GetName());
3201 if (
fComp[keep].fLength == 0) {
3205 previousOptimized =
kFALSE;
3215 for (i = 0; i <
fNdata; ++i) {
3244template <
typename From>
3276 switch (compinfo->
fType) {
3297 if (!nbits) nbits = 12;
3327 if (newClass && newClass != oldClass) {
3329 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3331 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
3335 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3337 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
3341 if (newClass && newClass != oldClass) {
3343 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3346 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase));
3350 readSequence->
AddAction(GetConvertCollectionReadAction<VectorLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
3353 readSequence->
AddAction(GetConvertCollectionReadAction<AssociativeLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
3359 readSequence->
AddAction(GetConvertCollectionReadAction<GenericLooper>(oldClass->
GetCollectionProxy()->
GetType(), newClass->
GetCollectionProxy()->
GetType(),
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,newClass,element->
GetTypeName(),isSTLbase)));
3366 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3369 readSequence->
AddAction(ReadSTL<ReadSTLMemberWiseSameClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,1,oldClass,element->
GetTypeName(),isSTLbase));
3391 if (newClass && newClass != oldClass) {
3393 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3395 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArrayV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
3399 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamerV2>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3405 if (newClass && newClass != oldClass) {
3407 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3409 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseChangedClass,ReadSTLObjectWiseFastArray>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,newClass,element->
GetTypeName(),isSTLbase));
3413 readSequence->
AddAction(ReadSTL<ReadArraySTLMemberWiseSameClass,ReadSTLObjectWiseStreamer>,
new TConfigSTL(
this,i,compinfo,compinfo->
fOffset,element->
GetArrayLength(),oldClass,element->
GetStreamer(),element->
GetTypeName(),isSTLbase));
3470 if (!nbits) nbits = 12;
3471 AddReadConvertAction<NoFactorMarker<float> >(readSequence, compinfo->
fNewType,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
3483 AddReadConvertAction<NoFactorMarker<double> >(readSequence, compinfo->
fNewType,
new TConfNoFactor(
this,i,compinfo,compinfo->
fOffset,nbits) );
3511 switch (compinfo->
fType) {
3552 default:
generic =
kTRUE;
break;
3579 readSequence->
AddAction( GetCollectionReadAction<VectorPtrLooper>(
this,element,compinfo->
fType,i,compinfo,compinfo->
fOffset) );
3596 switch (compinfo->
fType) {
3680#if defined(CDJ_NO_COMPILE)
3683 writeSequence->
fActions.pop_back();
3705 switch (compinfo->
fType) {