Logo ROOT   master
Reference Guide
TBufferFile.h
Go to the documentation of this file.
1 // @(#)root/io:$Id: 697641b2b52ed3d97bb5bde0fb5d2ff4a2f6c24f $
2 // Author: Rene Brun 17/01/2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TBufferFile
13 #define ROOT_TBufferFile
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TBufferFile //
19 // //
20 // The concrete implementation of TBuffer for writing/reading to/from a //
21 // ROOT file or socket. //
22 // //
23 //////////////////////////////////////////////////////////////////////////
24 
25 #include "TBufferIO.h"
26 #include "Bytes.h"
27 
28 #include <vector>
29 
30 #ifdef R__OLDHPACC
31 namespace std {
32  using ::string;
33  using ::vector;
34 }
35 #endif
36 
38 class TStreamerInfo;
39 class TStreamerElement;
40 class TClass;
41 class TVirtualArray;
42 namespace TStreamerInfoActions {
43  class TActionSequence;
44 }
45 
46 class TBufferFile : public TBufferIO {
47 
48 protected:
49  typedef std::vector<TStreamerInfo*> InfoList_t;
50 
51  TStreamerInfo *fInfo{nullptr}; ///< Pointer to TStreamerInfo object writing/reading the buffer
52  InfoList_t fInfoStack; ///< Stack of pointers to the TStreamerInfos
53 
54  // Default ctor
55  TBufferFile() {} // NOLINT: not allowed to use = default because of TObject::kIsOnHeap detection, see ROOT-10300
56 
57  // TBuffer objects cannot be copied or assigned
58  TBufferFile(const TBufferFile &) = delete; ///< not implemented
59  void operator=(const TBufferFile &) = delete; ///< not implemented
60 
61  Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss, const char* classname);
62  void CheckCount(UInt_t offset) override;
63  UInt_t CheckObject(UInt_t offset, const TClass *cl, Bool_t readClass = kFALSE);
64 
65  void WriteObjectClass(const void *actualObjStart, const TClass *actualClass, Bool_t cacheReuse) override;
66 
67 public:
68  enum { kStreamedMemberWise = BIT(14) }; //added to version number to know if a collection has been stored member-wise
69 
71  TBufferFile(TBuffer::EMode mode, Int_t bufsiz);
72  TBufferFile(TBuffer::EMode mode, Int_t bufsiz, void *buf, Bool_t adopt = kTRUE, ReAllocCharFun_t reallocfunc = nullptr);
73  virtual ~TBufferFile();
74 
75  Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss) override;
76  Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const char *classname) override;
77  void SetByteCount(UInt_t cntpos, Bool_t packInVersion = kFALSE) override;
78 
79  void SkipVersion(const TClass *cl = nullptr) override;
80  Version_t ReadVersion(UInt_t *start = nullptr, UInt_t *bcnt = nullptr, const TClass *cl = nullptr) override;
81  Version_t ReadVersionNoCheckSum(UInt_t *start = nullptr, UInt_t *bcnt = nullptr) override;
82  Version_t ReadVersionForMemberWise(const TClass *cl = nullptr) override;
83  UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt = kFALSE) override;
84  UInt_t WriteVersionMemberWise(const TClass *cl, Bool_t useBcnt = kFALSE) override;
85 
86  void *ReadObjectAny(const TClass* cast) override;
87  void SkipObjectAny() override;
88 
89  void IncrementLevel(TVirtualStreamerInfo* info) override;
91  void DecrementLevel(TVirtualStreamerInfo*) override;
93  void ClassBegin(const TClass*, Version_t = -1) override {}
94  void ClassEnd(const TClass*) override {}
95  void ClassMember(const char*, const char* = 0, Int_t = -1, Int_t = -1) override {}
96 
97  Int_t ReadBuf(void *buf, Int_t max) override;
98  void WriteBuf(const void *buf, Int_t max) override;
99 
100  char *ReadString(char *s, Int_t max) override;
101  void WriteString(const char *s) override;
102 
103  TClass *ReadClass(const TClass *cl = nullptr, UInt_t *objTag = nullptr) override;
104  void WriteClass(const TClass *cl) override;
105 
106  TObject *ReadObject(const TClass *cl) override;
107 
109 
110  // basic types and arrays of basic types
111  void ReadFloat16 (Float_t *f, TStreamerElement *ele = nullptr) override;
112  void WriteFloat16(Float_t *f, TStreamerElement *ele = nullptr) override;
113  void ReadDouble32 (Double_t *d, TStreamerElement *ele = nullptr) override;
114  void WriteDouble32(Double_t *d, TStreamerElement *ele = nullptr) override;
115  void ReadWithFactor(Float_t *ptr, Double_t factor, Double_t minvalue) override;
116  void ReadWithNbits(Float_t *ptr, Int_t nbits) override;
117  void ReadWithFactor(Double_t *ptr, Double_t factor, Double_t minvalue) override;
118  void ReadWithNbits(Double_t *ptr, Int_t nbits) override;
119 
120  Int_t ReadArray(Bool_t *&b) override;
121  Int_t ReadArray(Char_t *&c) override;
122  Int_t ReadArray(UChar_t *&c) override;
123  Int_t ReadArray(Short_t *&h) override;
124  Int_t ReadArray(UShort_t *&h) override;
125  Int_t ReadArray(Int_t *&i) override;
126  Int_t ReadArray(UInt_t *&i) override;
127  Int_t ReadArray(Long_t *&l) override;
128  Int_t ReadArray(ULong_t *&l) override;
129  Int_t ReadArray(Long64_t *&l) override;
130  Int_t ReadArray(ULong64_t *&l) override;
131  Int_t ReadArray(Float_t *&f) override;
132  Int_t ReadArray(Double_t *&d) override;
133  Int_t ReadArrayFloat16(Float_t *&f, TStreamerElement *ele = nullptr) override;
134  Int_t ReadArrayDouble32(Double_t *&d, TStreamerElement *ele = nullptr) override;
135 
136  Int_t ReadStaticArray(Bool_t *b) override;
137  Int_t ReadStaticArray(Char_t *c) override;
138  Int_t ReadStaticArray(UChar_t *c) override;
139  Int_t ReadStaticArray(Short_t *h) override;
140  Int_t ReadStaticArray(UShort_t *h) override;
141  Int_t ReadStaticArray(Int_t *i) override;
142  Int_t ReadStaticArray(UInt_t *i) override;
143  Int_t ReadStaticArray(Long_t *l) override;
144  Int_t ReadStaticArray(ULong_t *l) override;
145  Int_t ReadStaticArray(Long64_t *l) override;
146  Int_t ReadStaticArray(ULong64_t *l) override;
147  Int_t ReadStaticArray(Float_t *f) override;
148  Int_t ReadStaticArray(Double_t *d) override;
149  Int_t ReadStaticArrayFloat16(Float_t *f, TStreamerElement *ele = nullptr) override;
150  Int_t ReadStaticArrayDouble32(Double_t *d, TStreamerElement *ele = nullptr) override;
151 
152  void ReadFastArray(Bool_t *b, Int_t n) override;
153  void ReadFastArray(Char_t *c, Int_t n) override;
154  void ReadFastArrayString(Char_t *c, Int_t n) override;
155  void ReadFastArray(UChar_t *c, Int_t n) override;
156  void ReadFastArray(Short_t *h, Int_t n) override;
157  void ReadFastArray(UShort_t *h, Int_t n) override;
158  void ReadFastArray(Int_t *i, Int_t n) override;
159  void ReadFastArray(UInt_t *i, Int_t n) override;
160  void ReadFastArray(Long_t *l, Int_t n) override;
161  void ReadFastArray(ULong_t *l, Int_t n) override;
162  void ReadFastArray(Long64_t *l, Int_t n) override;
163  void ReadFastArray(ULong64_t *l, Int_t n) override;
164  void ReadFastArray(Float_t *f, Int_t n) override;
165  void ReadFastArray(Double_t *d, Int_t n) override;
166  void ReadFastArrayFloat16(Float_t *f, Int_t n, TStreamerElement *ele = nullptr) override;
167  void ReadFastArrayDouble32(Double_t *d, Int_t n, TStreamerElement *ele = nullptr) override;
168  void ReadFastArrayWithFactor(Float_t *ptr, Int_t n, Double_t factor, Double_t minvalue) override;
169  void ReadFastArrayWithNbits(Float_t *ptr, Int_t n, Int_t nbits) override;
170  void ReadFastArrayWithFactor(Double_t *ptr, Int_t n, Double_t factor, Double_t minvalue) override;
171  void ReadFastArrayWithNbits(Double_t *ptr, Int_t n, Int_t nbits) override;
172  void ReadFastArray(void *start , const TClass *cl, Int_t n=1, TMemberStreamer *s = nullptr, const TClass* onFileClass = nullptr) override;
173  void ReadFastArray(void **startp, const TClass *cl, Int_t n=1, Bool_t isPreAlloc=kFALSE, TMemberStreamer *s = nullptr, const TClass* onFileClass = nullptr) override;
174 
175  void WriteArray(const Bool_t *b, Int_t n) override;
176  void WriteArray(const Char_t *c, Int_t n) override;
177  void WriteArray(const UChar_t *c, Int_t n) override;
178  void WriteArray(const Short_t *h, Int_t n) override;
179  void WriteArray(const UShort_t *h, Int_t n) override;
180  void WriteArray(const Int_t *i, Int_t n) override;
181  void WriteArray(const UInt_t *i, Int_t n) override;
182  void WriteArray(const Long_t *l, Int_t n) override;
183  void WriteArray(const ULong_t *l, Int_t n) override;
184  void WriteArray(const Long64_t *l, Int_t n) override;
185  void WriteArray(const ULong64_t *l, Int_t n) override;
186  void WriteArray(const Float_t *f, Int_t n) override;
187  void WriteArray(const Double_t *d, Int_t n) override;
188  void WriteArrayFloat16(const Float_t *f, Int_t n, TStreamerElement *ele = nullptr) override;
189  void WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElement *ele = nullptr) override;
190 
191  void WriteFastArray(const Bool_t *b, Int_t n) override;
192  void WriteFastArray(const Char_t *c, Int_t n) override;
193  void WriteFastArrayString(const Char_t *c, Int_t n) override;
194  void WriteFastArray(const UChar_t *c, Int_t n) override;
195  void WriteFastArray(const Short_t *h, Int_t n) override;
196  void WriteFastArray(const UShort_t *h, Int_t n) override;
197  void WriteFastArray(const Int_t *i, Int_t n) override;
198  void WriteFastArray(const UInt_t *i, Int_t n) override;
199  void WriteFastArray(const Long_t *l, Int_t n) override;
200  void WriteFastArray(const ULong_t *l, Int_t n) override;
201  void WriteFastArray(const Long64_t *l, Int_t n) override;
202  void WriteFastArray(const ULong64_t *l, Int_t n) override;
203  void WriteFastArray(const Float_t *f, Int_t n) override;
204  void WriteFastArray(const Double_t *d, Int_t n) override;
205  void WriteFastArrayFloat16(const Float_t *f, Int_t n, TStreamerElement *ele = nullptr) override;
206  void WriteFastArrayDouble32(const Double_t *d, Int_t n, TStreamerElement *ele = nullptr) override;
207  void WriteFastArray(void *start, const TClass *cl, Int_t n=1, TMemberStreamer *s = nullptr) override;
208  Int_t WriteFastArray(void **startp, const TClass *cl, Int_t n=1, Bool_t isPreAlloc=kFALSE, TMemberStreamer *s = nullptr) override;
209 
210  void StreamObject(void *obj, const std::type_info &typeinfo, const TClass* onFileClass = nullptr) override;
211  void StreamObject(void *obj, const char *className, const TClass* onFileClass = nullptr) override;
212  void StreamObject(void *obj, const TClass *cl, const TClass* onFileClass = nullptr) override;
213  void StreamObject(TObject *obj) override;
214 
215  void ReadBool(Bool_t &b) override;
216  void ReadChar(Char_t &c) override;
217  void ReadUChar(UChar_t &c) override;
218  void ReadShort(Short_t &s) override;
219  void ReadUShort(UShort_t &s) override;
220  void ReadInt(Int_t &i) override;
221  void ReadUInt(UInt_t &i) override;
222  void ReadLong(Long_t &l) override;
223  void ReadULong(ULong_t &l) override;
224  void ReadLong64(Long64_t &l) override;
225  void ReadULong64(ULong64_t &l) override;
226  void ReadFloat(Float_t &f) override;
227  void ReadDouble(Double_t &d) override;
228  void ReadCharP(Char_t *c) override;
229  void ReadTString(TString &s) override;
230  void ReadStdString(std::string *s) override;
232  void ReadCharStar(char* &s) override;
233 
234  void WriteBool(Bool_t b) override;
235  void WriteChar(Char_t c) override;
236  void WriteUChar(UChar_t c) override;
237  void WriteShort(Short_t s) override;
238  void WriteUShort(UShort_t s) override;
239  void WriteInt(Int_t i) override;
240  void WriteUInt(UInt_t i) override;
241  void WriteLong(Long_t l) override;
242  void WriteULong(ULong_t l) override;
243  void WriteLong64(Long64_t l) override;
244  void WriteULong64(ULong64_t l) override;
245  void WriteFloat(Float_t f) override;
246  void WriteDouble(Double_t d) override;
247  void WriteCharP(const Char_t *c) override;
248  void WriteTString(const TString &s) override;
250  void WriteStdString(const std::string *s) override;
251  void WriteCharStar(char *s) override;
252 
253  // Utilities for TClass
254  Int_t ReadClassEmulated(const TClass *cl, void *object, const TClass *onfile_class) override;
255  Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class) override;
256  Int_t ReadClassBuffer(const TClass *cl, void *pointer, Int_t version, UInt_t start, UInt_t count, const TClass *onfile_class) override;
257  Int_t WriteClassBuffer(const TClass *cl, void *pointer) override;
258 
259  // Utilities to streamer using sequences.
260  Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *object) override;
261  Int_t ApplySequenceVecPtr(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection) override;
262  Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection) override;
263 
264  ClassDefOverride(TBufferFile,0) //concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket.
265 };
266 
267 
268 //---------------------- TBufferFile inlines ---------------------------------------
269 
270 //______________________________________________________________________________
272 {
273  if (fBufCur + sizeof(UChar_t) > fBufMax) AutoExpand(fBufSize+sizeof(UChar_t));
274  tobuf(fBufCur, b);
275 }
276 
277 //______________________________________________________________________________
279 {
280  if (fBufCur + sizeof(Char_t) > fBufMax) AutoExpand(fBufSize+sizeof(Char_t));
281  tobuf(fBufCur, c);
282 }
283 
284 //______________________________________________________________________________
286 {
287  if (fBufCur + sizeof(UChar_t) > fBufMax) AutoExpand(fBufSize+sizeof(UChar_t));
288  tobuf(fBufCur, (Char_t)c);
289 }
290 
291 //______________________________________________________________________________
293 {
294  if (fBufCur + sizeof(Short_t) > fBufMax) AutoExpand(fBufSize+sizeof(Short_t));
295  tobuf(fBufCur, h);
296 }
297 
298 //______________________________________________________________________________
300 {
301  if (fBufCur + sizeof(UShort_t) > fBufMax) AutoExpand(fBufSize+sizeof(UShort_t));
302  tobuf(fBufCur, (Short_t)h);
303 }
304 
305 //______________________________________________________________________________
307 {
308  if (fBufCur + sizeof(Int_t) > fBufMax) AutoExpand(fBufSize+sizeof(Int_t));
309  tobuf(fBufCur, i);
310 }
311 
312 //______________________________________________________________________________
314 {
315  if (fBufCur + sizeof(UInt_t) > fBufMax) AutoExpand(fBufSize+sizeof(UInt_t));
316  tobuf(fBufCur, (Int_t)i);
317 }
318 
319 //______________________________________________________________________________
321 {
322  if (fBufCur + sizeof(Long_t) > fBufMax) AutoExpand(fBufSize+sizeof(Long_t));
323  tobuf(fBufCur, l);
324 }
325 
326 //______________________________________________________________________________
328 {
329  if (fBufCur + sizeof(ULong_t) > fBufMax) AutoExpand(fBufSize+sizeof(ULong_t));
330  tobuf(fBufCur, (Long_t)l);
331 }
332 
333 //______________________________________________________________________________
335 {
336  if (fBufCur + sizeof(Long64_t) > fBufMax) AutoExpand(fBufSize+sizeof(Long64_t));
337  tobuf(fBufCur, ll);
338 }
339 
340 //______________________________________________________________________________
342 {
343  if (fBufCur + sizeof(ULong64_t) > fBufMax) AutoExpand(fBufSize+sizeof(ULong64_t));
344  tobuf(fBufCur, (Long64_t)ll);
345 }
346 
347 //______________________________________________________________________________
349 {
350  if (fBufCur + sizeof(Float_t) > fBufMax) AutoExpand(fBufSize+sizeof(Float_t));
351  tobuf(fBufCur, f);
352 }
353 
354 //______________________________________________________________________________
356 {
357  if (fBufCur + sizeof(Double_t) > fBufMax) AutoExpand(fBufSize+sizeof(Double_t));
358  tobuf(fBufCur, d);
359 }
360 
361 //______________________________________________________________________________
362 inline void TBufferFile::WriteCharP(const Char_t *c)
363 {
364  WriteString(c);
365 }
366 
367 //______________________________________________________________________________
369 {
370  frombuf(fBufCur, &b);
371 }
372 
373 //______________________________________________________________________________
375 {
376  frombuf(fBufCur, &c);
377 }
378 
379 //______________________________________________________________________________
381 {
383 }
384 
385 //______________________________________________________________________________
387 {
388  frombuf(fBufCur, &h);
389 }
390 
391 //______________________________________________________________________________
393 {
395 }
396 
397 //______________________________________________________________________________
399 {
400  frombuf(fBufCur, &i);
401 }
402 
403 //______________________________________________________________________________
405 {
407 }
408 
409 
410 // in implementation file because special case with old version
411 //______________________________________________________________________________
412 //inline void TBufferFile::ReadLong(Long_t &ll)
413 //{
414 // frombuf(fBufCur, &ll);
415 //}
416 
417 //______________________________________________________________________________
419 {
421 }
422 
423 
424 //______________________________________________________________________________
426 {
427  frombuf(fBufCur, &ll);
428 }
429 
430 //______________________________________________________________________________
432 {
434 }
435 
436 //______________________________________________________________________________
438 {
439  frombuf(fBufCur, &f);
440 }
441 
442 //______________________________________________________________________________
444 {
445  frombuf(fBufCur, &d);
446 }
447 
448 //______________________________________________________________________________
450 {
451  ReadString(c, -1);
452 }
453 
454 //______________________________________________________________________________
456  { return TBufferFile::ReadArray((Char_t *&)c); }
457 //______________________________________________________________________________
459  { return TBufferFile::ReadArray((Short_t *&)h); }
460 //______________________________________________________________________________
462  { return TBufferFile::ReadArray((Int_t *&)i); }
463 //______________________________________________________________________________
465  { return TBufferFile::ReadArray((Long_t *&)l); }
466 //______________________________________________________________________________
468  { return TBufferFile::ReadArray((Long64_t *&)ll); }
469 
470 //______________________________________________________________________________
472  { return TBufferFile::ReadStaticArray((Char_t *)c); }
473 //______________________________________________________________________________
475  { return TBufferFile::ReadStaticArray((Short_t *)h); }
476 //______________________________________________________________________________
478  { return TBufferFile::ReadStaticArray((Int_t *)i); }
479 //______________________________________________________________________________
481  { return TBufferFile::ReadStaticArray((Long_t *)l); }
482 //______________________________________________________________________________
484  { return TBufferFile::ReadStaticArray((Long64_t *)ll); }
485 
486 //______________________________________________________________________________
489 //______________________________________________________________________________
492 //______________________________________________________________________________
495 //______________________________________________________________________________
498 //______________________________________________________________________________
501 
502 //______________________________________________________________________________
504  { TBufferFile::WriteArray((const Char_t *)c, n); }
505 //______________________________________________________________________________
507  { TBufferFile::WriteArray((const Short_t *)h, n); }
508 //______________________________________________________________________________
509 inline void TBufferFile::WriteArray(const UInt_t *i, Int_t n)
510  { TBufferFile::WriteArray((const Int_t *)i, n); }
511 //______________________________________________________________________________
512 inline void TBufferFile::WriteArray(const ULong64_t *ll, Int_t n)
513  { TBufferFile::WriteArray((const Long64_t *)ll, n); }
514 
515 //______________________________________________________________________________
517  { TBufferFile::WriteFastArray((const Char_t *)c, n); }
518 //______________________________________________________________________________
520  { TBufferFile::WriteFastArray((const Short_t *)h, n); }
521 //______________________________________________________________________________
523  { TBufferFile::WriteFastArray((const Int_t *)i, n); }
524 //______________________________________________________________________________
526  { TBufferFile::WriteFastArray((const Long64_t *)ll, n); }
527 
528 #endif
void ReadULong64(ULong64_t &l) override
Definition: TBufferFile.h:431
Describe Streamer information for one class version
Definition: TStreamerInfo.h:43
void DecrementLevel(TVirtualStreamerInfo *) override
Decrement level.
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 SetStreamerElementNumber(TStreamerElement *, Int_t) override
Definition: TBufferFile.h:90
virtual ~TBufferFile()
Delete an I/O buffer object.
void frombuf(char *&buf, Bool_t *x)
Definition: Bytes.h:280
void ReadBool(Bool_t &b) override
Definition: TBufferFile.h:368
The concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket...
Definition: TBufferFile.h:46
long long Long64_t
Definition: RtypesCore.h:69
void ClassMember(const char *, const char *=0, Int_t=-1, Int_t=-1) override
Definition: TBufferFile.h:95
void WriteFastArrayDouble32(const Double_t *d, Int_t n, TStreamerElement *ele=nullptr) override
Write array of n doubles (as float) into the I/O buffer.
short Version_t
Definition: RtypesCore.h:61
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.
float Float_t
Definition: RtypesCore.h:53
Int_t ReadStaticArray(Bool_t *b) override
Read array of bools from the I/O buffer.
void ReadShort(Short_t &s) override
Definition: TBufferFile.h:386
unsigned short UShort_t
Definition: RtypesCore.h:36
#define BIT(n)
Definition: Rtypes.h:83
void CheckCount(UInt_t offset) override
Check if offset is not too large (< kMaxMapCount) when writing.
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.
void WriteChar(Char_t c) override
Definition: TBufferFile.h:278
void WriteBuf(const void *buf, Int_t max) override
Write max bytes from buf into the I/O buffer.
void ReadTString(TString &s) override
Read TString from TBuffer.
char *(* ReAllocCharFun_t)(char *, size_t, size_t)
Definition: TStorage.h:30
void operator=(const TBufferFile &)=delete
not implemented
Basic string class.
Definition: TString.h:131
#define f(i)
Definition: RSha256.hxx:104
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
std::vector< TStreamerInfo * > InfoList_t
Definition: TBufferFile.h:49
void ReadUShort(UShort_t &s) override
Definition: TBufferFile.h:392
Int_t WriteClassBuffer(const TClass *cl, void *pointer) override
Function called by the Streamer functions to serialize object at p to buffer b.
void WriteUChar(UChar_t c) override
Definition: TBufferFile.h:285
UInt_t CheckObject(UInt_t offset, const TClass *cl, Bool_t readClass=kFALSE)
Check for object in the read map.
STL namespace.
Int_t ReadArrayDouble32(Double_t *&d, TStreamerElement *ele=nullptr) override
Read array of doubles (written as float) from the I/O buffer.
void WriteFastArray(const Bool_t *b, Int_t n) override
Write array of n bools into the I/O buffer.
void WriteDouble(Double_t d) override
Definition: TBufferFile.h:355
TClass * ReadClass(const TClass *cl=nullptr, UInt_t *objTag=nullptr) override
Read class definition from I/O buffer.
void WriteBool(Bool_t b) override
Definition: TBufferFile.h:271
void WriteTString(const TString &s) override
Write TString to TBuffer.
Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss, const char *classname)
Check byte count with current buffer position.
void ReadInt(Int_t &i) override
Definition: TBufferFile.h:398
void ReadChar(Char_t &c) override
Definition: TBufferFile.h:374
Int_t ReadArrayFloat16(Float_t *&f, TStreamerElement *ele=nullptr) override
Read array of floats (written as truncated float) from the I/O buffer.
void WriteLong64(Long64_t l) override
Definition: TBufferFile.h:334
char * ReadString(char *s, Int_t max) override
Read string from I/O buffer.
void StreamObject(void *obj, const std::type_info &typeinfo, const TClass *onFileClass=nullptr) override
Stream an object given its C++ typeinfo information.
void WriteCharP(const Char_t *c) override
Definition: TBufferFile.h:362
void WriteArray(const Bool_t *b, Int_t n) override
Write array of n bools into the I/O buffer.
void WriteDouble32(Double_t *d, TStreamerElement *ele=nullptr) override
Write a Double32_t to the buffer.
virtual void ReadStdString(std::string *s)=0
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.
void IncrementLevel(TVirtualStreamerInfo *info) override
Increment level.
void tobuf(char *&buf, Bool_t x)
Definition: Bytes.h:57
static constexpr double s
void WriteObjectClass(const void *actualObjStart, const TClass *actualClass, Bool_t cacheReuse) override
Write object to I/O buffer.
void WriteClass(const TClass *cl) override
Write class description to I/O buffer.
void WriteCharStar(char *s) override
Write char* into TBuffer.
Int_t ReadBuf(void *buf, Int_t max) override
Read max bytes from the I/O buffer into buf.
void WriteInt(Int_t i) override
Definition: TBufferFile.h:306
void WriteFastArrayString(const Char_t *c, Int_t n) override
Write array of n characters into the 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/...
TStreamerInfo * fInfo
Pointer to TStreamerInfo object writing/reading the buffer.
Definition: TBufferFile.h:51
void WriteFloat(Float_t f) override
Definition: TBufferFile.h:348
Int_t ReadStaticArrayFloat16(Float_t *f, TStreamerElement *ele=nullptr) override
Read array of floats (written as truncated float) from the I/O buffer.
void WriteStdString(const std::string *s) override
Write std::string to TBuffer.
void * ReadObjectAny(const TClass *cast) override
Read object from I/O buffer.
void SkipVersion(const TClass *cl=nullptr) override
Skip class version from I/O buffer.
Wrapper around an object and giving indirect access to its content even if the object is not of a cl...
Definition: TVirtualArray.h:26
void ReadULong(ULong_t &l) override
Definition: TBufferFile.h:418
void ReadDouble(Double_t &d) override
Definition: TBufferFile.h:443
Version_t ReadVersionForMemberWise(const TClass *cl=nullptr) override
Read class version from I/O buffer.
void WriteULong(ULong_t l) override
Definition: TBufferFile.h:327
unsigned int UInt_t
Definition: RtypesCore.h:42
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.
short Short_t
Definition: RtypesCore.h:35
void SetByteCount(UInt_t cntpos, Bool_t packInVersion=kFALSE) override
Set byte count at position cntpos in the buffer.
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:75
void WriteLong(Long_t l) override
Definition: TBufferFile.h:320
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.
Int_t ReadStaticArrayDouble32(Double_t *d, TStreamerElement *ele=nullptr) override
Read array of doubles (written as float) from the I/O buffer.
void WriteFastArrayFloat16(const Float_t *f, Int_t n, TStreamerElement *ele=nullptr) override
Write array of n floats (as truncated float) into the I/O buffer.
char * fBufCur
Definition: TBuffer.h:51
void ReadCharP(Char_t *c) override
Definition: TBufferFile.h:449
void ReadFastArray(Bool_t *b, Int_t n) override
Read array of n bools from the I/O buffer.
#define h(i)
Definition: RSha256.hxx:106
const Bool_t kFALSE
Definition: RtypesCore.h:88
void ClassEnd(const TClass *) override
Definition: TBufferFile.h:94
void WriteFloat16(Float_t *f, TStreamerElement *ele=nullptr) override
Write a Float16_t to the buffer.
void WriteUShort(UShort_t s) override
Definition: TBufferFile.h:299
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.
long Long_t
Definition: RtypesCore.h:50
void ReadStdString(std::string *s) override
Read std::string from TBuffer.
#define d(i)
Definition: RSha256.hxx:102
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 ClassBegin(const TClass *, Version_t=-1) override
Definition: TBufferFile.h:93
double Double_t
Definition: RtypesCore.h:55
Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class) override
Deserialize information from a buffer into an object.
void WriteShort(Short_t s) override
Definition: TBufferFile.h:292
unsigned long long ULong64_t
Definition: RtypesCore.h:70
unsigned long ULong_t
Definition: RtypesCore.h:51
void ReadUInt(UInt_t &i) override
Definition: TBufferFile.h:404
TVirtualStreamerInfo * GetInfo() override
Definition: TBufferFile.h:92
void ReadCharStar(char *&s) override
Read char* from TBuffer.
void WriteUInt(UInt_t i) override
Definition: TBufferFile.h:313
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...
Mother of all ROOT objects.
Definition: TObject.h:37
char Char_t
Definition: RtypesCore.h:29
Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr) override
Read class version from I/O buffer.
void WriteString(const char *s) override
Write string to I/O buffer.
auto * l
Definition: textangle.C:4
Direct subclass of TBuffer, implements common methods for TBufferFile and TBufferText classes...
Definition: TBufferIO.h:30
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Definition: TRolke.cxx:630
void ReadFastArrayString(Char_t *c, Int_t n) override
Read array of n characters from the I/O buffer.
Int_t fBufSize
Definition: TBuffer.h:49
Bool_t CheckObject(const TObject *obj) override
Check if the specified object is already in the buffer.
Definition: TBufferIO.cxx:225
InfoList_t fInfoStack
Stack of pointers to the TStreamerInfos.
Definition: TBufferFile.h:52
#define c(i)
Definition: RSha256.hxx:101
#define ClassDefOverride(name, id)
Definition: Rtypes.h:330
unsigned char UChar_t
Definition: RtypesCore.h:34
void ReadLong64(Long64_t &l) override
Definition: TBufferFile.h:425
void WriteULong64(ULong64_t l) override
Definition: TBufferFile.h:341
void ReadUChar(UChar_t &c) override
Definition: TBufferFile.h:380
UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE) override
Write class version to I/O buffer.
Abstract Interface class describing Streamer information for one class.
virtual void WriteStdString(const std::string *s)=0
const Bool_t kTRUE
Definition: RtypesCore.h:87
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 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...
const Int_t n
Definition: legend1.C:16
void SkipObjectAny() override
Skip any kind of object from buffer.
char * fBufMax
Definition: TBuffer.h:52
void ReadLong(Long_t &l) override
Read Long from TBuffer.
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...
TObject * ReadObject(const TClass *cl) override
Read object from I/O buffer.
void AutoExpand(Int_t size_needed)
Automatically calculate a new size and expand the buffer to fit at least size_needed.
Definition: TBuffer.cxx:158
Int_t ReadArray(Bool_t *&b) override
Read array of bools from the I/O buffer.
Int_t ReadClassEmulated(const TClass *cl, void *object, const TClass *onfile_class) override
Read emulated class.
Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *object) override
Read one collection of objects from the buffer using the StreamerInfoLoopAction.
void ReadFloat(Float_t &f) override
Definition: TBufferFile.h:437