library: libSQL #include "TBufferSQL2.h" |
TBufferSQL2
class description - header file - source file - inheritance tree (.pdf)
protected:
TBufferSQL2(const TBufferSQL2&)
TBufferSQL2()
void operator=(const TBufferSQL2&)
TSQLStructure* PopStack()
TSQLStructure* PushStack()
TSQLObjectData* SqlObjectData(Long64_t objid, TSQLClassInfo* sqlinfo)
Bool_t SqlObjectInfo(Long64_t objid, TString& clname, Version_t& version)
Int_t SqlReadArraySize()
void SqlReadBasic(Char_t& value)
void SqlReadBasic(Short_t& value)
void SqlReadBasic(Int_t& value)
void SqlReadBasic(Long_t& value)
void SqlReadBasic(Long64_t& value)
void SqlReadBasic(Float_t& value)
void SqlReadBasic(Double_t& value)
void SqlReadBasic(Bool_t& value)
void SqlReadBasic(UChar_t& value)
void SqlReadBasic(UShort_t& value)
void SqlReadBasic(UInt_t& value)
void SqlReadBasic(ULong_t& value)
void SqlReadBasic(ULong64_t& value)
const char* SqlReadCharStarValue()
void* SqlReadObject(void* obj, TClass** cl = 0, TMemberStreamer* streamer = 0, Int_t streamer_index = 0)
void* SqlReadObjectDirect(void* obj, TClass** cl, Long64_t objid, TMemberStreamer* streamer = 0, Int_t streamer_index = 0)
const char* SqlReadValue(const char* tname)
Bool_t SqlWriteBasic(Char_t value)
Bool_t SqlWriteBasic(Short_t value)
Bool_t SqlWriteBasic(Int_t value)
Bool_t SqlWriteBasic(Long_t value)
Bool_t SqlWriteBasic(Long64_t value)
Bool_t SqlWriteBasic(Float_t value)
Bool_t SqlWriteBasic(Double_t value)
Bool_t SqlWriteBasic(Bool_t value)
Bool_t SqlWriteBasic(UChar_t value)
Bool_t SqlWriteBasic(UShort_t value)
Bool_t SqlWriteBasic(UInt_t value)
Bool_t SqlWriteBasic(ULong_t value)
Bool_t SqlWriteBasic(ULong64_t value)
Int_t SqlWriteObject(const void* obj, const TClass* objClass, TMemberStreamer* streamer = 0, Int_t streamer_index = 0)
Bool_t SqlWriteValue(const char* value, const char* tname)
TSQLStructure* Stack(Int_t depth = 0)
void WorkWithClass(const char* classname, Version_t classversion)
void WorkWithElement(TStreamerElement* elem, Int_t number)
virtual void WriteObject(const void* actualObjStart, const TClass* actualClass)
public:
TBufferSQL2(TBuffer::EMode mode)
TBufferSQL2(TBuffer::EMode mode, TSQLFile* file)
virtual ~TBufferSQL2()
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass* clss)
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const char* classname)
static TClass* Class()
virtual void ClassBegin(const TClass*, Version_t = -1)
virtual void ClassEnd(const TClass*)
virtual void ClassMember(const char* name, const char* typeName = "0", Int_t arrsize1 = -1, Int_t arrsize2 = -1)
virtual void DecrementLevel(TStreamerInfo*)
Int_t GetErrorFlag() const
TSQLStructure* GetStructure() const
virtual void IncrementLevel(TStreamerInfo*)
virtual TClass* IsA() const
virtual TBuffer& operator<<(Bool_t b)
virtual TBuffer& operator<<(Char_t c)
virtual TBuffer& operator<<(UChar_t c)
virtual TBuffer& operator<<(Short_t h)
virtual TBuffer& operator<<(UShort_t h)
virtual TBuffer& operator<<(Int_t i)
virtual TBuffer& operator<<(UInt_t i)
virtual TBuffer& operator<<(Long_t l)
virtual TBuffer& operator<<(ULong_t l)
virtual TBuffer& operator<<(Long64_t l)
virtual TBuffer& operator<<(ULong64_t l)
virtual TBuffer& operator<<(Float_t f)
virtual TBuffer& operator<<(Double_t d)
virtual TBuffer& operator<<(const Char_t* c)
virtual TBuffer& operator>>(Bool_t& b)
virtual TBuffer& operator>>(Char_t& c)
virtual TBuffer& operator>>(UChar_t& c)
virtual TBuffer& operator>>(Short_t& h)
virtual TBuffer& operator>>(UShort_t& h)
virtual TBuffer& operator>>(Int_t& i)
virtual TBuffer& operator>>(UInt_t& i)
virtual TBuffer& operator>>(Long_t& l)
virtual TBuffer& operator>>(ULong_t& l)
virtual TBuffer& operator>>(Long64_t& l)
virtual TBuffer& operator>>(ULong64_t& l)
virtual TBuffer& operator>>(Float_t& f)
virtual TBuffer& operator>>(Double_t& d)
virtual TBuffer& operator>>(Char_t* c)
virtual Int_t ReadArray(Bool_t*& b)
virtual Int_t ReadArray(Char_t*& c)
virtual Int_t ReadArray(UChar_t*& c)
virtual Int_t ReadArray(Short_t*& h)
virtual Int_t ReadArray(UShort_t*& h)
virtual Int_t ReadArray(Int_t*& i)
virtual Int_t ReadArray(UInt_t*& i)
virtual Int_t ReadArray(Long_t*& l)
virtual Int_t ReadArray(ULong_t*& l)
virtual Int_t ReadArray(Long64_t*& l)
virtual Int_t ReadArray(ULong64_t*& l)
virtual Int_t ReadArray(Float_t*& f)
virtual Int_t ReadArray(Double_t*& d)
virtual Int_t ReadArrayDouble32(Double_t*& d, TStreamerElement* ele = 0)
virtual TClass* ReadClass(const TClass* cl = 0, UInt_t* objTag = 0)
virtual void ReadDouble32(Double_t* d, TStreamerElement* ele = 0)
virtual void ReadFastArray(Bool_t* b, Int_t n)
virtual void ReadFastArray(Char_t* c, Int_t n)
virtual void ReadFastArray(UChar_t* c, Int_t n)
virtual void ReadFastArray(Short_t* h, Int_t n)
virtual void ReadFastArray(UShort_t* h, Int_t n)
virtual void ReadFastArray(Int_t* i, Int_t n)
virtual void ReadFastArray(UInt_t* i, Int_t n)
virtual void ReadFastArray(Long_t* l, Int_t n)
virtual void ReadFastArray(ULong_t* l, Int_t n)
virtual void ReadFastArray(Long64_t* l, Int_t n)
virtual void ReadFastArray(ULong64_t* l, Int_t n)
virtual void ReadFastArray(Float_t* f, Int_t n)
virtual void ReadFastArray(Double_t* d, Int_t n)
virtual void ReadFastArray(void* start, const TClass* cl, Int_t n = 1, TMemberStreamer* s = 0)
virtual void ReadFastArray(void** startp, const TClass* cl, Int_t n = 1, Bool_t isPreAlloc = kFALSE, TMemberStreamer* s = 0)
virtual void ReadFastArrayDouble32(Double_t* d, Int_t n, TStreamerElement* ele = 0)
virtual void* ReadObjectAny(const TClass* clCast)
virtual Int_t ReadStaticArray(Bool_t* b)
virtual Int_t ReadStaticArray(Char_t* c)
virtual Int_t ReadStaticArray(UChar_t* c)
virtual Int_t ReadStaticArray(Short_t* h)
virtual Int_t ReadStaticArray(UShort_t* h)
virtual Int_t ReadStaticArray(Int_t* i)
virtual Int_t ReadStaticArray(UInt_t* i)
virtual Int_t ReadStaticArray(Long_t* l)
virtual Int_t ReadStaticArray(ULong_t* l)
virtual Int_t ReadStaticArray(Long64_t* l)
virtual Int_t ReadStaticArray(ULong64_t* l)
virtual Int_t ReadStaticArray(Float_t* f)
virtual Int_t ReadStaticArray(Double_t* d)
virtual Int_t ReadStaticArrayDouble32(Double_t* d, TStreamerElement* ele = 0)
virtual Version_t ReadVersion(UInt_t* start = 0, UInt_t* bcnt = 0, const TClass* cl = 0)
virtual void SetByteCount(UInt_t cntpos, Bool_t packInVersion = kFALSE)
void SetCompressionLevel(int level)
void SetIgnoreVerification()
virtual void SetStreamerElementNumber(Int_t)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void SkipObjectAny()
void* SqlReadAny(Long64_t keyid, Long64_t objid, TClass** cl, void* obj = 0)
TSQLStructure* SqlWriteAny(const void* obj, const TClass* cl, Long64_t objid)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
virtual void StreamObject(void* obj, const type_info& typeinfo)
virtual void StreamObject(void* obj, const char* className)
virtual void StreamObject(void* obj, const TClass* cl)
virtual void StreamObject(TObject* obj)
virtual void StreamObject(void* obj, TMemberStreamer* streamer, const TClass* cl, Int_t n = 0)
virtual void WriteArray(const Bool_t* b, Int_t n)
virtual void WriteArray(const Char_t* c, Int_t n)
virtual void WriteArray(const UChar_t* c, Int_t n)
virtual void WriteArray(const Short_t* h, Int_t n)
virtual void WriteArray(const UShort_t* h, Int_t n)
virtual void WriteArray(const Int_t* i, Int_t n)
virtual void WriteArray(const UInt_t* i, Int_t n)
virtual void WriteArray(const Long_t* l, Int_t n)
virtual void WriteArray(const ULong_t* l, Int_t n)
virtual void WriteArray(const Long64_t* l, Int_t n)
virtual void WriteArray(const ULong64_t* l, Int_t n)
virtual void WriteArray(const Float_t* f, Int_t n)
virtual void WriteArray(const Double_t* d, Int_t n)
virtual void WriteArrayDouble32(const Double_t* d, Int_t n, TStreamerElement* ele = 0)
virtual void WriteClass(const TClass* cl)
virtual void WriteDouble32(Double_t* d, TStreamerElement* ele = 0)
virtual void WriteFastArray(const Bool_t* b, Int_t n)
virtual void WriteFastArray(const Char_t* c, Int_t n)
virtual void WriteFastArray(const UChar_t* c, Int_t n)
virtual void WriteFastArray(const Short_t* h, Int_t n)
virtual void WriteFastArray(const UShort_t* h, Int_t n)
virtual void WriteFastArray(const Int_t* i, Int_t n)
virtual void WriteFastArray(const UInt_t* i, Int_t n)
virtual void WriteFastArray(const Long_t* l, Int_t n)
virtual void WriteFastArray(const ULong_t* l, Int_t n)
virtual void WriteFastArray(const Long64_t* l, Int_t n)
virtual void WriteFastArray(const ULong64_t* l, Int_t n)
virtual void WriteFastArray(const Float_t* f, Int_t n)
virtual void WriteFastArray(const Double_t* d, Int_t n)
virtual void WriteFastArray(void* start, const TClass* cl, Int_t n = 1, TMemberStreamer* s = 0)
virtual Int_t WriteFastArray(void** startp, const TClass* cl, Int_t n = 1, Bool_t isPreAlloc = kFALSE, TMemberStreamer* s = 0)
virtual void WriteFastArrayDouble32(const Double_t* d, Int_t n, TStreamerElement* ele = 0)
virtual void WriteObject(const TObject* obj)
virtual UInt_t WriteVersion(const TClass* cl, Bool_t useBcnt = kFALSE)
protected:
TSQLFile* fSQL ! instance of TSQLFile
TSQLStructure* fStructure ! structures, created by object storing
TSQLStructure* fStk ! pointer on current active structure (stack head)
TExMap* fObjMap ! Map between stored objects and object id
TString fReadBuffer ! Buffer for read value
Int_t fErrorFlag ! Error id value
Bool_t fExpectedChain ! flag to resolve situation when several elements of same basic type stored as FastArray
Int_t fCompressLevel ! compress level used to minimize size of data in database
Int_t fReadVersionBuffer ! buffer, used to by ReadVersion method
Long64_t fObjIdCounter ! counter of objects id
Bool_t fIgnoreVerification ! ignore verification of names
TSQLObjectData* fCurrentData !
TObjArray* fObjectsInfos ! array of objects info for selected key
Long64_t fFirstObjId ! id of first object to be read from the database
Long64_t fLastObjId ! id of last object correspond to this key
TMap* fPoolsMap ! map of pools with data from different tables
________________________________________________________________________
Class for serializing/deserializing object to/from SQL data base.
It redefines most of TBuffer class function to convert simple types,
array of simple types and objects to/from TSQLStructure objects.
TBufferSQL2 class uses streaming mechanism, provided by ROOT system,
therefore most of ROOT and user classes can be stored. There are
limitations for complex objects like TTree, TClonesArray, TDirectory and
few other, which can not be converted to SQL (yet).
________________________________________________________________________
void* SqlReadAny(Long64_t keyid, Long64_t objid, TClass** cl, void* obj)
Recreate object from sql structure.
Return pointer to read object.
if (cl!=0) returns pointer to class of object
TSQLObjectData* SqlObjectData(Long64_t objid, TSQLClassInfo* sqlinfo)
creates TSQLObjectData for specifed object id and specified class
Object data for each class can be stored in two different tables.
First table contains data in column-wise form for simple types like integer,
strings and so on when second table contains any other data which cannot
be converted into column-wise representation.
TSQLObjectData will contain results of the requests to both such tables for
concrete object id.
void WriteObject(const TObject *obj)
Convert object into sql structures.
!!! Should be used only by TBufferSQL2 itself.
Use SqlWrite() functions to convert your object to sql
Redefined here to avoid gcc 3.x warning
void SetStreamerElementNumber(Int_t number)
Function is called from TStreamerInfo WriteBuffer and Readbuffer functions
and add/verify next element in sql tables
This calls allows separate data, correspondent to one class member, from another
void ClassBegin(const TClass* cl, Version_t classversion)
This method inform buffer data of which class now
will be streamed. When reading, classversion should be specified
as was read by TBuffer::ReadVersion() call
ClassBegin(), ClassEnd() & ClassMemeber() should be used in
custom class streamers to specify which kind of data are
now streamed to/from buffer. That information is used to correctly
convert class data to/from "normal" sql tables with meaningfull names
and correct datatypes. Without that functions data from custom streamer
will be saved as "raw" data in special _streamer_ table one value after another
Such MUST be used when object is written with standard ROOT streaming
procedure, but should be read back in custom streamer.
For example, custom streamer of TNamed class may look like:
void ClassEnd(const TClass* cl)
Method indicates end of streaming of classdata in custom streamer.
See ClassBegin() method for more details.
void ClassMember(const char* name, const char* typeName, Int_t arrsize1, Int_t arrsize2)
Method indicates name and typename of class memeber,
which should be now streamed in custom streamer
Following combinations are supported:
1. name = "ClassName", typeName = 0 or typename==ClassName
This is a case, when data of parent class "ClassName" should be streamed.
For instance, if class directly inherited from TObject, custom
streamer should include following code:
b.ClassMember("TObject");
TObject::Streamer(b);
2. Basic data type
b.ClassMember("fInt","Int_t");
b >> fInt;
3. Array of basic data types
b.ClassMember("fArr","Int_t", 5);
b.ReadFastArray(fArr, 5);
4. Object as data member
b.ClassMemeber("fName","TString");
fName.Streamer(b);
5. Pointer on object as datamember
b.ClassMemeber("fObj","TObject*");
b.StreamObject(b);
arrsize1 and arrsize2 arguments (when specified) indicate first and
second dimension of array. Can be used for array of basic types.
For more details see ClassBegin() method description.
void SkipObjectAny()
?????? Skip any kind of object from buffer
!!!!!! fix me, not yet implemented
Should be just skip of current column later
void StreamObject(void *obj, const type_info &typeinfo)
steram object to/from buffer
void StreamObject(void *obj, const char *className)
steram object to/from buffer
Bool_t SqlWriteValue(const char* value, const char* tname)
create structure in stack, which holds specified value
const char* SqlReadValue(const char* tname)
read string value from current stack node
const char* SqlReadCharStarValue()
read CharStar value, if it has special code, request it from large table
Author: Sergey Linev 20/11/2005
Last update: root/sql:$Name: $:$Id: TBufferSQL2.cxx,v 1.13 2006/06/22 08:21:22 brun Exp $
Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
ROOT page - Class index - Class Hierarchy - 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.