#ifndef ROOT_TStreamerElement
#define ROOT_TStreamerElement
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_ESTLType
#include "ESTLType.h"
#endif
class TMethodCall;
class TClass;
class TStreamerBasicType;
class TStreamerElement : public TNamed {
private:
TStreamerElement(const TStreamerElement &);
TStreamerElement&operator=(const TStreamerElement&);
protected:
Int_t fType;
Int_t fSize;
Int_t fArrayLength;
Int_t fArrayDim;
Int_t fMaxIndex[5];
Int_t fOffset;
Int_t fTObjectOffset;
Int_t fNewType;
TString fTypeName;
TClass *fClassObject;
TClass *fNewClass;
TMemberStreamer *fStreamer;
Double_t fXmin;
Double_t fXmax;
Double_t fFactor;
public:
enum ESTLtype {
kSTL = ROOT::kSTLany,
kSTLstring = ROOT::kSTLstring,
kSTLvector = ROOT::kSTLvector,
kSTLlist = ROOT::kSTLlist,
kSTLdeque = ROOT::kSTLdeque,
kSTLmap = ROOT::kSTLmap,
kSTLmultimap = ROOT::kSTLmultimap,
kSTLset = ROOT::kSTLset,
kSTLmultiset = ROOT::kSTLmultiset,
kSTLbitset = ROOT::kSTLbitset
};
enum {
kHasRange = BIT(6),
kCache = BIT(9),
kRepeat = BIT(10),
kRead = BIT(11),
kWrite = BIT(12),
kDoNotDelete = BIT(13),
kWholeObject = BIT(14)
};
TStreamerElement();
TStreamerElement(const char *name, const char *title, Int_t offset, Int_t dtype, const char *typeName);
virtual ~TStreamerElement();
virtual Bool_t CannotSplit() const;
Int_t GetArrayDim() const {return fArrayDim;}
Int_t GetArrayLength() const {return fArrayLength;}
virtual TClass *GetClassPointer() const;
TClass *GetClass() const {return GetClassPointer();}
virtual Int_t GetExecID() const;
virtual const char *GetFullName() const;
virtual const char *GetInclude() const {return "";}
Int_t GetMaxIndex(Int_t i) const {return fMaxIndex[i];}
virtual ULong_t GetMethod() const {return ULong_t(fStreamer);}
TMemberStreamer *GetStreamer() const;
virtual Int_t GetSize() const;
Int_t GetNewType() const {return fNewType;}
TClass* GetNewClass() const { return fNewClass; }
Int_t GetType() const {return fType;}
Int_t GetOffset() const {return fOffset;}
void GetSequenceType(TString &type) const;
Int_t GetTObjectOffset() const { return fTObjectOffset; }
const char *GetTypeName() const {return fTypeName.Data();}
const char *GetTypeNameBasic() const;
Double_t GetFactor() const {return fFactor;}
Double_t GetXmin() const {return fXmin;}
Double_t GetXmax() const {return fXmax;}
virtual void Init(TObject *obj=0);
virtual Bool_t IsaPointer() const {return kFALSE;}
virtual Bool_t HasCounter() const {return kFALSE;}
virtual Bool_t IsOldFormat(const char *newTypeName);
virtual Bool_t IsBase() const;
virtual void ls(Option_t *option="") const;
virtual void SetArrayDim(Int_t dim);
virtual void SetMaxIndex(Int_t dim, Int_t max);
virtual void SetOffset(Int_t offset) {fOffset=offset;}
virtual void SetTObjectOffset(Int_t tobjoffset) {fTObjectOffset=tobjoffset;}
virtual void SetStreamer(TMemberStreamer *streamer);
virtual void SetSize(Int_t dsize) {fSize = dsize;}
virtual void SetNewType(Int_t dtype) {fNewType = dtype;}
virtual void SetNewClass( TClass* cl ) { fNewClass= cl; }
virtual void SetType(Int_t dtype) {fType = dtype;}
virtual void SetTypeName(const char *name) {fTypeName = name; fClassObject = (TClass*)-1; }
virtual void Update(const TClass *oldClass, TClass *newClass);
ClassDef(TStreamerElement,4)
};
class TStreamerBase : public TStreamerElement {
private:
TStreamerBase(const TStreamerBase &);
TStreamerBase&operator=(const TStreamerBase&);
protected:
Int_t fBaseVersion;
UInt_t &fBaseCheckSum;
TClass *fBaseClass;
TClass *fNewBaseClass;
ClassStreamerFunc_t fStreamerFunc;
TVirtualStreamerInfo *fStreamerInfo;
TString fErrorMsg;
void InitStreaming();
public:
TStreamerBase();
TStreamerBase(const char *name, const char *title, Int_t offset);
virtual ~TStreamerBase();
Int_t GetBaseVersion() {return fBaseVersion;}
UInt_t GetBaseCheckSum() {return fBaseCheckSum;}
virtual TClass *GetClassPointer() const;
const char *GetErrorMessage() const { return fErrorMsg; }
const char *GetInclude() const;
TClass *GetNewBaseClass() { return fNewBaseClass; }
ULong_t GetMethod() const {return 0;}
Int_t GetSize() const;
TVirtualStreamerInfo *GetBaseStreamerInfo () const { return fStreamerInfo; }
virtual void Init(TObject *obj=0);
Bool_t IsBase() const;
virtual void ls(Option_t *option="") const;
Int_t ReadBuffer (TBuffer &b, char *pointer);
void SetNewBaseClass( TClass* cl ) { fNewBaseClass = cl; InitStreaming(); }
void SetBaseVersion(Int_t v) {fBaseVersion = v;}
void SetBaseCheckSum(UInt_t cs) {fBaseCheckSum = cs;}
void SetErrorMessage(const char *msg) { fErrorMsg = msg; }
virtual void Update(const TClass *oldClass, TClass *newClass);
Int_t WriteBuffer(TBuffer &b, char *pointer);
ClassDef(TStreamerBase,3)
};
class TStreamerBasicPointer : public TStreamerElement {
private:
TStreamerBasicPointer(const TStreamerBasicPointer &);
TStreamerBasicPointer&operator=(const TStreamerBasicPointer&);
protected:
Int_t fCountVersion;
TString fCountName;
TString fCountClass;
TStreamerBasicType *fCounter;
public:
TStreamerBasicPointer();
TStreamerBasicPointer(const char *name, const char *title, Int_t offset, Int_t dtype,
const char *countName, const char *countClass, Int_t version, const char *typeName);
virtual ~TStreamerBasicPointer();
const char *GetCountClass() const {return fCountClass.Data();}
const char *GetCountName() const {return fCountName.Data();}
Int_t GetCountVersion() const {return fCountVersion;}
ULong_t GetMethod() const;
Int_t GetSize() const;
virtual void Init(TObject *obj=0);
virtual Bool_t HasCounter() const {return fCounter!=0; }
virtual Bool_t IsaPointer() const {return kTRUE; }
void SetArrayDim(Int_t dim);
void SetCountClass(const char *clname) {fCountClass = clname; }
void SetCountName(const char *name) {fCountName = name; }
void SetCountVersion(Int_t count) {fCountVersion = count;}
ClassDef(TStreamerBasicPointer,2)
};
class TStreamerLoop : public TStreamerElement {
private:
TStreamerLoop(const TStreamerLoop&);
TStreamerLoop&operator=(const TStreamerLoop&);
protected:
Int_t fCountVersion;
TString fCountName;
TString fCountClass;
TStreamerBasicType *fCounter;
public:
TStreamerLoop();
TStreamerLoop(const char *name, const char *title, Int_t offset, const char *countName, const char *countClass, Int_t version, const char *typeName);
virtual ~TStreamerLoop();
const char *GetCountClass() const {return fCountClass.Data();}
const char *GetCountName() const {return fCountName.Data();}
Int_t GetCountVersion() const {return fCountVersion;}
const char *GetInclude() const;
ULong_t GetMethod() const;
Int_t GetSize() const;
virtual void Init(TObject *obj=0);
virtual Bool_t IsaPointer() const {return kTRUE; }
virtual Bool_t HasCounter() const {return fCounter!=0; }
void SetCountClass(const char *clname) {fCountClass = clname; }
void SetCountName(const char *name) {fCountName = name; }
void SetCountVersion(Int_t count) {fCountVersion = count;}
ClassDef(TStreamerLoop,2)
};
class TStreamerBasicType : public TStreamerElement {
private:
TStreamerBasicType(const TStreamerBasicType&);
TStreamerBasicType&operator=(const TStreamerBasicType&);
protected:
Int_t fCounter;
public:
TStreamerBasicType();
TStreamerBasicType(const char *name, const char *title, Int_t offset, Int_t dtype, const char *typeName);
virtual ~TStreamerBasicType();
Int_t GetCounter() const {return fCounter;}
ULong_t GetMethod() const;
Int_t GetSize() const;
ClassDef(TStreamerBasicType,2)
};
class TStreamerObject : public TStreamerElement {
private:
TStreamerObject(const TStreamerObject&);
TStreamerObject&operator=(const TStreamerObject&);
public:
TStreamerObject();
TStreamerObject(const char *name, const char *title, Int_t offset, const char *typeName);
virtual ~TStreamerObject();
const char *GetInclude() const;
Int_t GetSize() const;
virtual void Init(TObject *obj=0);
ClassDef(TStreamerObject,2)
};
class TStreamerObjectAny : public TStreamerElement {
private:
TStreamerObjectAny(const TStreamerObjectAny&);
TStreamerObjectAny&operator=(const TStreamerObjectAny&);
public:
TStreamerObjectAny();
TStreamerObjectAny(const char *name, const char *title, Int_t offset, const char *typeName);
virtual ~TStreamerObjectAny();
const char *GetInclude() const;
Int_t GetSize() const;
virtual void Init(TObject *obj=0);
ClassDef(TStreamerObjectAny,2)
};
class TStreamerObjectPointer : public TStreamerElement {
private:
TStreamerObjectPointer(const TStreamerObjectPointer&);
TStreamerObjectPointer&operator=(const TStreamerObjectPointer&);
public:
TStreamerObjectPointer();
TStreamerObjectPointer(const char *name, const char *title, Int_t offset, const char *typeName);
virtual ~TStreamerObjectPointer();
const char *GetInclude() const;
Int_t GetSize() const;
virtual void Init(TObject *obj=0);
virtual Bool_t IsaPointer() const {return kTRUE;}
virtual void SetArrayDim(Int_t dim);
ClassDef(TStreamerObjectPointer,2)
};
class TStreamerObjectAnyPointer : public TStreamerElement {
private:
TStreamerObjectAnyPointer(const TStreamerObjectAnyPointer&);
TStreamerObjectAnyPointer&operator=(const TStreamerObjectAnyPointer&);
public:
TStreamerObjectAnyPointer();
TStreamerObjectAnyPointer(const char *name, const char *title, Int_t offset, const char *typeName);
virtual ~TStreamerObjectAnyPointer();
const char *GetInclude() const;
Int_t GetSize() const;
virtual void Init(TObject *obj=0);
virtual Bool_t IsaPointer() const {return kTRUE;}
virtual void SetArrayDim(Int_t dim);
ClassDef(TStreamerObjectAnyPointer,1)
};
class TStreamerString : public TStreamerElement {
private:
TStreamerString(const TStreamerString&);
TStreamerString&operator=(const TStreamerString&);
public:
TStreamerString();
TStreamerString(const char *name, const char *title, Int_t offset);
virtual ~TStreamerString();
const char *GetInclude() const;
Int_t GetSize() const;
ClassDef(TStreamerString,2)
};
class TStreamerSTL : public TStreamerElement {
enum {
kWarned = BIT(21)
};
private:
TStreamerSTL(const TStreamerSTL&);
TStreamerSTL&operator=(const TStreamerSTL&);
protected:
Int_t fSTLtype;
Int_t fCtype;
public:
TStreamerSTL();
TStreamerSTL(const char *name, const char *title, Int_t offset,
const char *typeName, const char *trueType, Bool_t dmPointer);
TStreamerSTL(const char *name, const char *title, Int_t offset,
const char *typeName, const TVirtualCollectionProxy &proxy , Bool_t dmPointer);
virtual ~TStreamerSTL();
Bool_t CannotSplit() const;
Bool_t IsaPointer() const;
Bool_t IsBase() const;
Int_t GetSTLtype() const {return fSTLtype;}
Int_t GetCtype() const {return fCtype;}
const char *GetInclude() const;
Int_t GetSize() const;
virtual void ls(Option_t *option="") const;
void SetSTLtype(Int_t t) {fSTLtype = t;}
void SetCtype(Int_t t) {fCtype = t;}
virtual void SetStreamer(TMemberStreamer *streamer);
ClassDef(TStreamerSTL,3)
};
class TStreamerSTLstring : public TStreamerSTL {
private:
TStreamerSTLstring(const TStreamerSTLstring&);
TStreamerSTLstring&operator=(const TStreamerSTLstring&);
public:
TStreamerSTLstring();
TStreamerSTLstring(const char *name, const char *title, Int_t offset,
const char *typeName, Bool_t dmPointer);
virtual ~TStreamerSTLstring();
const char *GetInclude() const;
Int_t GetSize() const;
ClassDef(TStreamerSTLstring,2)
};
class TVirtualObject;
class TBuffer;
#include "TSchemaRule.h"
class TStreamerArtificial : public TStreamerElement {
private:
TStreamerArtificial(const TStreamerArtificial&);
TStreamerArtificial&operator=(const TStreamerArtificial&);
protected:
ROOT::TSchemaRule::ReadFuncPtr_t fReadFunc;
ROOT::TSchemaRule::ReadRawFuncPtr_t fReadRawFunc;
public:
TStreamerArtificial(const char *name, const char *title, Int_t offset, Int_t dtype, const char *typeName) : TStreamerElement(name,title,offset,dtype,typeName), fReadFunc(0), fReadRawFunc(0) {}
void SetReadFunc( ROOT::TSchemaRule::ReadFuncPtr_t val ) { fReadFunc = val; };
void SetReadRawFunc( ROOT::TSchemaRule::ReadRawFuncPtr_t val ) { fReadRawFunc = val; };
ROOT::TSchemaRule::ReadFuncPtr_t GetReadFunc();
ROOT::TSchemaRule::ReadRawFuncPtr_t GetReadRawFunc();
ClassDef(TStreamerArtificial, 0);
};
#endif