TBuffer


class description - source file - inheritance tree

class TBuffer : public TObject


    protected:
TBuffer TBuffer() TBuffer TBuffer(const TBuffer&) void CheckCount(UInt_t offset) UInt_t CheckObject(UInt_t offset, const TClass* cl, Bool_t readClass = kFALSE) void Expand(Int_t newsize) void operator=(const TBuffer&) virtual Int_t Read(const char* name) virtual Int_t Write(const char* name, Int_t opt, Int_t bufs) void WriteObject(const void* actualObjStart, TClass* actualClass) public:
TBuffer TBuffer(TBuffer::EMode mode) TBuffer TBuffer(TBuffer::EMode mode, Int_t bufsiz) TBuffer TBuffer(TBuffer::EMode mode, Int_t bufsiz, void* buf, Bool_t adopt = kTRUE) virtual void ~TBuffer() char* Buffer() const Int_t BufferSize() const Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass* clss) static TClass* Class() void DetachBuffer() Int_t GetBufferDisplacement() const static TClass* GetClass(const type_info& typeinfo) static TClass* GetClass(const char* className) static Int_t GetGlobalReadParam() static Int_t GetGlobalWriteParam() TObject* GetParent() const void InitMap() virtual TClass* IsA() const Bool_t IsReading() const Bool_t IsWriting() const Int_t Length() const void MapObject(const TObject* obj, UInt_t offset = 1) void MapObject(const void* obj, TClass* cl, UInt_t offset = 1) TBuffer& operator<<(Bool_t b) TBuffer& operator<<(Char_t c) TBuffer& operator<<(UChar_t c) TBuffer& operator<<(Short_t h) TBuffer& operator<<(UShort_t h) TBuffer& operator<<(Int_t i) TBuffer& operator<<(UInt_t i) TBuffer& operator<<(Long_t l) TBuffer& operator<<(ULong_t l) TBuffer& operator<<(Float_t f) TBuffer& operator<<(Double_t d) TBuffer& operator<<(const Char_t* c) TBuffer& operator>>(Bool_t& b) TBuffer& operator>>(Char_t& c) TBuffer& operator>>(UChar_t& c) TBuffer& operator>>(Short_t& h) TBuffer& operator>>(UShort_t& h) TBuffer& operator>>(Int_t& i) TBuffer& operator>>(UInt_t& i) TBuffer& operator>>(Long_t& l) TBuffer& operator>>(ULong_t& l) TBuffer& operator>>(Float_t& f) TBuffer& operator>>(Double_t& d) TBuffer& operator>>(Char_t* c) Int_t ReadArray(Bool_t*& b) Int_t ReadArray(Char_t*& c) Int_t ReadArray(UChar_t*& c) Int_t ReadArray(Short_t*& h) Int_t ReadArray(UShort_t*& h) Int_t ReadArray(Int_t*& i) Int_t ReadArray(UInt_t*& i) Int_t ReadArray(Long_t*& l) Int_t ReadArray(ULong_t*& l) Int_t ReadArray(Float_t*& f) Int_t ReadArray(Double_t*& d) Int_t ReadBuf(void* buf, Int_t max) virtual TClass* ReadClass(const TClass* cl = 0, UInt_t* objTag = 0) void ReadFastArray(Bool_t* b, Int_t n) void ReadFastArray(Char_t* c, Int_t n) void ReadFastArray(UChar_t* c, Int_t n) void ReadFastArray(Short_t* h, Int_t n) void ReadFastArray(UShort_t* h, Int_t n) void ReadFastArray(Int_t* i, Int_t n) void ReadFastArray(UInt_t* i, Int_t n) void ReadFastArray(Long_t* l, Int_t n) void ReadFastArray(ULong_t* l, Int_t n) void ReadFastArray(Float_t* f, Int_t n) void ReadFastArray(Double_t* d, Int_t n) virtual TObject* ReadObject(const TClass* cl) void* ReadObjectAny(const TClass* cast) Int_t ReadStaticArray(Bool_t* b) Int_t ReadStaticArray(Char_t* c) Int_t ReadStaticArray(UChar_t* c) Int_t ReadStaticArray(Short_t* h) Int_t ReadStaticArray(UShort_t* h) Int_t ReadStaticArray(Int_t* i) Int_t ReadStaticArray(UInt_t* i) Int_t ReadStaticArray(Long_t* l) Int_t ReadStaticArray(ULong_t* l) Int_t ReadStaticArray(Float_t* f) Int_t ReadStaticArray(Double_t* d) char* ReadString(char* s, Int_t max) Version_t ReadVersion(UInt_t* start = 0, UInt_t* bcnt = 0) virtual void Reset() void ResetMap() void SetBuffer(void* buf, UInt_t bufsiz = 0, Bool_t adopt = kTRUE) void SetBufferDisplacement(Int_t skipped) void SetBufferDisplacement() void SetBufferOffset(Int_t offset = 0) void SetByteCount(UInt_t cntpos, Bool_t packInVersion = kFALSE) static void SetGlobalReadParam(Int_t mapsize) static void SetGlobalWriteParam(Int_t mapsize) void SetParent(TObject* parent) void SetReadMode() void SetReadParam(Int_t mapsize) void SetWriteMode() void SetWriteParam(Int_t mapsize) virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) void StreamObject(void* obj, const type_info& typeinfo) void StreamObject(void* obj, const char* className) void StreamObject(void* obj, TClass* cl) void WriteArray(const Bool_t* b, Int_t n) void WriteArray(const Char_t* c, Int_t n) void WriteArray(const UChar_t* c, Int_t n) void WriteArray(const Short_t* h, Int_t n) void WriteArray(const UShort_t* h, Int_t n) void WriteArray(const Int_t* i, Int_t n) void WriteArray(const UInt_t* i, Int_t n) void WriteArray(const Long_t* l, Int_t n) void WriteArray(const ULong_t* l, Int_t n) void WriteArray(const Float_t* f, Int_t n) void WriteArray(const Double_t* d, Int_t n) void WriteBuf(const void* buf, Int_t max) virtual void WriteClass(const TClass* cl) void WriteFastArray(const Bool_t* b, Int_t n) void WriteFastArray(const Char_t* c, Int_t n) void WriteFastArray(const UChar_t* c, Int_t n) void WriteFastArray(const Short_t* h, Int_t n) void WriteFastArray(const UShort_t* h, Int_t n) void WriteFastArray(const Int_t* i, Int_t n) void WriteFastArray(const UInt_t* i, Int_t n) void WriteFastArray(const Long_t* l, Int_t n) void WriteFastArray(const ULong_t* l, Int_t n) void WriteFastArray(const Float_t* f, Int_t n) void WriteFastArray(const Double_t* d, Int_t n) virtual void WriteObject(const TObject* obj) Int_t WriteObjectAny(const void* obj, TClass* ptrClass) void WriteString(const char* s) UInt_t WriteVersion(const TClass* cl, Bool_t useBcnt = kFALSE)

