40#if (defined(__linux) || defined(__APPLE__)) && defined(__i386__) && \
80 fInfo(nullptr), fInfoStack()
90 fInfo(nullptr), fInfoStack()
107 fInfo(nullptr), fInfoStack()
149 char *sw = (
char *)
x;
159 char *sw = (
char *)
x;
166 memcpy(
x, buf,
sizeof(
Long_t));
233 if (obj ==
nullptr) {
234 Error(
"TBufferFile::ReadStdString",
"The std::string address is nullptr but should not");
249 obj->resize(nbig,
'\0');
253 obj->resize(nwh,
'\0');
271 Int_t nbig = obj->length();
326 &&
"Byte count position is after the end of the buffer");
328 char *buf = (
char *)(
fBuffer + cntpos);
373 const char *
name = clss ? clss->
GetName() : classname ? classname : 0;
377 Error(
"CheckByteCount",
"object of class %s read too few bytes: %d instead of %d",
381 Error(
"CheckByteCount",
"object of class %s read too many bytes: %d instead of %d",
384 Warning(
"CheckByteCount",
"%s::Streamer() not in sync with data on file %s, fix Streamer()",
387 Warning(
"CheckByteCount",
"%s::Streamer() not in sync with data, fix Streamer()",
391 if ( ((
char *)endpos) >
fBufMax ) {
393 Error(
"CheckByteCount",
394 "Byte count probably corrupted around buffer position %d:\n\t%d for a possible maximum of %d",
452 if (!nbits) nbits = 12;
494 ptr[0] = (
Float_t)(aint/factor + minvalue);
513 temp.fIntValue = theExp;
514 temp.fIntValue <<= 23;
515 temp.fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
516 if(1<<(nbits+1) & theMan) temp.fFloatValue = -temp.fFloatValue;
517 ptr[0] = temp.fFloatValue;
529 ptr[0] = (
Double_t)(aint/factor + minvalue);
548 temp.fIntValue = theExp;
549 temp.fIntValue <<= 23;
550 temp.fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
551 if(1<<(nbits+1) & theMan) temp.fFloatValue = -temp.fFloatValue;
552 ptr[0] = (
Double_t)temp.fFloatValue;
631 if (!nbits) nbits = 12;
641 UShort_t theMan = ((1<<(nbits+1))-1) & (fIntValue>>(23-nbits-1));
644 if (theMan&1<<nbits) theMan = (1<<nbits) - 1;
645 if (fFloatValue < 0) theMan |= 1<<(nbits+1);
714 UShort_t theMan = ((1<<(nbits+1))-1) & (fIntValue>>(23-nbits-1)) ;
717 if (theMan&1<<nbits) theMan = (1<<nbits)-1 ;
718 if (fFloatValue < 0) theMan |= 1<<(nbits+1);
737 if (n <= 0 || n >
fBufSize)
return 0;
742 for (
int i = 0; i <
n; i++)
766 if (l <= 0 || l >
fBufSize)
return 0;
789 if (l <= 0 || l >
fBufSize)
return 0;
798 for (
int i = 0; i <
n; i++)
822 if (l <= 0 || l >
fBufSize)
return 0;
824 if (!ii) ii =
new Int_t[
n];
831 for (
int i = 0; i <
n; i++)
855 if (l <= 0 || l >
fBufSize)
return 0;
881 if (l <= 0 || l >
fBufSize)
return 0;
886 for (
int i = 0; i <
n; i++)
909 if (l <= 0 || l >
fBufSize)
return 0;
918 for (
int i = 0; i <
n; i++)
942 if (l <= 0 || l >
fBufSize)
return 0;
947 for (
int i = 0; i <
n; i++)
970 if (n <= 0 || 3*n >
fBufSize)
return 0;
992 if (n <= 0 || 3*n >
fBufSize)
return 0;
1012 if (n <= 0 || n >
fBufSize)
return 0;
1016 if (
sizeof(
Bool_t) > 1) {
1017 for (
int i = 0; i <
n; i++)
1040 if (l <= 0 || l >
fBufSize)
return 0;
1062 if (l <= 0 || l >
fBufSize)
return 0;
1071 for (
int i = 0; i <
n; i++)
1094 if (l <= 0 || l >
fBufSize)
return 0;
1103 for (
int i = 0; i <
n; i++)
1126 if (l <= 0 || l >
fBufSize)
return 0;
1151 if (l <= 0 || l >
fBufSize)
return 0;
1156 for (
int i = 0; i <
n; i++)
1178 if (n <= 0 || l >
fBufSize)
return 0;
1187 for (
int i = 0; i <
n; i++)
1210 if (n <= 0 || l >
fBufSize)
return 0;
1215 for (
int i = 0; i <
n; i++)
1237 if (n <= 0 || 3*n >
fBufSize)
return 0;
1258 if (n <= 0 || 3*n >
fBufSize)
return 0;
1272 if (n <= 0 || n >
fBufSize)
return;
1274 if (
sizeof(
Bool_t) > 1) {
1275 for (
int i = 0; i <
n; i++)
1289 if (n <= 0 || n >
fBufSize)
return;
1304 if (lenchar < 255) {
1310 if (len <= 0 || len >
fBufSize)
return;
1330 if (n <= 0 || l >
fBufSize)
return;
1337 for (
int i = 0; i <
n; i++)
1352 if (l <= 0 || l >
fBufSize)
return;
1359 for (
int i = 0; i <
n; i++)
1374 if (l <= 0 || l >
fBufSize)
return;
1390 if (l <= 0 || l >
fBufSize)
return;
1393 for (
int i = 0; i <
n; i++)
1407 if (l <= 0 || l >
fBufSize)
return;
1414 for (
int i = 0; i <
n; i++)
1429 if (l <= 0 || l >
fBufSize)
return;
1432 for (
int i = 0; i <
n; i++)
1446 if (n <= 0 || 3*n >
fBufSize)
return;
1458 for (
int j=0;j <
n; j++) {
1465 if (!nbits) nbits = 12;
1474 for (i = 0; i <
n; i++) {
1479 fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
1480 if(1<<(nbits+1) & theMan) fFloatValue = -fFloatValue;
1492 if (n <= 0 || 3*n >
fBufSize)
return;
1495 for (
int j=0;j <
n; j++) {
1496 UInt_t aint; *
this >> aint; ptr[j] = (
Float_t)(aint/factor + minvalue);
1506 if (n <= 0 || 3*n >
fBufSize)
return;
1508 if (!nbits) nbits = 12;
1517 for (
Int_t i = 0; i <
n; i++) {
1522 fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
1523 if(1<<(nbits+1) & theMan) fFloatValue = -fFloatValue;
1524 ptr[i] = fFloatValue;
1539 if (n <= 0 || 3*n >
fBufSize)
return;
1545 for (
int j=0;j <
n; j++) {
1555 for (i = 0; i <
n; i++) {
1568 for (i = 0; i <
n; i++) {
1573 fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
1574 if (1<<(nbits+1) & theMan) fFloatValue = -fFloatValue;
1587 if (n <= 0 || 3*n >
fBufSize)
return;
1590 for (
int j=0;j <
n; j++) {
1591 UInt_t aint; *
this >> aint;
d[j] = (
Double_t)(aint/factor + minvalue);
1601 if (n <= 0 || 3*n >
fBufSize)
return;
1606 for (
Int_t i = 0; i <
n; i++) {
1619 for (
Int_t i = 0; i <
n; i++) {
1624 fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
1625 if (1<<(nbits+1) & theMan) fFloatValue = -fFloatValue;
1641 (*streamer)(*
this,start,0);
1645 int objectSize = cl->
Size();
1646 char *obj = (
char*)start;
1647 char *end = obj +
n*objectSize;
1649 for(; obj<end; obj+=objectSize) ((
TClass*)cl)->
Streamer(obj,*
this, onFileClass);
1667 for (
Int_t j=0;j<
n;j++) {
1668 if (!start[j]) start[j] = cl->
New();
1672 (*streamer)(*
this,(
void*)start,0);
1678 for (
Int_t j=0; j<
n; j++){
1680 void *old = start[j];
1682 if (old && old!=start[j] &&
1707 for (
Int_t j=0; j<
n; j++){
1708 if (!start[j]) start[j] = ((
TClass*)cl)->New();
1709 ((
TClass*)cl)->Streamer(start[j],*
this,onFileClass);
1731 if (
sizeof(
Bool_t) > 1) {
1732 for (
int i = 0; i <
n; i++)
1781 for (
int i = 0; i <
n; i++)
1811 for (
int i = 0; i <
n; i++)
1875 for (
int i = 0; i <
n; i++)
1904 for (
int i = 0; i <
n; i++)
1930 for (
int i = 0; i <
n; i++)
1987 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
1988 if (n < 0 || n > maxElements)
1990 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
1997 if (
sizeof(
Bool_t) > 1) {
1998 for (
int i = 0; i <
n; i++)
2015 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2016 if (n < 0 || n > maxElements)
2018 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2038 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2039 if (n < 0 || n > maxElements)
2041 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2068 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2069 if (n < 0 || n > maxElements)
2071 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2083 for (
int i = 0; i <
n; i++)
2100 constexpr Int_t dataWidth = 4;
2101 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2102 if (n < 0 || n > maxElements)
2104 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2116 for (
int i = 0; i <
n; i++)
2133 constexpr Int_t dataWidth = 8;
2134 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2135 if (n < 0 || n > maxElements)
2137 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2157 constexpr Int_t dataWidth = 8;
2158 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2159 if (n < 0 || n > maxElements)
2161 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2180 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2181 if (n < 0 || n > maxElements)
2183 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2191 for (
int i = 0; i <
n; i++)
2208 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2209 if (n < 0 || n > maxElements)
2211 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2223 for (
int i = 0; i <
n; i++)
2241 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2242 if (n < 0 || n > maxElements)
2244 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2252 for (
int i = 0; i <
n; i++)
2276 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2277 if (n < 0 || n > maxElements)
2279 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2293 for (
int j = 0; j <
n; j++) {
2303 if (!nbits) nbits = 12;
2312 for (i = 0; i <
n; i++) {
2315 UShort_t theMan = ((1<<(nbits+1))-1) & (fIntValue>>(23-nbits-1));
2318 if (theMan&1<<nbits) theMan = (1<<nbits) - 1;
2319 if (fFloatValue < 0) theMan |= 1<<(nbits+1);
2342 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2343 if (n < 0 || n > maxElements)
2345 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2359 for (
int j = 0; j <
n; j++) {
2372 for (i = 0; i <
n; i++) {
2384 for (i = 0; i <
n; i++) {
2387 UShort_t theMan = ((1<<(nbits+1))-1) & (fIntValue>>(23-nbits-1));
2390 if(theMan&1<<nbits) theMan = (1<<nbits) - 1;
2391 if (fFloatValue < 0) theMan |= 1<<(nbits+1);
2408 (*streamer)(*
this, start, 0);
2412 char *obj = (
char*)start;
2416 Fatal(
"WriteFastArray",
"Negative number of elements %lld",
n);
2422 ((
TClass*)cl)->Streamer(obj,*
this);
2442 (*streamer)(*
this,(
void*)start,0);
2445 if (
n < 0)
return -1;
2452 for (
Int_t j=0;j<
n;j++) {
2454 if (!strInfo && !start[j]) {
2469 for (
Int_t j=0;j<
n;j++) {
2470 if (!start[j]) start[j] = ((
TClass*)cl)->New();
2471 ((
TClass*)cl)->Streamer(start[j],*
this);
2529 TClass *clOnfile =
nullptr;
2530 Int_t baseOffset = 0;
2531 if (clRef && (clRef!=(
TClass*)(-1)) && clCast) {
2534 if (baseOffset == -1) {
2541 Error(
"ReadObject",
"got object of wrong class! requested %s but got %s",
2550 Info(
"ReadObjectAny",
"Using Converter StreamerInfo from %s to %s",clRef->
GetName(),clCast->
GetName());
2552 clRef =
const_cast<TClass*
>(clCast);
2557 Error(
"ReadObject",
"trying to read an emulated class (%s) to store in a compiled pointer (%s)",
2569 if (obj == (
void*) -1) obj =
nullptr;
2572 return (obj + baseOffset);
2577 if (clRef == (
TClass*) -1) {
2595 Error(
"ReadObject",
"object tag too large, I/O buffer corrupted");
2603 if (clRef && (clRef!=(
TClass*)(-1)) && clCast) {
2606 if (baseOffset == -1) {
2607 Error(
"ReadObject",
"Got object of wrong class (Got %s while expecting %s)",
2625 obj = (
char*)clRef->
New();
2627 Error(
"ReadObject",
"could not create object of class %s",
2640 clRef->
Streamer( obj, *
this, clOnfile );
2645 return obj+baseOffset;
2662 if (!actualObjectStart) {
2690 Warning(
"WriteObjectAny",
"since %s has no public constructor\n"
2691 "\twhich can be called without argument, objects of this class\n"
2692 "\tcan not be read with the current library. You will need to\n"
2693 "\tadd a default constructor before attempting to read it.",
2721 ((
TClass*)actualClass)->Streamer((
void*)actualObjectStart,*
this);
2741 if (fBufCur < fBuffer || fBufCur >
fBufMax) {
2746 UInt_t bcnt, tag, startpos = 0;
2759 if (objTag) *objTag = tag;
2782 UInt_t clTag = (tag & ~kClassMask);
2789 Error(
"ReadClass",
"illegal class tag=%d (0<tag<=%d), I/O buffer corrupted",
2804 Error(
"ReadClass",
"The on-file class is \"%s\" which is not compatible with the requested class: \"%s\"",
2810 if (objTag) *objTag = (bcnt & ~kByteCountMask);
2813 if (!cl) cl = (
TClass*)-1;
2889 Error(
"SkipVersion",
"Could not find the StreamerInfo with a checksum of %d for the class \"%s\" in %s.",
2892 Error(
"SkipVersion",
"Could not find the StreamerInfo with a checksum of %d for the class \"%s\" (buffer with no parent)",
2912 Error(
"SkipVersion",
"Could not find the StreamerInfo with a checksum of %d for the class \"%s\" in %s.",
2918 Error(
"SkipVersion",
"Class %s not known to file %s.",
2960 if (bcnt) *bcnt = (
v.cnt & ~kByteCountMask);
2968 && (
v.cnt &&
v.cnt >= 6)
2975 return vinfo->TStreamerInfo::GetClassVersion();
2985 Error(
"ReadVersion",
"Could not find the StreamerInfo with a checksum of 0x%x for the class \"%s\" in %s.",
2988 Error(
"ReadVersion",
"Could not find the StreamerInfo with a checksum of 0x%x for the class \"%s\" (buffer with no parent)",
2999 if (
v.cnt &&
v.cnt >= 6)
3016 Error(
"ReadVersion",
"Could not find the StreamerInfo with a checksum of 0x%x for the class \"%s\" in %s.",
3022 Error(
"ReadVersion",
"Class %s not known to file %s.",
3066 if (bcnt) *bcnt = (
v.cnt & ~kByteCountMask);
3094 return vinfo->TStreamerInfo::GetClassVersion();
3134 Error(
"ReadVersion",
"Class %s not known to file %s.",
3157 if (version<=1 && cl->IsForeign()) {
3162 Error(
"WriteVersion",
"version number cannot be larger than %hd)",
3187 if (version<=1 && cl->IsForeign()) {
3188 Error(
"WriteVersionMemberWise",
"Member-wise streaming of foreign collection not yet implemented!");
3193 Error(
"WriteVersionMemberWise",
"version number cannot be larger than %hd)",
3212 else Warning(
"StreamObject",
"No TClass for the type %s is available, the object was not read.", typeinfo.name());
3222 else Warning(
"StreamObject",
"No TClass for the type %s is available, the object was not read.", className);
3230 ((
TClass*)cl)->Streamer(obj, *
this, (
TClass*)onFileClass );
3283 Warning(
"CheckObject",
"reference to unavailable class %s,"
3284 " pointers of this type will be 0", cl->
GetName());
3286 Warning(
"CheckObject",
"reference to an unavailable class,"
3287 " pointers of that type will be 0");
3292 }
else if (cli == -1) {
3313 Warning(
"CheckObject",
"reference to object of unavailable class %s, offset=%d"
3314 " pointer will be 0", cl ? cl->
GetName() :
"TObject",
offset);
3320 }
else if (cli == -1) {
3340 if (max == 0)
return 0;
3357 if (max == 0)
return;
3380 while (nr < max-1) {
3400 WriteBuf(s, (strlen(s)+1)*
sizeof(
char));
3460 Error(
"ReadClassBuffer",
3461 "Could not find the right streamer info to convert %s version %d into a %s, object skipped at offset %d",
3475 auto ninfos = infos->
GetSize();
3476 if (version < -1 || version >= ninfos) {
3477 Error(
"ReadClassBuffer",
"class: %s, attempting to access a wrong version: %d, object skipped at offset %d",
3483 if (sinfo ==
nullptr) {
3492 if (sinfo ==
nullptr) {
3494 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3498 const_cast<TClass*
>(cl)->RegisterStreamerInfo(sinfo);
3499 if (
gDebug > 0)
Info(
"ReadClassBuffer",
"Creating StreamerInfo for class: %s, version: %d", cl->
GetName(), version);
3501 }
else if (version==0) {
3508 Error(
"ReadClassBuffer",
"Could not find the StreamerInfo for version %d of the class %s, object skipped at offset %d",
3520 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3569 Error(
"ReadClassBuffer",
3570 "Could not find the right streamer info to convert %s version %d into a %s, object skipped at offset %d",
3593 if (version < -1 || version >= infocapacity) {
3594 Error(
"ReadClassBuffer",
"class: %s, attempting to access a wrong version: %d, object skipped at offset %d",
3606 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3616 if (sinfo ==
nullptr) {
3629 auto ninfos = infos->
GetSize();
3630 if (!(version < -1 || version >= ninfos)) {
3634 const_cast<TClass *
>(cl)->BuildRealData(pointer);
3637 const_cast<TClass *
>(cl)->RegisterStreamerInfo(sinfo);
3639 Info(
"ReadClassBuffer",
"Creating StreamerInfo for class: %s, version: %d",
3643 sinfo->
Clear(
"build");
3649 }
else if (version==0) {
3656 Error(
"ReadClassBuffer",
"Could not find the StreamerInfo for version %d of the class %s, object skipped at offset %d",
3667 if (sinfo->TStreamerInfo::IsRecovered()) R__c=0;
3672 if (
gDebug > 2)
Info(
"ReadClassBuffer",
"For class: %s has read %d bytes", cl->
GetName(), R__c);
3688 if (sinfo ==
nullptr) {
3692 if (sinfo ==
nullptr)
3694 if (sinfo ==
nullptr) {
3695 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3697 const_cast<TClass*
>(cl)->SetCurrentStreamerInfo(sinfo);
3698 const_cast<TClass*
>(cl)->RegisterStreamerInfo(sinfo);
3706 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3733 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3734 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3737 (*iter).PrintDebug(*
this,obj);
3743 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3744 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3762 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3763 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3766 if (!start_collection || start_collection == end_collection)
3767 (*iter).PrintDebug(*
this,
nullptr);
3769 (*iter).PrintDebug(*
this, *(
char**)start_collection);
3770 (*iter)(*
this, start_collection, end_collection);
3775 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3776 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3779 (*iter)(*
this,start_collection,end_collection);
3797 void *arr0 = start_collection ? loopconfig->
GetFirstAddress(start_collection,end_collection) : 0;
3799 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3800 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3803 (*iter).PrintDebug(*
this,arr0);
3804 (*iter)(*
this,start_collection,end_collection,loopconfig);
3809 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3810 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3813 (*iter)(*
this,start_collection,end_collection,loopconfig);
void * bswapcpy16(void *to, const void *from, size_t n)
void * bswapcpy32(void *to, const void *from, size_t n)
void frombuf(char *&buf, Bool_t *x)
void tobuf(char *&buf, Bool_t x)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
unsigned long long ULong64_t
const UInt_t kMaxMapCount
const UInt_t kNewClassTag
static void frombufOld(char *&buf, Long_t *x)
Handle old file formats.
const Version_t kMaxVersion
static bool Class_Has_StreamerInfo(const TClass *cl)
Thread-safe check on StreamerInfos of a TClass.
const Version_t kByteCountVMask
const UInt_t kByteCountMask
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
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 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 UChar_t len
Option_t Option_t TPoint TPoint const char mode
R__EXTERN TVirtualMutex * gInterpreterMutex
char *(* ReAllocCharFun_t)(char *, size_t, size_t)
#define R__LOCKGUARD(mutex)
#define R__WRITE_LOCKGUARD(mutex)
#define R__READ_LOCKGUARD(mutex)
Bool_t HasRuleWithSourceClass(const TString &source) const
Return True if we have any rule whose source class is 'source'.
The concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket.
void WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerElement *ele=nullptr) override
Write array of n floats (as truncated float) into the I/O buffer.
void ReadWithFactor(Float_t *ptr, Double_t factor, Double_t minvalue) override
Read a Float16_t from the buffer when the factor and minimum value have been specified see comments a...
void WriteBuf(const void *buf, Int_t max) override
Write max bytes from buf into the I/O buffer.
void WriteFastArray(const Bool_t *b, Long64_t n) override
Write array of n bools into the I/O buffer.
TObject * ReadObject(const TClass *cl) override
Read object from I/O buffer.
void ReadDouble32(Double_t *d, TStreamerElement *ele=nullptr) override
Read a Double32_t from the buffer, see comments about Double32_t encoding at TBufferFile::WriteDouble...
Int_t ReadStaticArrayFloat16(Float_t *f, TStreamerElement *ele=nullptr) override
Read array of floats (written as truncated float) from the I/O buffer.
void DecrementLevel(TVirtualStreamerInfo *) override
Decrement level.
Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr) override
Read class version from I/O buffer.
Version_t ReadVersionNoCheckSum(UInt_t *start=nullptr, UInt_t *bcnt=nullptr) override
Read class version from I/O buffer, when the caller knows for sure that there is no checksum written/...
void SetByteCount(UInt_t cntpos, Bool_t packInVersion=kFALSE) override
Set byte count at position cntpos in the buffer.
~TBufferFile() override
Delete an I/O buffer object.
void ReadWithNbits(Float_t *ptr, Int_t nbits) override
Read a Float16_t from the buffer when the number of bits is specified (explicitly or not) see comment...
void WriteObjectClass(const void *actualObjStart, const TClass *actualClass, Bool_t cacheReuse) override
Write object to I/O buffer.
void ReadTString(TString &s) override
Read TString from TBuffer.
void ReadCharStar(char *&s) override
Read char* from TBuffer.
void StreamObject(void *obj, const std::type_info &typeinfo, const TClass *onFileClass=nullptr) override
Stream an object given its C++ typeinfo information.
UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE) override
Write class version to I/O buffer.
Int_t ReadBuf(void *buf, Int_t max) override
Read max bytes from the I/O buffer into buf.
void WriteString(const char *s) override
Write string to I/O buffer.
char * ReadString(char *s, Int_t max) override
Read string from I/O buffer.
void WriteArray(const Bool_t *b, Int_t n) override
Write array of n bools into the I/O buffer.
void ReadFastArray(Bool_t *b, Int_t n) override
Read array of n bools from the I/O buffer.
void ReadFastArrayString(Char_t *c, Int_t n) override
Read array of n characters from the I/O buffer.
Int_t ReadArray(Bool_t *&b) override
Read array of bools from the I/O buffer.
Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *object) override
Read one collection of objects from the buffer using the StreamerInfoLoopAction.
void * ReadObjectAny(const TClass *cast) override
Read object from I/O buffer.
void SkipObjectAny() override
Skip any kind of object from buffer.
Int_t ReadStaticArrayDouble32(Double_t *d, TStreamerElement *ele=nullptr) override
Read array of doubles (written as float) from the I/O buffer.
TClass * ReadClass(const TClass *cl=nullptr, UInt_t *objTag=nullptr) override
Read class definition from I/O buffer.
Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class) override
Deserialize information from a buffer into an object.
void SkipVersion(const TClass *cl=nullptr) override
Skip class version from I/O buffer.
void ReadFloat16(Float_t *f, TStreamerElement *ele=nullptr) override
Read a Float16_t from the buffer, see comments about Float16_t encoding at TBufferFile::WriteFloat16(...
void Streamer(TBuffer &) override
Stream an object of class TObject.
void WriteFastArrayDouble32(const Double_t *d, Long64_t n, TStreamerElement *ele=nullptr) override
Write array of n doubles (as float) into the I/O buffer.
void WriteFastArrayString(const Char_t *c, Long64_t n) override
Write array of n characters into the I/O buffer.
Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss, const char *classname)
Check byte count with current buffer position.
void WriteCharStar(char *s) override
Write char* into TBuffer.
Int_t ApplySequenceVecPtr(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection) override
Read one collection of objects from the buffer using the StreamerInfoLoopAction.
void WriteStdString(const std::string *s) override
Write std::string to TBuffer.
Int_t WriteClassBuffer(const TClass *cl, void *pointer) override
Function called by the Streamer functions to serialize object at p to buffer b.
void WriteClass(const TClass *cl) override
Write class description to I/O buffer.
void ReadFastArrayDouble32(Double_t *d, Int_t n, TStreamerElement *ele=nullptr) override
Read array of n doubles (written as float) from the I/O buffer.
UInt_t WriteVersionMemberWise(const TClass *cl, Bool_t useBcnt=kFALSE) override
Write class version to I/O buffer after setting the kStreamedMemberWise bit in the version number.
void CheckCount(UInt_t offset) override
Check if offset is not too large (< kMaxMapCount) when writing.
Int_t ReadArrayFloat16(Float_t *&f, TStreamerElement *ele=nullptr) override
Read array of floats (written as truncated float) from the I/O buffer.
void ReadFastArrayFloat16(Float_t *f, Int_t n, TStreamerElement *ele=nullptr) override
Read array of n floats (written as truncated float) from the I/O buffer.
void ReadStdString(std::string *s) override
Read std::string from TBuffer.
void WriteFloat16(Float_t *f, TStreamerElement *ele=nullptr) override
Write a Float16_t to the buffer.
Int_t ReadStaticArray(Bool_t *b) override
Read array of bools from the I/O buffer.
void WriteTString(const TString &s) override
Write TString to TBuffer.
UInt_t CheckObject(UInt_t offset, const TClass *cl, Bool_t readClass=kFALSE)
Check for object in the read map.
InfoList_t fInfoStack
Stack of pointers to the TStreamerInfos.
void WriteDouble32(Double_t *d, TStreamerElement *ele=nullptr) override
Write a Double32_t to the buffer.
void ReadLong(Long_t &l) override
Read Long from TBuffer.
void ReadFastArrayWithNbits(Float_t *ptr, Int_t n, Int_t nbits) override
Read array of n floats (written as truncated float) from the I/O buffer.
void IncrementLevel(TVirtualStreamerInfo *info) override
Increment level.
Int_t ReadArrayDouble32(Double_t *&d, TStreamerElement *ele=nullptr) override
Read array of doubles (written as float) from the I/O buffer.
void WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElement *ele=nullptr) override
Write array of n doubles (as float) into the I/O buffer.
void WriteArrayFloat16(const Float_t *f, Int_t n, TStreamerElement *ele=nullptr) override
Write array of n floats (as truncated float) into the I/O buffer.
void ReadFastArrayWithFactor(Float_t *ptr, Int_t n, Double_t factor, Double_t minvalue) override
Read array of n floats (written as truncated float) from the I/O buffer.
Version_t ReadVersionForMemberWise(const TClass *cl=nullptr) override
Read class version from I/O buffer.
TStreamerInfo * fInfo
Pointer to TStreamerInfo object writing/reading the buffer.
Int_t ReadClassEmulated(const TClass *cl, void *object, const TClass *onfile_class) override
Read emulated class.
Direct subclass of TBuffer, implements common methods for TBufferFile and TBufferText classes.
void InitMap() override
Create the fMap container and initialize them with the null object.
void ForceWriteInfo(TVirtualStreamerInfo *info, Bool_t force) override
force writing the TStreamerInfo to the file
TExMap * fMap
Map containing object,offset pairs for reading/writing.
void MapObject(const TObject *obj, UInt_t offset=1) override
Add object to the fMap container.
TExMap * fClassMap
Map containing object,class pairs for reading.
Int_t fDisplacement
Value to be added to the map offsets.
static R__ALWAYS_INLINE ULong_t Void_Hash(const void *ptr)
Return hash value for provided object.
Int_t fMapCount
Number of objects or classes in map.
void TagStreamerInfo(TVirtualStreamerInfo *info) override
Mark the classindex of the current file as using this TStreamerInfo.
Int_t WriteObjectAny(const void *obj, const TClass *ptrClass, Bool_t cacheReuse=kTRUE) override
Write object to I/O buffer.
TObject * GetParent() const
Return pointer to parent of this buffer.
void AutoExpand(Int_t size_needed)
Automatically calculate a new size and expand the buffer to fit at least size_needed.
void SetBufferOffset(Int_t offset=0)
TClass instances represent classes, structs and namespaces in the ROOT type system.
UInt_t GetCheckSum(ECheckSum code=kCurrentCheckSum) const
Call GetCheckSum with validity check.
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=nullptr) const
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
static TClass * Load(TBuffer &b)
Load class description from I/O buffer and return class object.
TVirtualStreamerInfo * GetCurrentStreamerInfo()
void SetLastReadInfo(TVirtualStreamerInfo *info)
Bool_t MatchLegacyCheckSum(UInt_t checksum) const
Return true if the checksum passed as argument is one of the checksum value produced by the older che...
TVirtualStreamerInfo * GetLastReadInfo() const
Int_t Size() const
Return size of object of this class.
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
void Store(TBuffer &b) const
Store class description on I/O buffer.
const TObjArray * GetStreamerInfos() const
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
Bool_t IsForeign() const
Return kTRUE is the class is Foreign (the class does not have a Streamer method).
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
Int_t GetBaseClassOffset(const TClass *toBase, void *address=nullptr, bool isDerivedObject=true)
Long_t Property() const override
Returns the properties of the TClass as a bit field stored as a Long_t value.
Bool_t HasDefaultConstructor(Bool_t testio=kFALSE) const
Return true if we have access to a constructor usable for I/O.
TVirtualStreamerInfo * GetConversionStreamerInfo(const char *onfile_classname, Int_t version) const
Return a Conversion StreamerInfo from the class 'classname' for version number 'version' to this clas...
TVirtualStreamerInfo * FindStreamerInfo(TObjArray *arr, UInt_t checksum) const
Find the TVirtualStreamerInfo in the StreamerInfos corresponding to checksum.
Version_t GetClassVersion() const
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
void Remove(ULong64_t hash, Long64_t key)
Remove entry with specified key from the TExMap.
void Add(ULong64_t hash, Long64_t key, Long64_t value)
Add an (key,value) pair to the table. The key should be unique.
Long64_t GetValue(ULong64_t hash, Long64_t key)
Return the value belonging to specified key and hash value.
void AddAt(UInt_t slot, ULong64_t hash, Long64_t key, Long64_t value)
Add an (key,value) pair to the table.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
virtual void SetOnFileClass(const TClass *cl)
const char * GetName() const override
Returns name of object.
TObject * At(Int_t idx) const override
TObject * UncheckedAt(Int_t i) const
Int_t GetLast() const override
Return index of last object in array.
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Double_t GetFactor() const
TLoopConfiguration * fLoopConfig
If this is a bundle of memberwise streaming action, this configures the looping.
ActionContainer_t fActions
Base class of the Configurations for the member wise looping routines.
virtual void * GetFirstAddress(void *start, const void *end) const =0
Describes a persistent version of a class.
Int_t GetClassVersion() const override
void BuildEmulated(TFile *file) override
Create an Emulation TStreamerInfo object.
void Build(Bool_t isTransient=kFALSE) override
Build the I/O data structure for the current class version.
void BuildOld() override
rebuild the TStreamerInfo structure
TStreamerInfoActions::TActionSequence * GetReadObjectWiseActions()
void SetClassVersion(Int_t vers) override
void Clear(Option_t *="") override
If opt contains 'built', reset this StreamerInfo as if Build or BuildOld was never called on it (usef...
UInt_t GetCheckSum() const override
TStreamerInfoActions::TActionSequence * GetWriteObjectWiseActions()
Ssiz_t Clobber(Ssiz_t nc)
Clear string and make sure it has a capacity of nc.
Abstract Interface class describing Streamer information for one class.
Int_t IsRecovered() const
Bool_t IsCompiled() const
static Bool_t CanDelete()
static function returning true if ReadBuffer can delete object
R__EXTERN TVirtualRWMutex * gCoreMutex
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.