4 #ifndef ROOT_TBufferSQL2 
    5 #define ROOT_TBufferSQL2 
   13 class TVirtualStreamerInfo;
 
   14 class TStreamerElement;
 
   16 class TMemberStreamer;
 
   27 class TBufferSQL2 final : 
public TBufferText {
 
   29    friend class TSQLStructure;
 
   34    TSQLStructure *fStructure;    
 
   39    Int_t fReadVersionBuffer;     
 
   40    Long64_t fObjIdCounter;       
 
   41    Bool_t fIgnoreVerification;   
 
   42    TSQLObjectData *fCurrentData; 
 
   43    TObjArray *fObjectsInfos;     
 
   49    TBufferSQL2(
const TBufferSQL2 &);    
 
   50    void operator=(
const TBufferSQL2 &); 
 
   56    void WriteObjectClass(
const void *actualObjStart, 
const TClass *actualClass, Bool_t cacheReuse) 
final;
 
   60    TSQLStructure *PushStack();
 
   61    TSQLStructure *PopStack();
 
   62    TSQLStructure *Stack(Int_t depth = 0);
 
   64    void WorkWithClass(
const char *classname, Version_t classversion);
 
   65    void WorkWithElement(TStreamerElement *elem, Int_t comp_type);
 
   67    Int_t SqlReadArraySize();
 
   68    Bool_t SqlObjectInfo(Long64_t objid, TString &clname, Version_t &version);
 
   69    TSQLObjectData *SqlObjectData(Long64_t objid, TSQLClassInfo *sqlinfo);
 
   71    Bool_t SqlWriteBasic(Char_t value);
 
   72    Bool_t SqlWriteBasic(Short_t value);
 
   73    Bool_t SqlWriteBasic(Int_t value);
 
   74    Bool_t SqlWriteBasic(Long_t value);
 
   75    Bool_t SqlWriteBasic(Long64_t value);
 
   76    Bool_t SqlWriteBasic(Float_t value);
 
   77    Bool_t SqlWriteBasic(Double_t value);
 
   78    Bool_t SqlWriteBasic(Bool_t value);
 
   79    Bool_t SqlWriteBasic(UChar_t value);
 
   80    Bool_t SqlWriteBasic(UShort_t value);
 
   81    Bool_t SqlWriteBasic(UInt_t value);
 
   82    Bool_t SqlWriteBasic(ULong_t value);
 
   83    Bool_t SqlWriteBasic(ULong64_t value);
 
   84    Bool_t SqlWriteValue(
const char *value, 
const char *tname);
 
   86    void SqlReadBasic(Char_t &value);
 
   87    void SqlReadBasic(Short_t &value);
 
   88    void SqlReadBasic(Int_t &value);
 
   89    void SqlReadBasic(Long_t &value);
 
   90    void SqlReadBasic(Long64_t &value);
 
   91    void SqlReadBasic(Float_t &value);
 
   92    void SqlReadBasic(Double_t &value);
 
   93    void SqlReadBasic(Bool_t &value);
 
   94    void SqlReadBasic(UChar_t &value);
 
   95    void SqlReadBasic(UShort_t &value);
 
   96    void SqlReadBasic(UInt_t &value);
 
   97    void SqlReadBasic(ULong_t &value);
 
   98    void SqlReadBasic(ULong64_t &value);
 
   99    const char *SqlReadValue(
const char *tname);
 
  100    const char *SqlReadCharStarValue();
 
  102    Int_t SqlWriteObject(
const void *obj, 
const TClass *objClass, Bool_t cacheReuse, TMemberStreamer *streamer = 
nullptr,
 
  103                         Int_t streamer_index = 0);
 
  104    void *SqlReadObject(
void *obj, TClass **cl = 
nullptr, TMemberStreamer *streamer = 
nullptr, Int_t streamer_index = 0,
 
  105                        const TClass *onFileClass = 
nullptr);
 
  106    void *SqlReadObjectDirect(
void *obj, TClass **cl, Long64_t objid, TMemberStreamer *streamer = 
nullptr,
 
  107                              Int_t streamer_index = 0, 
const TClass *onFileClass = 
nullptr);
 
  109    void StreamObjectExtra(
void *obj, TMemberStreamer *streamer, 
const TClass *cl, Int_t n = 0,
 
  110                           const TClass *onFileClass = 
nullptr);
 
  112    template <
typename T>
 
  113    R__ALWAYS_INLINE 
void SqlReadArrayContent(T *arr, Int_t arrsize, Bool_t withsize);
 
  115    template <
typename T>
 
  116    R__ALWAYS_INLINE Int_t SqlReadArray(T *&arr, Bool_t is_static = kFALSE);
 
  118    template <
typename T>
 
  119    R__ALWAYS_INLINE 
void SqlReadFastArray(T *arr, Int_t arrsize);
 
  121    template <
typename T>
 
  122    R__ALWAYS_INLINE 
void SqlWriteArray(T *arr, Int_t arrsize, Bool_t withsize = kFALSE);
 
  125    TBufferSQL2(TBuffer::EMode mode, TSQLFile *file = 
nullptr);
 
  126    virtual ~TBufferSQL2();
 
  128    void SetCompressionLevel(
int level) { fCompressLevel = level; }
 
  130    TSQLStructure *GetStructure()
 const { 
return fStructure; }
 
  132    Int_t GetErrorFlag()
 const { 
return fErrorFlag; }
 
  134    void SetIgnoreVerification() { fIgnoreVerification = kTRUE; }
 
  136    TSQLStructure *SqlWriteAny(
const void *obj, 
const TClass *cl, Long64_t objid);
 
  138    void *SqlReadAny(Long64_t keyid, Long64_t objid, TClass **cl, 
void *obj = 
nullptr);
 
  142    TClass *ReadClass(
const TClass *cl = 
nullptr, UInt_t *objTag = 
nullptr) final;
 
  143    void WriteClass(const TClass *cl) final;
 
  147    Version_t ReadVersion(UInt_t *start = 
nullptr, UInt_t *bcnt = 
nullptr, const TClass *cl = 
nullptr) final;
 
  148    UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt = kFALSE) final;
 
  150    void *ReadObjectAny(const TClass *clCast) final;
 
  151    void SkipObjectAny() final;
 
  153    void IncrementLevel(TVirtualStreamerInfo *) final;
 
  154    void SetStreamerElementNumber(TStreamerElement *elem, Int_t comp_type) final;
 
  155    void DecrementLevel(TVirtualStreamerInfo *) final;
 
  157    void ClassBegin(const TClass *, Version_t = -1) final;
 
  158    void ClassEnd(const TClass *) final;
 
  159    void ClassMember(const 
char *name, const 
char *typeName = 0, Int_t arrsize1 = -1, Int_t arrsize2 = -1) final;
 
  161    Int_t ReadArray(Bool_t *&b) final;
 
  162    Int_t ReadArray(Char_t *&c) final;
 
  163    Int_t ReadArray(UChar_t *&c) final;
 
  164    Int_t ReadArray(Short_t *&h) final;
 
  165    Int_t ReadArray(UShort_t *&h) final;
 
  166    Int_t ReadArray(Int_t *&i) final;
 
  167    Int_t ReadArray(UInt_t *&i) final;
 
  168    Int_t ReadArray(Long_t *&l) final;
 
  169    Int_t ReadArray(ULong_t *&l) final;
 
  170    Int_t ReadArray(Long64_t *&l) final;
 
  171    Int_t ReadArray(ULong64_t *&l) final;
 
  172    Int_t ReadArray(Float_t *&f) final;
 
  173    Int_t ReadArray(Double_t *&d) final;
 
  175    Int_t ReadStaticArray(Bool_t *b) final;
 
  176    Int_t ReadStaticArray(Char_t *c) final;
 
  177    Int_t ReadStaticArray(UChar_t *c) final;
 
  178    Int_t ReadStaticArray(Short_t *h) final;
 
  179    Int_t ReadStaticArray(UShort_t *h) final;
 
  180    Int_t ReadStaticArray(Int_t *i) final;
 
  181    Int_t ReadStaticArray(UInt_t *i) final;
 
  182    Int_t ReadStaticArray(Long_t *l) final;
 
  183    Int_t ReadStaticArray(ULong_t *l) final;
 
  184    Int_t ReadStaticArray(Long64_t *l) final;
 
  185    Int_t ReadStaticArray(ULong64_t *l) final;
 
  186    Int_t ReadStaticArray(Float_t *f) final;
 
  187    Int_t ReadStaticArray(Double_t *d) final;
 
  189    void ReadFastArray(Bool_t *b, Int_t n) final;
 
  190    void ReadFastArray(Char_t *c, Int_t n) final;
 
  191    void ReadFastArray(UChar_t *c, Int_t n) final;
 
  192    void ReadFastArray(Short_t *h, Int_t n) final;
 
  193    void ReadFastArray(UShort_t *h, Int_t n) final;
 
  194    void ReadFastArray(Int_t *i, Int_t n) final;
 
  195    void ReadFastArray(UInt_t *i, Int_t n) final;
 
  196    void ReadFastArray(Long_t *l, Int_t n) final;
 
  197    void ReadFastArray(ULong_t *l, Int_t n) final;
 
  198    void ReadFastArray(Long64_t *l, Int_t n) final;
 
  199    void ReadFastArray(ULong64_t *l, Int_t n) final;
 
  200    void ReadFastArray(Float_t *f, Int_t n) final;
 
  201    void ReadFastArray(Double_t *d, Int_t n) final;
 
  202    void ReadFastArrayString(Char_t *c, Int_t n) final;
 
  203    void ReadFastArray(
void *start, const TClass *cl, Int_t n = 1, TMemberStreamer *s = 
nullptr,
 
  204                       const TClass *onFileClass = 
nullptr) final;
 
  205    void ReadFastArray(
void **startp, const TClass *cl, Int_t n = 1, Bool_t isPreAlloc = kFALSE,
 
  206                       TMemberStreamer *s = 
nullptr, const TClass *onFileClass = 
nullptr) final;
 
  208    void WriteArray(const Bool_t *b, Int_t n) final;
 
  209    void WriteArray(const Char_t *c, Int_t n) final;
 
  210    void WriteArray(const UChar_t *c, Int_t n) final;
 
  211    void WriteArray(const Short_t *h, Int_t n) final;
 
  212    void WriteArray(const UShort_t *h, Int_t n) final;
 
  213    void WriteArray(const Int_t *i, Int_t n) final;
 
  214    void WriteArray(const UInt_t *i, Int_t n) final;
 
  215    void WriteArray(const Long_t *l, Int_t n) final;
 
  216    void WriteArray(const ULong_t *l, Int_t n) final;
 
  217    void WriteArray(const Long64_t *l, Int_t n) final;
 
  218    void WriteArray(const ULong64_t *l, Int_t n) final;
 
  219    void WriteArray(const Float_t *f, Int_t n) final;
 
  220    void WriteArray(const Double_t *d, Int_t n) final;
 
  222    void WriteFastArray(const Bool_t *b, Int_t n) final;
 
  223    void WriteFastArray(const Char_t *c, Int_t n) final;
 
  224    void WriteFastArray(const UChar_t *c, Int_t n) final;
 
  225    void WriteFastArray(const Short_t *h, Int_t n) final;
 
  226    void WriteFastArray(const UShort_t *h, Int_t n) final;
 
  227    void WriteFastArray(const Int_t *i, Int_t n) final;
 
  228    void WriteFastArray(const UInt_t *i, Int_t n) final;
 
  229    void WriteFastArray(const Long_t *l, Int_t n) final;
 
  230    void WriteFastArray(const ULong_t *l, Int_t n) final;
 
  231    void WriteFastArray(const Long64_t *l, Int_t n) final;
 
  232    void WriteFastArray(const ULong64_t *l, Int_t n) final;
 
  233    void WriteFastArray(const Float_t *f, Int_t n) final;
 
  234    void WriteFastArray(const Double_t *d, Int_t n) final;
 
  235    void WriteFastArrayString(const Char_t *c, Int_t n) final;
 
  236    void WriteFastArray(
void *start, const TClass *cl, Int_t n = 1, TMemberStreamer *s = 
nullptr) final;
 
  237    Int_t WriteFastArray(
void **startp, const TClass *cl, Int_t n = 1, Bool_t isPreAlloc = kFALSE,
 
  238                         TMemberStreamer *s = 
nullptr) final;
 
  240    void StreamObject(
void *obj, const TClass *cl, const TClass *onFileClass = 
nullptr) final;
 
  241    using TBufferText::StreamObject;
 
  243    void ReadBool(Bool_t &b) final;
 
  244    void ReadChar(Char_t &c) final;
 
  245    void ReadUChar(UChar_t &c) final;
 
  246    void ReadShort(Short_t &s) final;
 
  247    void ReadUShort(UShort_t &s) final;
 
  248    void ReadInt(Int_t &i) final;
 
  249    void ReadUInt(UInt_t &i) final;
 
  250    void ReadLong(Long_t &l) final;
 
  251    void ReadULong(ULong_t &l) final;
 
  252    void ReadLong64(Long64_t &l) final;
 
  253    void ReadULong64(ULong64_t &l) final;
 
  254    void ReadFloat(Float_t &f) final;
 
  255    void ReadDouble(Double_t &d) final;
 
  256    void ReadCharP(Char_t *c) final;
 
  257    void ReadTString(TString &s) final;
 
  258    void ReadStdString(std::
string *s) final;
 
  259    using TBuffer::ReadStdString;
 
  260    void ReadCharStar(
char *&s) final;
 
  262    void WriteBool(Bool_t b) final;
 
  263    void WriteChar(Char_t c) final;
 
  264    void WriteUChar(UChar_t c) final;
 
  265    void WriteShort(Short_t s) final;
 
  266    void WriteUShort(UShort_t s) final;
 
  267    void WriteInt(Int_t i) final;
 
  268    void WriteUInt(UInt_t i) final;
 
  269    void WriteLong(Long_t l) final;
 
  270    void WriteULong(ULong_t l) final;
 
  271    void WriteLong64(Long64_t l) final;
 
  272    void WriteULong64(ULong64_t l) final;
 
  273    void WriteFloat(Float_t f) final;
 
  274    void WriteDouble(Double_t d) final;
 
  275    void WriteCharP(const Char_t *c) final;
 
  276    void WriteTString(const TString &s) final;
 
  277    void WriteStdString(const std::
string *s) final;
 
  278    using TBuffer::WriteStdString;
 
  279    void WriteCharStar(
char *s) final;
 
  281    TVirtualStreamerInfo *GetInfo() final;
 
  285    ClassDefOverride(TBufferSQL2, 0);