Data Members


    protected:
Bool_t fMode Read or write mode Int_t fVersion Buffer format version Int_t fBufSize Size of buffer char* fBuffer Buffer used to store objects char* fBufCur Current position in buffer char* fBufMax End of buffer Int_t fMapCount Number of objects or classes in map Int_t fMapSize Default size of map Int_t fDisplacement Value to be added to the map offsets TExMap* fMap Map containing object,offset pairs for reading/writing TExMap* fClassMap Map containing object,class pairs for reading TObject* fParent Pointer to the buffer parent (file) where buffer is read/written static Int_t fgMapSize Default map size for all TBuffer objects public:
static const enum TObject:: kIsOwner static const TBuffer::EMode kRead static const TBuffer::EMode kWrite static const enum TObject:: kInitialSize static const enum TObject:: kMinimalSize static const enum TObject:: kMapSize


See also

TMessage

Class Description

                                                                      
 TBuffer                                                              
                                                                      
 Buffer base class used for serializing objects.                      
                                                                      


TBuffer(EMode mode)
 Create an I/O buffer object. Mode should be either TBuffer::kRead or
 TBuffer::kWrite. By default the I/O buffer has a size of
 TBuffer::kInitialSize (1024) bytes.

TBuffer(EMode mode, Int_t bufsiz)
 Create an I/O buffer object. Mode should be either TBuffer::kRead or
 TBuffer::kWrite.

