12 #ifndef ROOT_TBufferIO
13 #define ROOT_TBufferIO
30 class TBufferIO :
public TBuffer {
33 enum { kNullTag = 0 };
37 Int_t fDisplacement{0};
38 UShort_t fPidOffset{0};
39 TExMap *fMap{
nullptr};
40 TExMap *fClassMap{
nullptr};
42 static Int_t fgMapSize;
46 TBufferIO(TBuffer::EMode mode);
47 TBufferIO(TBuffer::EMode mode, Int_t bufsiz);
48 TBufferIO(TBuffer::EMode mode, Int_t bufsiz,
void *buf, Bool_t adopt = kTRUE,
49 ReAllocCharFun_t reallocfunc =
nullptr);
53 static R__ALWAYS_INLINE ULong_t Void_Hash(
const void *ptr) {
return TString::Hash(&ptr,
sizeof(
void *)); }
56 virtual void CheckCount(UInt_t) {}
58 Long64_t GetObjectTag(
const void *obj);
60 virtual void WriteObjectClass(
const void *actualObjStart,
const TClass *actualClass, Bool_t cacheReuse) = 0;
63 enum { kMapSize = 503 };
66 kNotDecompressed = BIT(15),
67 kTextBasedStreaming = BIT(18),
76 Int_t GetVersionOwner()
const override;
79 UShort_t GetPidOffset()
const override {
return fPidOffset; }
80 void SetPidOffset(UShort_t offset)
override;
81 Int_t GetBufferDisplacement()
const override {
return fDisplacement; }
82 void SetBufferDisplacement()
override { fDisplacement = 0; }
83 void SetBufferDisplacement(Int_t skipped)
override { fDisplacement = (Int_t)(Length() - skipped); }
86 void SetReadParam(Int_t mapsize)
override;
87 void SetWriteParam(Int_t mapsize)
override;
88 void InitMap()
override;
89 void ResetMap()
override;
90 void Reset()
override;
91 Int_t GetMapCount()
const override {
return fMapCount; }
92 void MapObject(
const TObject *obj, UInt_t offset = 1)
override;
93 void MapObject(
const void *obj,
const TClass *cl, UInt_t offset = 1)
override;
94 Bool_t CheckObject(
const TObject *obj)
override;
95 Bool_t CheckObject(
const void *obj,
const TClass *ptrClass)
override;
96 void GetMappedObject(UInt_t tag,
void *&ptr, TClass *&ClassPtr)
const override;
99 void ForceWriteInfo(TVirtualStreamerInfo *info, Bool_t force)
override;
100 void ForceWriteInfoClones(TClonesArray *a)
override;
101 Int_t ReadClones(TClonesArray *a, Int_t nobjects, Version_t objvers)
override;
102 Int_t WriteClones(TClonesArray *a, Int_t nobjects)
override;
103 void TagStreamerInfo(TVirtualStreamerInfo *info)
override;
106 TProcessID *GetLastProcessID(TRefTable *reftable)
const override;
107 UInt_t GetTRefExecId()
override;
108 TProcessID *ReadProcessID(UShort_t pidf)
override;
109 UShort_t WriteProcessID(TProcessID *pid)
override;
111 Int_t WriteObjectAny(
const void *obj,
const TClass *ptrClass, Bool_t cacheReuse = kTRUE)
override;
112 void WriteObject(
const TObject *obj, Bool_t cacheReuse = kTRUE)
override;
113 using TBuffer::WriteObject;
115 static void SetGlobalReadParam(Int_t mapsize);
116 static void SetGlobalWriteParam(Int_t mapsize);
117 static Int_t GetGlobalReadParam();
118 static Int_t GetGlobalWriteParam();
120 ClassDefOverride(TBufferIO, 0)