40#if (defined(__linux) || defined(__APPLE__)) && defined(__i386__) && \
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();
294 if (nch == std::numeric_limits<Int_t>::max()) {
295 Error(
"ReadCharStar",
"Cannot allocate buffer: maximum capacity exceeded (%d bytes)!", std::numeric_limits<Int_t>::max());
330 &&
"Byte count position is after the end of the buffer");
332 char *buf = (
char *)(
fBuffer + cntpos);
377 const char *
name = clss ? clss->
GetName() : classname ? classname : 0;
381 Error(
"CheckByteCount",
"object of class %s read too few bytes: %d instead of %d",
385 Error(
"CheckByteCount",
"object of class %s read too many bytes: %d instead of %d",
388 Warning(
"CheckByteCount",
"%s::Streamer() not in sync with data on file %s, fix Streamer()",
391 Warning(
"CheckByteCount",
"%s::Streamer() not in sync with data, fix Streamer()",
395 if ( ((
char *)endpos) >
fBufMax ) {
397 Error(
"CheckByteCount",
398 "Byte count probably corrupted around buffer position %d:\n\t%d for a possible maximum of %d",
450 if (!nbits) nbits = 12;
486 ptr[0] = (
Float_t)(aint/factor + minvalue);
505 temp.fIntValue = theExp;
506 temp.fIntValue <<= 23;
507 temp.fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
508 if(1<<(nbits+1) & theMan) temp.fFloatValue = -temp.fFloatValue;
509 ptr[0] = temp.fFloatValue;
521 ptr[0] = (
Double_t)(aint/factor + minvalue);
540 temp.fIntValue = theExp;
541 temp.fIntValue <<= 23;
542 temp.fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
543 if(1<<(nbits+1) & theMan) temp.fFloatValue = -temp.fFloatValue;
544 ptr[0] = (
Double_t)temp.fFloatValue;
618 if (!nbits) nbits = 12;
628 UShort_t theMan = ((1<<(nbits+1))-1) & (fIntValue>>(23-nbits-1));
631 if (theMan&1<<nbits) theMan = (1<<nbits) - 1;
632 if (fFloatValue < 0) theMan |= 1<<(nbits+1);
696 UShort_t theMan = ((1<<(nbits+1))-1) & (fIntValue>>(23-nbits-1)) ;
699 if (theMan&1<<nbits) theMan = (1<<nbits)-1 ;
700 if (fFloatValue < 0) theMan |= 1<<(nbits+1);
724 for (
int i = 0;
i <
n;
i++)
780 for (
int i = 0;
i <
n;
i++)
806 if (!ii) ii =
new Int_t[
n];
813 for (
int i = 0;
i <
n;
i++)
868 for (
int i = 0;
i <
n;
i++)
900 for (
int i = 0;
i <
n;
i++)
929 for (
int i = 0;
i <
n;
i++)
999 for (
int i = 0;
i <
n;
i++)
1053 for (
int i = 0;
i <
n;
i++)
1085 for (
int i = 0;
i <
n;
i++)
1138 for (
int i = 0;
i <
n;
i++)
1169 for (
int i = 0;
i <
n;
i++)
1197 for (
int i = 0;
i <
n;
i++)
1256 if (
sizeof(
Bool_t) > 1) {
1257 for (
int i = 0;
i <
n;
i++)
1286 if (lenchar < 255) {
1319 for (
int i = 0;
i <
n;
i++)
1341 for (
int i = 0;
i <
n;
i++)
1375 for (
int i = 0;
i <
n;
i++)
1396 for (
int i = 0;
i <
n;
i++)
1414 for (
int i = 0;
i <
n;
i++)
1434 for (
int j=0;j <
n; j++) {
1441 if (!nbits) nbits = 12;
1450 for (
i = 0;
i <
n;
i++) {
1455 fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
1456 if(1<<(nbits+1) & theMan) fFloatValue = -fFloatValue;
1471 for (
int j=0;j <
n; j++) {
1472 UInt_t aint; *
this >> aint; ptr[j] = (
Float_t)(aint/factor + minvalue);
1484 if (!nbits) nbits = 12;
1498 fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
1499 if(1<<(nbits+1) & theMan) fFloatValue = -fFloatValue;
1500 ptr[
i] = fFloatValue;
1516 for (
int j=0;j <
n; j++) {
1526 for (
i = 0;
i <
n;
i++) {
1539 for (
i = 0;
i <
n;
i++) {
1544 fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
1545 if (1<<(nbits+1) & theMan) fFloatValue = -fFloatValue;
1561 for (
int j=0;j <
n; j++) {
1562 UInt_t aint; *
this >> aint;
d[j] = (
Double_t)(aint/factor + minvalue);
1595 fIntValue |= (theMan & ((1<<(nbits+1))-1)) <<(23-nbits);
1596 if (1<<(nbits+1) & theMan) fFloatValue = -fFloatValue;
1612 (*streamer)(*
this,start,0);
1616 int objectSize = cl->
Size();
1617 char *obj = (
char*)start;
1618 char *end = obj +
n*objectSize;
1620 for(; obj<end; obj+=objectSize) ((
TClass*)cl)->Streamer(obj,*
this, onFileClass);
1638 for (
Int_t j=0;j<
n;j++) {
1639 if (!start[j]) start[j] = cl->
New();
1643 (*streamer)(*
this,(
void*)start,0);
1649 for (
Int_t j=0; j<
n; j++){
1651 void *old = start[j];
1653 if (old && old!=start[j] &&
1678 for (
Int_t j=0; j<
n; j++){
1679 if (!start[j]) start[j] = ((
TClass*)cl)->New();
1680 ((
TClass*)cl)->Streamer(start[j],*
this,onFileClass);
1702 if (
sizeof(
Bool_t) > 1) {
1703 for (
int i = 0;
i <
n;
i++)
1752 for (
int i = 0;
i <
n;
i++)
1782 for (
int i = 0;
i <
n;
i++)
1846 for (
int i = 0;
i <
n;
i++)
1875 for (
int i = 0;
i <
n;
i++)
1901 for (
int i = 0;
i <
n;
i++)
1956 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
1959 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
1966 if (
sizeof(
Bool_t) > 1) {
1967 for (
int i = 0;
i <
n;
i++)
1982 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
1985 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2003 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2006 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2031 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2034 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2046 for (
int i = 0;
i <
n;
i++)
2062 constexpr Int_t dataWidth = 4;
2063 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2066 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2078 for (
int i = 0;
i <
n;
i++)
2093 constexpr Int_t dataWidth = 8;
2094 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2097 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2115 constexpr Int_t dataWidth = 8;
2116 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2119 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2136 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2139 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2147 for (
int i = 0;
i <
n;
i++)
2162 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2165 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2177 for (
int i = 0;
i <
n;
i++)
2193 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2196 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2204 for (
int i = 0;
i <
n;
i++)
2220 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2223 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2237 for (
int j = 0; j <
n; j++) {
2247 if (!nbits) nbits = 12;
2256 for (
i = 0;
i <
n;
i++) {
2259 UShort_t theMan = ((1<<(nbits+1))-1) & (fIntValue>>(23-nbits-1));
2262 if (theMan&1<<nbits) theMan = (1<<nbits) - 1;
2263 if (fFloatValue < 0) theMan |= 1<<(nbits+1);
2278 const Int_t maxElements = (std::numeric_limits<Int_t>::max() -
Length())/dataWidth;
2281 Fatal(
"WriteFastArray",
"Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d",
n, maxElements);
2295 for (
int j = 0; j <
n; j++) {
2308 for (
i = 0;
i <
n;
i++) {
2320 for (
i = 0;
i <
n;
i++) {
2323 UShort_t theMan = ((1<<(nbits+1))-1) & (fIntValue>>(23-nbits-1));
2326 if(theMan&1<<nbits) theMan = (1<<nbits) - 1;
2327 if (fFloatValue < 0) theMan |= 1<<(nbits+1);
2344 (*streamer)(*
this, start, 0);
2348 char *obj = (
char*)start;
2352 Fatal(
"WriteFastArray",
"Negative number of elements %lld",
n);
2358 ((
TClass*)cl)->Streamer(obj,*
this);
2378 (*streamer)(*
this,(
void*)start,0);
2381 if (
n < 0)
return -1;
2388 for (
Int_t j=0;j<
n;j++) {
2390 if (!strInfo && !start[j]) {
2405 for (
Int_t j=0;j<
n;j++) {
2406 if (!start[j]) start[j] = ((
TClass*)cl)->New();
2407 ((
TClass*)cl)->Streamer(start[j],*
this);
2465 TClass *clOnfile =
nullptr;
2466 Int_t baseOffset = 0;
2467 if (clRef && (clRef!=(
TClass*)(-1)) && clCast) {
2470 if (baseOffset == -1) {
2477 Error(
"ReadObject",
"got object of wrong class! requested %s but got %s",
2486 Info(
"ReadObjectAny",
"Using Converter StreamerInfo from %s to %s",clRef->
GetName(),clCast->
GetName());
2488 clRef =
const_cast<TClass*
>(clCast);
2493 Error(
"ReadObject",
"trying to read an emulated class (%s) to store in a compiled pointer (%s)",
2505 if (obj == (
void*) -1) obj =
nullptr;
2508 return (obj + baseOffset);
2513 if (clRef == (
TClass*) -1) {
2531 Error(
"ReadObject",
"object tag too large, I/O buffer corrupted");
2539 if (clRef && (clRef!=(
TClass*)(-1)) && clCast) {
2542 if (baseOffset == -1) {
2543 Error(
"ReadObject",
"Got object of wrong class (Got %s while expecting %s)",
2561 obj = (
char*)clRef->
New();
2563 Error(
"ReadObject",
"could not create object of class %s",
2576 clRef->
Streamer( obj, *
this, clOnfile );
2581 return obj+baseOffset;
2598 if (!actualObjectStart) {
2626 Warning(
"WriteObjectAny",
"since %s has no public constructor\n"
2627 "\twhich can be called without argument, objects of this class\n"
2628 "\tcan not be read with the current library. You will need to\n"
2629 "\tadd a default constructor before attempting to read it.",
2646 if (mapsize ==
fMap->Capacity()) {
2657 ((
TClass*)actualClass)->Streamer((
void*)actualObjectStart,*
this);
2682 UInt_t bcnt, tag, startpos = 0;
2695 if (objTag) *objTag = tag;
2724 if (clTag == 0 || clTag > (
UInt_t)
fMap->GetSize()) {
2725 Error(
"ReadClass",
"illegal class tag=%d (0<tag<=%d), I/O buffer corrupted",
2726 clTag,
fMap->GetSize());
2740 Error(
"ReadClass",
"The on-file class is \"%s\" which is not compatible with the requested class: \"%s\"",
2749 if (!cl) cl = (
TClass*)-1;
2825 Error(
"SkipVersion",
"Could not find the StreamerInfo with a checksum of %d for the class \"%s\" in %s.",
2828 Error(
"SkipVersion",
"Could not find the StreamerInfo with a checksum of %d for the class \"%s\" (buffer with no parent)",
2848 Error(
"SkipVersion",
"Could not find the StreamerInfo with a checksum of %d for the class \"%s\" in %s.",
2854 Error(
"SkipVersion",
"Class %s not known to file %s.",
2904 && (
v.cnt &&
v.cnt >= 6)
2911 return vinfo->TStreamerInfo::GetClassVersion();
2921 Error(
"ReadVersion",
"Could not find the StreamerInfo with a checksum of 0x%x for the class \"%s\" in %s.",
2924 Error(
"ReadVersion",
"Could not find the StreamerInfo with a checksum of 0x%x for the class \"%s\" (buffer with no parent)",
2935 if (
v.cnt &&
v.cnt >= 6)
2952 Error(
"ReadVersion",
"Could not find the StreamerInfo with a checksum of 0x%x for the class \"%s\" in %s.",
2958 Error(
"ReadVersion",
"Class %s not known to file %s.",
3030 return vinfo->TStreamerInfo::GetClassVersion();
3070 Error(
"ReadVersion",
"Class %s not known to file %s.",
3093 if (version<=1 && cl->IsForeign()) {
3098 Error(
"WriteVersion",
"version number cannot be larger than %hd)",
3123 if (version<=1 && cl->IsForeign()) {
3124 Error(
"WriteVersionMemberWise",
"Member-wise streaming of foreign collection not yet implemented!");
3129 Error(
"WriteVersionMemberWise",
"version number cannot be larger than %hd)",
3148 else Warning(
"StreamObject",
"No TClass for the type %s is available, the object was not read.", typeinfo.name());
3158 else Warning(
"StreamObject",
"No TClass for the type %s is available, the object was not read.", className);
3166 ((
TClass*)cl)->Streamer(obj, *
this, (
TClass*)onFileClass );
3219 Warning(
"CheckObject",
"reference to unavailable class %s,"
3220 " pointers of this type will be 0", cl->
GetName());
3222 Warning(
"CheckObject",
"reference to an unavailable class,"
3223 " pointers of that type will be 0");
3228 }
else if (cli == -1) {
3249 Warning(
"CheckObject",
"reference to object of unavailable class %s, offset=%d"
3250 " pointer will be 0", cl ? cl->
GetName() :
"TObject",
offset);
3256 }
else if (cli == -1) {
3276 if (max == 0)
return 0;
3293 if (max == 0)
return;
3316 while (nr < max-1) {
3336 WriteBuf(s, (strlen(s)+1)*
sizeof(
char));
3396 Error(
"ReadClassBuffer",
3397 "Could not find the right streamer info to convert %s version %d into a %s, object skipped at offset %d",
3411 auto ninfos = infos->
GetSize();
3412 if (version < -1 || version >= ninfos) {
3413 Error(
"ReadClassBuffer",
"class: %s, attempting to access a wrong version: %d, object skipped at offset %d",
3419 if (sinfo ==
nullptr) {
3428 if (sinfo ==
nullptr) {
3430 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3434 const_cast<TClass*
>(cl)->RegisterStreamerInfo(sinfo);
3435 if (
gDebug > 0)
Info(
"ReadClassBuffer",
"Creating StreamerInfo for class: %s, version: %d", cl->
GetName(), version);
3437 }
else if (version==0) {
3444 Error(
"ReadClassBuffer",
"Could not find the StreamerInfo for version %d of the class %s, object skipped at offset %d",
3456 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3505 Error(
"ReadClassBuffer",
3506 "Could not find the right streamer info to convert %s version %d into a %s, object skipped at offset %d",
3529 if (version < -1 || version >= infocapacity) {
3530 Error(
"ReadClassBuffer",
"class: %s, attempting to access a wrong version: %d, object skipped at offset %d",
3542 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3552 if (sinfo ==
nullptr) {
3565 auto ninfos = infos->
GetSize();
3566 if (!(version < -1 || version >= ninfos)) {
3570 const_cast<TClass *
>(cl)->BuildRealData(pointer);
3573 const_cast<TClass *
>(cl)->RegisterStreamerInfo(sinfo);
3575 Info(
"ReadClassBuffer",
"Creating StreamerInfo for class: %s, version: %d",
3579 sinfo->
Clear(
"build");
3585 }
else if (version==0) {
3592 Error(
"ReadClassBuffer",
"Could not find the StreamerInfo for version %d of the class %s, object skipped at offset %d",
3603 if (sinfo->TStreamerInfo::IsRecovered()) R__c=0;
3608 if (
gDebug > 2)
Info(
"ReadClassBuffer",
"For class: %s has read %d bytes", cl->
GetName(), R__c);
3624 if (sinfo ==
nullptr) {
3628 if (sinfo ==
nullptr)
3630 if (sinfo ==
nullptr) {
3631 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3633 const_cast<TClass*
>(cl)->SetCurrentStreamerInfo(sinfo);
3634 const_cast<TClass*
>(cl)->RegisterStreamerInfo(sinfo);
3642 const_cast<TClass*
>(cl)->BuildRealData(pointer);
3669 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3670 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3673 (*iter).PrintDebug(*
this,obj);
3679 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3680 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3698 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3699 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3702 if (!start_collection || start_collection == end_collection)
3703 (*iter).PrintDebug(*
this,
nullptr);
3705 (*iter).PrintDebug(*
this, *(
char**)start_collection);
3706 (*iter)(*
this, start_collection, end_collection);
3711 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3712 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3715 (*iter)(*
this,start_collection,end_collection);
3733 void *arr0 = start_collection ? loopconfig->
GetFirstAddress(start_collection,end_collection) : 0;
3735 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3736 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3739 (*iter).PrintDebug(*
this,arr0);
3740 (*iter)(*
this,start_collection,end_collection,loopconfig);
3745 TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
3746 for(TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin();
3749 (*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
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 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 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 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.
bool ShouldNotReadCollection(Int_t lengthInBytes, Int_t nElements=1) const
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.
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.
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.
static ULong_t Void_Hash(const void *ptr)
Return hash value for provided object.
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()
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.
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
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.
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
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.
TObject()
TObject constructor.
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.