TBuffer(EMode mode, Int_t bufsiz, void *buf, Bool_t adopt)
 Create an I/O buffer object. Mode should be either TBuffer::kRead or
 TBuffer::kWrite. By default the I/O buffer has a size of
 TBuffer::kInitialSize (1024) bytes. An external buffer can be passed
 to TBuffer via the buf argument. By default this buffer will be adopted
 unless adopt is false.

~TBuffer()
 Delete an I/O buffer object.

void SetBuffer(void *buf, UInt_t newsiz, Bool_t adopt)
 Sets a new buffer in an existing TBuffer object. If newsiz=0 then the
 new buffer is expected to have the same size as the previous buffer.
 The current buffer position is reset to the start of the buffer.
 If the TBuffer owned the previous buffer, it will be deleted prior
 to accepting the new buffer. By default the new buffer will be
 adopted unless adopt is false.

void CheckCount(UInt_t offset)
 Check if offset is not too large (< kMaxMapCount) when writing.

UInt_t CheckObject(UInt_t offset, const TClass *cl, Bool_t readClass)
 Check for object in the read map. If the object is 0 it still has to be
 read. Try to read it from the buffer starting at location offset. If the
 object is -1 then it really does not exist and we return 0. If the object
 exists just return the offset.

void Expand(Int_t newsize)
 Expand the I/O buffer to newsize bytes.

TObject* GetParent() const
 Return pointer to parent of this buffer.

void SetParent(TObject *parent)
 Set parent owning this buffer.

void MapObject(const TObject *obj, UInt_t offset)
 Add object to the fMap container.
 If obj is not 0 add object to the map (in read mode also add 0 objects to
 the map). This method may only be called outside this class just before
 calling obj->Streamer() to prevent self reference of obj, in case obj
 contains (via via) a pointer to itself. In that case offset must be 1
 (default value for offset).

void MapObject(const void *obj, TClass* cl, UInt_t offset)
 Add object to the fMap container.
 If obj is not 0 add object to the map (in read mode also add 0 objects to
 the map). This method may only be called outside this class just before
 calling obj->Streamer() to prevent self reference of obj, in case obj
 contains (via via) a pointer to itself. In that case offset must be 1
 (default value for offset).

void SetReadParam(Int_t mapsize)
 Set the initial size of the map used to store object and class
 references during reading. The default size is kMapSize=503.
 Increasing the default has the benefit that when reading many
 small objects the map does not need to be resized too often
 (the system is always dynamic, even with the default everything
 will work, only the initial resizing will cost some time).
 This method can only be called directly after the creation of
 the TBuffer, before any reading is done. Globally this option
 can be changed using SetGlobalReadParam().

void SetWriteParam(Int_t mapsize)
 Set the initial size of the hashtable used to store object and class
 references during writing. The default size is kMapSize=503.
 Increasing the default has the benefit that when writing many
 small objects the hashtable does not get too many collisions
 (the system is always dynamic, even with the default everything
 will work, only a large number of collisions will cost performance).
 For optimal performance hashsize should always be a prime.
 This method can only be called directly after the creation of
 the TBuffer, before any writing is done. Globally this option
 can be changed using SetGlobalWriteParam().

void InitMap()
 Create the fMap container and initialize them
 with the null object.

void ResetMap()
 Delete existing fMap and reset map counter.

void SetByteCount(UInt_t cntpos, Bool_t packInVersion)
 Set byte count at position cntpos in the buffer. Generate warning if
 count larger than kMaxMapCount. The count is excluded its own size.

Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)
 Check byte count with current buffer position. They should
 match. If not print warning and position buffer in correct
 place determined by the byte count. Startpos is position of
 first byte where the byte count is written in buffer.
 Returns 0 if everything is ok, otherwise the bytecount offset
 (< 0 when read too little, >0 when read too much).

