76      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
 
   77      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin(); iter != end;
 
   81         (*iter).PrintDebug(*
this, obj);
 
   86      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
 
   87      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin(); iter != end;
 
  103                                       void *end_collection)
 
  110      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
 
  111      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin(); iter != end;
 
  116            *
this, *(
char **)start_collection); 
 
  117         (*iter)(*
this, start_collection, end_collection);
 
  121      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
 
  122      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin(); iter != end;
 
  126         (*iter)(*
this, start_collection, end_collection);
 
  137                                 void *end_collection)
 
  148      void *arr0 = loopconfig->
GetFirstAddress(start_collection, end_collection);
 
  150      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
 
  151      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin(); iter != end;
 
  155         (*iter).PrintDebug(*
this, arr0);
 
  156         (*iter)(*
this, start_collection, end_collection, loopconfig);
 
  160      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.
fActions.end();
 
  161      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.
fActions.begin(); iter != end;
 
  165         (*iter)(*
this, start_collection, end_collection, loopconfig);
 
  188         const_cast<TClass *
>(cl)->BuildRealData(pointer);
 
  190         const_cast<TClass *
>(cl)->SetCurrentStreamerInfo(sinfo);
 
  191         const_cast<TClass *
>(cl)->RegisterStreamerInfo(sinfo);
 
  193            Info(
"WriteClassBuffer", 
"Creating StreamerInfo for class: %s, version: %d", cl->
GetName(),
 
  201         const_cast<TClass *
>(cl)->BuildRealData(pointer);
 
  236                                   const TClass *onFileClass)
 
  247         Error(
"ReadClassBuffer",
 
  248               "Could not find the right streamer info to convert %s version %d into a %s, object skipped at offset %d",
 
  262      auto ninfos = infos->
GetSize();
 
  263      if (version < -1 || version >= ninfos) {
 
  264         Error(
"ReadBuffer1", 
"class: %s, attempting to access a wrong version: %d, object skipped at offset %d",
 
  277            const_cast<TClass *
>(cl)->BuildRealData(pointer);
 
  281            const_cast<TClass *
>(cl)->RegisterStreamerInfo(sinfo);
 
  283               Info(
"ReadClassBuffer", 
"Creating StreamerInfo for class: %s, version: %d", cl->
GetName(), version);
 
  285         } 
else if (version == 0) {
 
  292            Error(
"ReadClassBuffer",
 
  293                  "Could not find the StreamerInfo for version %d of the class %s, object skipped at offset %d",
 
  301         const_cast<TClass *
>(cl)->BuildRealData(pointer);
 
  337   if (
file && 
file->GetVersion() < 30000) {
 
  350         Error(
"ReadClassBuffer",
 
  351               "Could not find the right streamer info to convert %s version %d into a %s, object skipped at offset %d",
 
  374               if (version < -1 || version >= infocapacity) {
 
  375                  Error(
"ReadClassBuffer",
 
  376                        "class: %s, attempting to access a wrong version: %d, object skipped at offset %d",
 
  387                     const_cast<TClass *
>(cl)->BuildRealData(pointer);
 
  411               auto ninfos = infos->
GetSize();
 
  412               if (!(version < -1 || version >= ninfos)) {
 
  416                  const_cast<TClass *
>(cl)->BuildRealData(pointer);
 
  419                  const_cast<TClass *
>(cl)->RegisterStreamerInfo(sinfo);
 
  421                     Info(
"ReadClassBuffer", 
"Creating StreamerInfo for class: %s, version: %d", cl->
GetName(),
 
  425                     sinfo->
Clear(
"build");      
 
  431            } 
else if (version == 0) {
 
  438               Error(
"ReadClassBuffer",
 
  439                     "Could not find the StreamerInfo for version %d of the class %s, object skipped at offset %d",
 
  450   if (sinfo->TStreamerInfo::IsRecovered())
 
  457      Info(
"ReadClassBuffer", 
"for class: %s has read %d bytes", cl->
GetName(), R__c);
 
  706   char *pnt = 
nullptr, *
exp = 
nullptr, *lastdecimal = 
nullptr, *
s = sbuf;
 
  707   bool negative_exp = 
false;
 
  709   while (*
s && --len) {
 
  711      case '.': pnt = 
s; 
break;
 
  713      case 'e': 
exp = 
s; 
break;
 
  720         if ((*
s < 
'0') || (*
s > 
'9'))
 
  723            power = power * 10 + (*
s - 
'0');
 
  724         else if (pnt && *
s != 
'0')
 
  737            *(lastdecimal + 1) = 0;
 
  741   } 
else if (power == 0) {
 
  743         *(lastdecimal + 1) = 0;
 
  746   } 
else if (!negative_exp && pnt && 
exp && (
exp - pnt > power)) {
 
  754      if (lastdecimal && (pnt < lastdecimal))
 
  755         *(lastdecimal + 1) = 0;
 
  758   } 
else if (negative_exp && pnt && 
exp && (power < (
s - 
exp))) {
 
  762      *(lastdecimal + 1) = 0;
 
  766      for (
char *pos = lastdecimal + 1; pos >= pnt; --pos)
 
  767         *(pos + power) = *pos;
 
  772   } 
else if (pnt && 
exp) {
 
  775         pnt = lastdecimal + 1;
 
  780      else if (*
exp == 
'-')
 
  837   } 
else if ((value == std::nearbyint(value)) && (std::abs(value) < 1e15)) {
 
  853   } 
else if ((value == std::nearbyint(value)) && (std::abs(value) < 1e25)) {
 
R__EXTERN TVirtualMutex * gInterpreterMutex
#define R__LOCKGUARD(mutex)
Direct subclass of TBuffer, implements common methods for TBufferFile and TBufferText classes.
virtual void TagStreamerInfo(TVirtualStreamerInfo *info)
Mark the classindex of the current file as using this TStreamerInfo.
Base class for text-based streamers like TBufferJSON or TBufferXML Special actions list will use meth...
virtual Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *object)
Read one collection of objects from the buffer using the StreamerInfoLoopAction.
static const char * ConvertFloat(Float_t v, char *buf, unsigned len, Bool_t not_optimize=kFALSE)
convert float to string with configured format
static const char * GetFloatFormat()
return current printf format for float members, default "%e"
virtual void StreamObject(void *obj, const std::type_info &typeinfo, const TClass *onFileClass=nullptr)
stream object to/from buffer
virtual ~TBufferText()
destructor
virtual void ReadWithFactor(Float_t *ptr, Double_t factor, Double_t minvalue)
Read a Double32_t from the buffer when the factor and minimun value have been specified see comments ...
virtual void ReadFastArrayDouble32(Double_t *d, Int_t n, TStreamerElement *ele=nullptr)
read array of Double32_t from buffer
TBufferText()
Default constructor.
virtual void WriteFloat16(Float_t *f, TStreamerElement *ele=nullptr)
write a Float16_t to the buffer
virtual Int_t ReadStaticArrayDouble32(Double_t *d, TStreamerElement *ele=nullptr)
Read array of Double32_t from buffer.
static void CompactFloatString(char *buf, unsigned len)
method compress float string, excluding exp and/or move float point
virtual void SetByteCount(UInt_t, Bool_t=kFALSE)
virtual void WriteFastArrayDouble32(const Double_t *d, Int_t n, TStreamerElement *ele=nullptr)
Write array of Double32_t to buffer.
virtual void WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElement *ele=nullptr)
Write array of Double32_t to buffer.
virtual void ReadWithNbits(Float_t *ptr, Int_t nbits)
Read a Float16_t from the buffer when the number of bits is specified (explicitly or not) see comment...
virtual Int_t ApplySequenceVecPtr(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection)
Read one collection of objects from the buffer using the StreamerInfoLoopAction.
static const char * ConvertDouble(Double_t v, char *buf, unsigned len, Bool_t not_optimize=kFALSE)
convert float to string with configured format
virtual void WriteDouble32(Double_t *d, TStreamerElement *ele=nullptr)
write a Double32_t to the buffer
virtual Int_t ReadArrayFloat16(Float_t *&f, TStreamerElement *ele=nullptr)
Read array of Float16_t from buffer.
virtual Int_t ReadStaticArrayFloat16(Float_t *f, TStreamerElement *ele=nullptr)
Read array of Float16_t from buffer.
virtual void ReadFastArrayWithNbits(Float_t *ptr, Int_t n, Int_t nbits)
read array of Float16_t from buffer
virtual void ReadFloat16(Float_t *f, TStreamerElement *ele=nullptr)
read a Float16_t from the buffer
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)
Function called by the Streamer functions to serialize object at p to buffer b.
virtual void WriteBaseClass(void *start, TStreamerBase *elem)
Write data of base class.
virtual void SkipVersion(const TClass *cl=nullptr)
Skip class version from I/O buffer.
virtual void WriteArrayFloat16(const Float_t *f, Int_t n, TStreamerElement *ele=nullptr)
Write array of Float16_t to buffer.
virtual void ReadFastArrayFloat16(Float_t *f, Int_t n, TStreamerElement *ele=nullptr)
read array of Float16_t from buffer
static const char * fgDoubleFmt
! printf argument for doubles, either "%f" or "%e" or "%10f" and so on
virtual void WriteFastArrayFloat16(const Float_t *d, Int_t n, TStreamerElement *ele=nullptr)
Write array of Float16_t to buffer.
virtual void ReadBaseClass(void *start, TStreamerBase *elem)
Read data of base class.
virtual Int_t ReadClassBuffer(const TClass *, void *, const TClass *=nullptr)
Deserialize information from a buffer into an object.
virtual void ReadDouble32(Double_t *d, TStreamerElement *ele=nullptr)
read a Double32_t from the buffer
static void SetFloatFormat(const char *fmt="%e")
set printf format for float/double members, default "%e" to change format only for doubles,...
virtual Int_t ReadArrayDouble32(Double_t *&d, TStreamerElement *ele=nullptr)
Read array of Double32_t from buffer.
static const char * GetDoubleFormat()
return current printf format for double members, default "%.14e"
virtual Int_t CheckByteCount(UInt_t, UInt_t, const TClass *)
virtual void ReadFastArrayWithFactor(Float_t *ptr, Int_t n, Double_t factor, Double_t minvalue)
read array of Float16_t from buffer
static const char * fgFloatFmt
! printf argument for floats, either "%f" or "%e" or "%10f" and so on
static void SetDoubleFormat(const char *fmt="%.14e")
set printf format for double members, default "%.14e" use it after SetFloatFormat,...
virtual void ReadDouble(Double_t &d)=0
virtual void WriteDouble(Double_t d)=0
void SetParent(TObject *parent)
Set parent owning this buffer.
TObject * GetParent() const
Return pointer to parent of this buffer.
virtual void ReadFloat(Float_t &f)=0
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
@ kCannotHandleMemberWiseStreaming
virtual void SetStreamerElementNumber(TStreamerElement *elem, Int_t comp_type)=0
virtual void WriteArray(const Bool_t *b, Int_t n)=0
virtual Int_t ReadArray(Bool_t *&b)=0
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
virtual void IncrementLevel(TVirtualStreamerInfo *info)=0
virtual void DecrementLevel(TVirtualStreamerInfo *)=0
virtual Int_t ReadStaticArray(Bool_t *b)=0
virtual UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE)=0
virtual void WriteFloat(Float_t f)=0
virtual void WriteFastArray(const Bool_t *b, Int_t n)=0
The ROOT global object gROOT contains a list of all defined classes.
TVirtualStreamerInfo * GetCurrentStreamerInfo()
void SetLastReadInfo(TVirtualStreamerInfo *info)
TVirtualStreamerInfo * GetLastReadInfo() const
const TObjArray * GetStreamerInfos() const
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...
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 ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
virtual const char * GetName() const
Returns name of object.
TObject * UncheckedAt(Int_t i) const
Mother of all ROOT objects.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Int_t WriteBuffer(TBuffer &b, char *pointer)
Write the base class into the buffer.
Int_t ReadBuffer(TBuffer &b, char *pointer)
Read the content of the buffer.
TLoopConfiguration * fLoopConfig
If this is a bundle of memberwise streaming action, this configures the looping.
TVirtualStreamerInfo * fStreamerInfo
StreamerInfo used to derive these actions.
ActionContainer_t fActions
Base class of the Configurations for the member wise looping routines.
virtual void * GetFirstAddress(void *start, const void *end) const =0
Describe Streamer information for one class version.
void SetClassVersion(Int_t vers)
void Clear(Option_t *)
If opt contains 'built', reset this StreamerInfo as if Build or BuildOld was never called on it (usef...
void Build()
Build the I/O data structure for the current class version.
TStreamerInfoActions::TActionSequence * GetReadTextActions()
TStreamerInfoActions::TActionSequence * GetWriteTextActions()
void BuildEmulated(TFile *file)
Create an Emulation TStreamerInfo object.
Int_t GetClassVersion() const
void BuildOld()
rebuild the TStreamerInfo structure
Abstract Interface class describing Streamer information for one class.
Int_t IsRecovered() const
Bool_t IsCompiled() const
static constexpr double s