Int_t ReadBuf(void *buf, Int_t max)
 Read max bytes from the I/O buffer into buf. The function returns
 the actual number of bytes read.

void WriteBuf(const void *buf, Int_t max)
 Write max bytes from buf into the I/O buffer.

Text_t* ReadString(Text_t *s, Int_t max)
 Read string from I/O buffer. String is read till 0 character is
 found or till max-1 characters are read (i.e. string s has max
 bytes allocated). If max = -1 no check on number of character is
 made, reading continues till 0 character is found.

void WriteString(const Text_t *s)
 Write string to I/O buffer. Writes string upto and including the
 terminating 0.

Int_t ReadArray(Bool_t *&b)
 Read array of bools from the I/O buffer. Returns the number of
 bools read. If argument is a 0 pointer then space will be
 allocated for the array.

Int_t ReadArray(Char_t *&c)
 Read array of characters from the I/O buffer. Returns the number of
 characters read. If argument is a 0 pointer then space will be
 allocated for the array.

Int_t ReadArray(Short_t *&h)
 Read array of shorts from the I/O buffer. Returns the number of shorts
 read. If argument is a 0 pointer then space will be allocated for the
 array.

Int_t ReadArray(Int_t *&ii)
 Read array of ints from the I/O buffer. Returns the number of ints
 read. If argument is a 0 pointer then space will be allocated for the
 array.

Int_t ReadArray(Long_t *&ll)
 Read array of longs from the I/O buffer. Returns the number of longs
 read. If argument is a 0 pointer then space will be allocated for the
 array.

Int_t ReadArray(Float_t *&f)
 Read array of floats from the I/O buffer. Returns the number of floats
 read. If argument is a 0 pointer then space will be allocated for the
 array.

Int_t ReadArray(Double_t *&d)
 Read array of doubles from the I/O buffer. Returns the number of doubles
 read. If argument is a 0 pointer then space will be allocated for the
 array.

Int_t ReadStaticArray(Bool_t *b)
 Read array of bools from the I/O buffer. Returns the number of bools
 read.

Int_t ReadStaticArray(Char_t *c)
 Read array of characters from the I/O buffer. Returns the number of
 characters read.

Int_t ReadStaticArray(Short_t *h)
 Read array of shorts from the I/O buffer. Returns the number of shorts
 read.

Int_t ReadStaticArray(Int_t *ii)
 Read array of ints from the I/O buffer. Returns the number of ints
 read.

Int_t ReadStaticArray(Long_t *ll)
 Read array of longs from the I/O buffer. Returns the number of longs
 read.

Int_t ReadStaticArray(Float_t *f)
 Read array of floats from the I/O buffer. Returns the number of floats
 read.

Int_t ReadStaticArray(Double_t *d)
 Read array of doubles from the I/O buffer. Returns the number of doubles
 read.

void ReadFastArray(Bool_t *b, Int_t n)
 Read array of n bools from the I/O buffer.

void ReadFastArray(Char_t *c, Int_t n)
 Read array of n characters from the I/O buffer.

void ReadFastArray(Short_t *h, Int_t n)
 Read array of n shorts from the I/O buffer.

void ReadFastArray(Int_t *ii, Int_t n)
 Read array of n ints from the I/O buffer.

void ReadFastArray(Long_t *ll, Int_t n)
 Read array of n longs from the I/O buffer.

void ReadFastArray(Float_t *f, Int_t n)
 Read array of n floats from the I/O buffer.

void ReadFastArray(Double_t *d, Int_t n)
 Read array of n doubles from the I/O buffer.

void WriteArray(const Bool_t *b, Int_t n)
 Write array of n bools into the I/O buffer.

void WriteArray(const Char_t *c, Int_t n)
 Write array of n characters into the I/O buffer.

void WriteArray(const Short_t *h, Int_t n)
 Write array of n shorts into the I/O buffer.

void WriteArray(const Int_t *ii, Int_t n)
 Write array of n ints into the I/O buffer.

void WriteArray(const Long_t *ll, Int_t n)
 Write array of n longs into the I/O buffer.

void WriteArray(const Float_t *f, Int_t n)
 Write array of n floats into the I/O buffer.

void WriteArray(const Double_t *d, Int_t n)
 Write array of n doubles into the I/O buffer.

void WriteFastArray(const Bool_t *b, Int_t n)
 Write array of n bools into the I/O buffer.

void WriteFastArray(const Char_t *c, Int_t n)
 Write array of n characters into the I/O buffer.

void WriteFastArray(const Short_t *h, Int_t n)
 Write array of n shorts into the I/O buffer.

void WriteFastArray(const Int_t *ii, Int_t n)
 Write array of n ints into the I/O buffer.

void WriteFastArray(const Long_t *ll, Int_t n)
 Write array of n longs into the I/O buffer.

void WriteFastArray(const Float_t *f, Int_t n)
 Write array of n floats into the I/O buffer.

void WriteFastArray(const Double_t *d, Int_t n)
 Write array of n doubles into the I/O buffer.

TObject* ReadObject(const TClass * /*clReq*/)
 Read object from I/O buffer. clReq is NOT used.
 The value returned is the address of the actual start in memory of
 the object. Note that if the actual class of the object does not
 inherit first from TObject, the type of the pointer is NOT 'TObject*'.
 [More accurately, the class needs to start with the TObject part, for
 the pointer to be a real TOject*].
 We recommend using ReadObjectAny instead of ReadObject

void* ReadObjectAny(const TClass *clCast)
 Read object from I/O buffer.
 A typical use for this function is:
    MyClass *ptr = (MyClass*)b.ReadObjectAny(MyClass::Class());
 I.e. clCast should point to a TClass object describing the class pointed
 to by your pointer.
 In case of multiple inheritance, the return value might not be the
 real beginning of the object in memory.  You will need to use a
 dynamic_cast later if you need to retrieve it.

void WriteObject(const TObject *obj)
 Write object to I/O buffer.

void WriteObject(const void *actualObjectStart, TClass *actualClass)
 Write object to I/O buffer.
 This function assumes that the value of 'actualObjectStart' is the actual start of
 the object of class 'actualClass'

Int_t WriteObjectAny(const void *obj, TClass *ptrClass)
 Write object to I/O buffer.
 This function assumes that the value in 'obj' is the value stored in
 a pointer to a "ptrClass". The actual type of the object pointed to
 can be any class derieved from "ptrClass".
 Return:
  0: failure (not used yet)
  1: success
  2: truncated success (i.e actual class is missing. Only ptrClass saved.

TClass* ReadClass(const TClass *clReq, UInt_t *objTag)
 Read class definition from I/O buffer. clReq can be used to cross check
 if the actually read object is of the requested class. objTag is
 set in case the object is a reference to an already read object.

void WriteClass(const TClass *cl)
 Write class description to I/O buffer.

Version_t ReadVersion(UInt_t *startpos, UInt_t *bcnt)
 Read class version from I/O buffer.

UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt)
 Write class version to I/O buffer.

void SetReadMode()
 Set buffer in read mode.

void SetWriteMode()
 Set buffer in write mode.

void StreamObject(void *obj, const type_info &typeinfo)
 Stream an object given its C++ typeinfo information.

void StreamObject(void *obj, const char *className)
 Stream an object given the name of its actual class.

void StreamObject(void *obj, TClass *cl)
 Stream an object given a pointer to its actual class.

TClass* GetClass(const type_info &typeinfo)
 Forward to TROOT::GetClass

TClass* GetClass(const char *className)
 Forward to TROOT::GetClass

void SetGlobalReadParam(Int_t mapsize)
 Set the initial size of the map used to store object and class
 references during reading. The default size is kMapSize=503.
 Increasing the default has the benefit that when reading many
 small objects the array does not need to be resized too often
 (the system is always dynamic, even with the default everything
 will work, only the initial resizing will cost some time).
 Per TBuffer object this option can be changed using SetReadParam().

void SetGlobalWriteParam(Int_t mapsize)
 Set the initial size of the hashtable used to store object and class
 references during writing. The default size is kMapSize=503.
 Increasing the default has the benefit that when writing many
 small objects the hashtable does not get too many collisions
 (the system is always dynamic, even with the default everything
 will work, only a large number of collisions will cost performance).
 For optimal performance hashsize should always be a prime.
 Per TBuffer object this option can be changed using SetWriteParam().

Int_t GetGlobalReadParam()
 Get default read map size.

Int_t GetGlobalWriteParam()
 Get default write map size.



Inline Functions


               void operator=(const TBuffer&)
              Int_t Read(const char* name)
              Int_t Write(const char* name, Int_t opt, Int_t bufs)
            TBuffer TBuffer(TBuffer::EMode mode, Int_t bufsiz)
            TBuffer TBuffer(TBuffer::EMode mode, Int_t bufsiz, void* buf, Bool_t adopt = kTRUE)
               void Reset()
               void SetBufferOffset(Int_t offset = 0)
              char* Buffer() const
              Int_t BufferSize() const
               void DetachBuffer()
              Int_t Length() const
             Bool_t IsReading() const
             Bool_t IsWriting() const
               void SetBufferDisplacement(Int_t skipped)
               void SetBufferDisplacement()
              Int_t GetBufferDisplacement() const
              Int_t ReadArray(Long_t*& l)
              Int_t ReadArray(ULong_t*& l)
              Int_t ReadArray(Float_t*& f)
              Int_t ReadArray(Double_t*& d)
              Int_t ReadStaticArray(Long_t* l)
              Int_t ReadStaticArray(ULong_t* l)
              Int_t ReadStaticArray(Float_t* f)
              Int_t ReadStaticArray(Double_t* d)
               void WriteArray(const Long_t* l, Int_t n)
               void WriteArray(const ULong_t* l, Int_t n)
               void WriteArray(const Float_t* f, Int_t n)
               void WriteArray(const Double_t* d, Int_t n)
               void ReadFastArray(Long_t* l, Int_t n)
               void ReadFastArray(ULong_t* l, Int_t n)
               void ReadFastArray(Float_t* f, Int_t n)
               void ReadFastArray(Double_t* d, Int_t n)
               void WriteFastArray(const Long_t* l, Int_t n)
               void WriteFastArray(const ULong_t* l, Int_t n)
               void WriteFastArray(const Float_t* f, Int_t n)
               void WriteFastArray(const Double_t* d, Int_t n)
           TBuffer& operator>>(Bool_t& b)
           TBuffer& operator>>(Char_t& c)
           TBuffer& operator>>(UChar_t& c)
           TBuffer& operator>>(Short_t& h)
           TBuffer& operator>>(UShort_t& h)
           TBuffer& operator>>(Int_t& i)
           TBuffer& operator>>(UInt_t& i)
           TBuffer& operator>>(Long_t& l)
           TBuffer& operator>>(ULong_t& l)
           TBuffer& operator>>(Float_t& f)
           TBuffer& operator>>(Double_t& d)
           TBuffer& operator>>(Char_t* c)
           TBuffer& operator<<(Bool_t b)
           TBuffer& operator<<(Char_t c)
           TBuffer& operator<<(UChar_t c)
           TBuffer& operator<<(Short_t h)
           TBuffer& operator<<(UShort_t h)
           TBuffer& operator<<(Int_t i)
           TBuffer& operator<<(UInt_t i)
           TBuffer& operator<<(Long_t l)
           TBuffer& operator<<(ULong_t l)
           TBuffer& operator<<(Float_t f)
           TBuffer& operator<<(Double_t d)
           TBuffer& operator<<(const Char_t* c)
            TClass* Class()
            TClass* IsA() const
               void ShowMembers(TMemberInspector& insp, char* parent)
               void Streamer(TBuffer& b)
               void StreamerNVirtual(TBuffer& b)


Author: Fons Rademakers 04/05/96
Last update: root/base:$Name: $:$Id: TBuffer.cxx,v 1.45 2003/02/04 22:04:17 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.