ROOT logo
ROOT » IO » IO » TStreamerInfo

class TStreamerInfo: public TVirtualStreamerInfo


A TStreamerInfo object describes a persistent version of a class.
A ROOT file contains the list of TStreamerInfo objects for all the
class versions written to this file.
When reading a file, all the TStreamerInfo objects are read back in
memory and registered to the TClass list of TStreamerInfo.

One can see the list and contents of the TStreamerInfo on a file
with, eg,
TFile f("myfile.root");
f.ShowStreamerInfo();

A TStreamerInfo is a list of TStreamerElement objects (one per data
member or base class).
When streaming an object, the system (TClass) loops on all the
TStreamerElement objects and calls the appropriate function for each
element type.


Function Members (Methods)

public:
TStreamerInfo()
TStreamerInfo(TClass* cl)
virtual~TStreamerInfo()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
virtual voidBuild()
virtual voidBuildCheck(TFile* file = 0)
virtual voidBuildEmulated(TFile* file)
virtual Bool_tBuildFor(const TClass* cl)
virtual voidBuildOld()
virtual voidCallShowMembers(void* obj, TMemberInspector& insp) const
static Bool_tTVirtualStreamerInfo::CanDelete()
static Bool_tTVirtualStreamerInfo::CanOptimize()
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidClear(Option_t*)
virtual TObject*Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual Bool_tCompareContent(TClass* cl, TVirtualStreamerInfo* info, Bool_t warn, Bool_t complete, TFile* file)
virtual voidCompile()
voidComputeSize()
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual voidDeleteArray(void* p, Bool_t dtorOnly = kFALSE)
virtual voidDestructor(void* p, Bool_t dtorOnly = kFALSE)
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
static TVirtualStreamerInfo*TVirtualStreamerInfo::Factory()
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual voidForceWriteInfo(TFile* file, Bool_t force = kFALSE)
virtual TClassStreamer*GenEmulatedClassStreamer(const char* class_name, Bool_t silent)
virtual TVirtualCollectionProxy*GenEmulatedProxy(const char* class_name, Bool_t silent)
virtual Int_tGenerateHeaderFile(const char* dirname, const TList* subClasses = 0, const TList* extrainfos = 0)
virtual TClassStreamer*GenExplicitClassStreamer(const ROOT::TCollectionProxyInfo& info, TClass* cl)
virtual TVirtualCollectionProxy*GenExplicitProxy(const ROOT::TCollectionProxyInfo& info, TClass* cl)
virtual TClass*GetActualClass(const void* obj) const
virtual UInt_tGetCheckSum() const
UInt_tGetCheckSum(TClass::ECheckSum code) const
virtual TClass*GetClass() const
virtual Int_tGetClassVersion() const
static TStreamerElement*GetCurrentElement()
Int_tGetDataMemberOffset(TDataMember* dm, TMemberStreamer*& streamer) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual TStreamerElement*GetElem(Int_t id) const
virtual TStreamerElement*GetElement(Int_t id) const
static TStreamerBasicType*TVirtualStreamerInfo::GetElementCounter(const char* countName, TClass* cl)
virtual Int_tGetElementOffset(Int_t id) const
virtual TObjArray*GetElements() const
virtual const char*TObject::GetIconName() const
Int_tGetLength(Int_t id) const
ULong_tGetMethod(Int_t id) const
virtual const char*TNamed::GetName() const
Int_tGetNdata() const
Int_tGetNelement() const
Int_tGetNewType(Int_t id) const
virtual Int_tGetNumber() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Int_tGetOffset(const char*) const
virtual Int_tGetOffset(Int_t id) const
virtual Version_tGetOldVersion() const
virtual Int_tGetOnFileClassVersion() const
virtual Option_t*TObject::GetOption() const
TStreamerInfoActions::TActionSequence*GetReadMemberWiseActions(Bool_t forCollection)
TStreamerInfoActions::TActionSequence*GetReadObjectWiseActions()
virtual Int_tGetSize() const
Int_tGetSizeElements() const
virtual TStreamerElement*GetStreamerElement(const char* datamember, Int_t& offset) const
TStreamerElement*GetStreamerElementReal(Int_t i, Int_t j) const
static Bool_tTVirtualStreamerInfo::GetStreamMemberWise()
virtual const char*TNamed::GetTitle() const
Int_tGetType(Int_t id) const
virtual UInt_tTObject::GetUniqueID() const
Double_tGetValue(char* pointer, Int_t i, Int_t j, Int_t len) const
Double_tGetValueClones(TClonesArray* clones, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
Double_tGetValueSTL(TVirtualCollectionProxy* cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
Double_tGetValueSTLP(TVirtualCollectionProxy* cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
TStreamerInfoActions::TActionSequence*GetWriteMemberWiseActions(Bool_t forCollection)
TStreamerInfoActions::TActionSequence*GetWriteObjectWiseActions()
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tTVirtualStreamerInfo::IsBuilt() const
Bool_tTVirtualStreamerInfo::IsCompiled() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
Bool_tTVirtualStreamerInfo::IsOptimized() const
Int_tTVirtualStreamerInfo::IsRecovered() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidls(Option_t* option = "") const
Bool_tMatchLegacyCheckSum(UInt_t checksum) const
voidTObject::MayNotUse(const char* method) const
virtual void*New(void* obj = 0)
virtual void*NewArray(Long_t nElements, void* ary = 0)
virtual TVirtualStreamerInfo*NewInfo(TClass* cl)
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
static voidTVirtualStreamerInfo::Optimize(Bool_t opt = kTRUE)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
voidPrintValue(const char* name, char* pointer, Int_t i, Int_t len, Int_t lenmax = 1000) const
voidPrintValueClones(const char* name, TClonesArray* clones, Int_t i, Int_t eoffset, Int_t lenmax = 1000) const
voidPrintValueSTL(const char* name, TVirtualCollectionProxy* cont, Int_t i, Int_t eoffset, Int_t lenmax = 1000) const
virtual Int_tTObject::Read(const char* name)
Int_tReadBufferClones(TBuffer& b, TClonesArray* clones, Int_t nc, Int_t first, Int_t eoffset)
Int_tReadBufferSTL(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc, Int_t eoffset, Bool_t v7 = kTRUE)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
static voidTVirtualStreamerInfo::SetCanDelete(Bool_t opt = kTRUE)
virtual voidSetCheckSum(UInt_t checksum)
virtual voidSetClass(TClass* cl)
virtual voidSetClassVersion(Int_t vers)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTVirtualStreamerInfo::SetFactory(TVirtualStreamerInfo* factory)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetOnFileClassVersion(Int_t vers)
static Bool_tTVirtualStreamerInfo::SetStreamMemberWise(Bool_t enable = kTRUE)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
virtual voidTagFile(TFile* fFile)
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidUpdate(const TClass* oldClass, TClass* newClass)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
voidTVirtualStreamerInfo::ResetIsCompiled()
voidTVirtualStreamerInfo::SetIsCompiled()
private:
TStreamerInfo(const TStreamerInfo&)
voidAddReadAction(TStreamerInfoActions::TActionSequence* readSequence, Int_t index, TStreamerInfo::TCompInfo* compinfo)
voidAddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence* readSequence, Int_t index, TStreamerInfo::TCompInfo* compinfo)
voidAddWriteAction(TStreamerInfoActions::TActionSequence* writeSequence, Int_t index, TStreamerInfo::TCompInfo* compinfo)
voidAddWriteMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence* writeSequence, Int_t index, TStreamerInfo::TCompInfo* compinfo)
voidDestructorImpl(void* p, Bool_t dtorOnly)
voidGenerateDeclaration(FILE* fp, FILE* sfp, const TList* subClasses, Bool_t top = kTRUE)
UInt_tGenerateIncludes(FILE* fp, char* inclist, const TList* extrainfos)
voidInsertArtificialElements(const TObjArray* rules)
TStreamerInfo&operator=(const TStreamerInfo&)
static voidPrintValueAux(char* ladd, Int_t atype, TStreamerElement* aElement, Int_t aleng, Int_t* count)
Int_tWriteBuffer(TBuffer& b, char* pointer, Int_t first)
Int_tWriteBufferClones(TBuffer& b, TClonesArray* clones, Int_t nc, Int_t first, Int_t eoffset)
Int_tWriteBufferSTL(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc)
Int_tWriteBufferSTLPtrs(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc, Int_t first, Int_t eoffset)

Data Members

public:
enum { kCannotOptimize
kIgnoreTObjectStreamer
kRecovered
kNeedCheck
kIsCompiled
kBuildOldUsed
};
enum EReadWrite { kBase
kOffsetL
kOffsetP
kCounter
kCharStar
kChar
kShort
kInt
kLong
kFloat
kDouble
kDouble32
kLegacyChar
kUChar
kUShort
kUInt
kULong
kBits
kLong64
kULong64
kBool
kFloat16
kObject
kAny
kObjectp
kObjectP
kTString
kTObject
kTNamed
kAnyp
kAnyP
kAnyPnoVT
kSTLp
kSkip
kSkipL
kSkipP
kConv
kConvL
kConvP
kSTL
kSTLstring
kStreamer
kStreamLoop
kCache
kArtificial
kCacheNew
kCacheDelete
kMissing
};
enum TVirtualStreamerInfo::[unnamed] { kCannotOptimize
kIgnoreTObjectStreamer
kRecovered
kNeedCheck
kIsCompiled
kBuildOldUsed
kBuildRunning
};
enum TVirtualStreamerInfo::EReadWrite { kBase
kOffsetL
kOffsetP
kCounter
kCharStar
kChar
kShort
kInt
kLong
kFloat
kDouble
kDouble32
kUChar
kUShort
kUInt
kULong
kBits
kLong64
kULong64
kBool
kFloat16
kObject
kAny
kObjectp
kObjectP
kTString
kTObject
kTNamed
kAnyp
kAnyP
kAnyPnoVT
kSTLp
kSkip
kSkipL
kSkipP
kConv
kConvL
kConvP
kSTL
kSTLstring
kStreamer
kStreamLoop
kCache
kArtificial
kCacheNew
kCacheDelete
kMissing
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Bool_tTVirtualStreamerInfo::fIsCompiled! true if the StreamerInfo has been compiled (i.e. fully built, ready to use for streaming).
TStringTNamed::fNameobject identifier
TStringTNamed::fTitleobject title
static Bool_tTVirtualStreamerInfo::fgCanDeleteTrue if ReadBuffer can delete object
static TVirtualStreamerInfo*TVirtualStreamerInfo::fgInfoFactory
static Bool_tTVirtualStreamerInfo::fgOptimizeTrue if optimization on
static Bool_tTVirtualStreamerInfo::fgStreamMemberWiseTrue if the collections are to be stream "member-wise" (when possible).
private:
UInt_tfCheckSumchecksum of original class
TClass*fClass!pointer to class
Int_tfClassVersionClass version identifier
TStreamerInfo::TCompInfo*fComp![fNslots with less than fElements->GetEntries()*1.5 used] Compiled info
TStreamerInfo::TCompInfo**fCompFull![fElements->GetEntries()]
TStreamerInfo::TCompInfo**fCompOpt![fNdata]
TObjArray*fElementsArray of TStreamerElements
ULong_tfLiveCount! Number of outstanding pointer to this StreamerInfo.
Int_tfNVirtualInfoLoc! Number of virtual info location to update.
Int_tfNdata!number of optimized elements
Int_tfNfulldata!number of elements
Int_tfNslots!total numbrer of slots in fComp.
Int_tfNumber!Unique identifier
Version_tfOldVersion! Version of the TStreamerInfo object read from the file
Int_tfOnFileClassVersion!Class version identifier as stored on file.
TStreamerInfoActions::TActionSequence*fReadMemberWise! List of read action resulting from the compilation for use in member wise streaming.
TStreamerInfoActions::TActionSequence*fReadMemberWiseVecPtr! List of read action resulting from the compilation for use in member wise streaming.
TStreamerInfoActions::TActionSequence*fReadObjectWise! List of read action resulting from the compilation.
Int_tfSize!size of the persistent class
ULong_t*fVirtualInfoLoc![fNVirtualInfoLoc] Location of the pointer to the TStreamerInfo inside the object (when emulated)
TStreamerInfoActions::TActionSequence*fWriteMemberWise! List of write action resulting from the compilation for use in member wise streaming.
TStreamerInfoActions::TActionSequence*fWriteMemberWiseVecPtr! List of write action resulting from the compilation for use in member wise streaming.
TStreamerInfoActions::TActionSequence*fWriteObjectWise! List of write action resulting from the compilation.
static Int_tfgCountNumber of TStreamerInfo instances

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TStreamerInfo()
 Default ctor.
TStreamerInfo(TClass* cl)
 Create a TStreamerInfo object.
~TStreamerInfo()
void Build()
 Build the I/O data structure for the current class version.
 A list of TStreamerElement derived classes is built by scanning
 one by one the list of data members of the analyzed class.
void BuildCheck(TFile* file = 0)
 Check if built and consistent with the class dictionary.
 This method is called by TFile::ReadStreamerInfo.
void BuildEmulated(TFile* file)
 Create an Emulation TStreamerInfo object.
Bool_t BuildFor(const TClass* cl)
 Check if we can build this for foreign class - do we have some rules
 to do that

void BuildOld()
 rebuild the TStreamerInfo structure
void Clear(Option_t* )
 If opt cointains 'built', reset this StreamerInfo as if Build or BuildOld
 was never called on it (usefull to force their re-running).
void CallShowMembers(void* obj, TMemberInspector& insp) const
 Emulated a call ShowMembers() on the obj of this class type, passing insp and parent.
TObject * Clone(const char* newname = "") const
 Make a clone of an object using the Streamer facility.
 If newname is specified, this will be the name of the new object.
Bool_t CompareContent(TClass* cl, TVirtualStreamerInfo* info, Bool_t warn, Bool_t complete, TFile* file)
 Return True if the current StreamerInfo in cl or info is equivalent to this TStreamerInfo.
 'Equivalent' means the same number of persistent data member which the same actual C++ type and
 the same name.
 if 'warn' is true, Warning message are printed to explicit the differences.
 if 'complete' is false, stop at the first error, otherwise continue until all members have been checked.
void ComputeSize()
 Compute total size of all persistent elements of the class
void ForceWriteInfo(TFile* file, Bool_t force = kFALSE)
 -- Recursively mark streamer infos for writing to a file.

 Will force this TStreamerInfo to the file and also
 all the dependencies.

 If argument force > 0 the loop on class dependencies is forced.

 This function is called when streaming a class that contains
 a null pointer. In this case, the TStreamerInfo for the class
 with the null pointer must be written to the file and also all
 the TStreamerInfo of all the classes referenced by the class.

--
 We must be given a file to write to.
TClass * GetActualClass(const void* obj) const
 Assuming that obj points to (the part of) an object that is of the
 type described by this streamerInfo, return the actual type of the
 object (i.e. the type described by this streamerInfo is a base class
 of the actual type of the object.
 This routine should only be called if the class decribed by this
 StreamerInfo is 'emulated'.
Bool_t MatchLegacyCheckSum(UInt_t checksum) const
 Return true if the checksum passed as argument is one of the checksum
 value produced by the older checksum calulcation algorithm.
UInt_t GetCheckSum(TClass::ECheckSum code) const
 Recalculate the checksum of this TStreamerInfo based on its code.

 The class ckecksum is used by the automatic schema evolution algorithm
 to uniquely identify a class version.
 The check sum is built from the names/types of base classes and
 data members.
 Original algorithm from Victor Perevovchikov (perev@bnl.gov).

 The valid range of code is determined by ECheckSum

 kNoEnum:  data members of type enum are not counted in the checksum
 kNoRange: return the checksum of data members and base classes, not including the ranges and array size found in comments.
 kWithTypeDef: use the sugared type name in the calculation.

 This is needed for backward compatibility.

 WARNING: this function must be kept in sync with TClass::GetCheckSum.
 They are both used to handle backward compatibility and should both return the same values.
 TStreamerInfo uses the information in TStreamerElement while TClass uses the information
 from TClass::GetListOfBases and TClass::GetListOfDataMembers.
void GenerateDeclaration(FILE* fp, FILE* sfp, const TList* subClasses, Bool_t top = kTRUE)
 Write the Declaration of class.
UInt_t GenerateIncludes(FILE* fp, char* inclist, const TList* extrainfos)
 Add to the header file, the #include need for this class
Int_t GenerateHeaderFile(const char* dirname, const TList* subClasses = 0, const TList* extrainfos = 0)
 Generate header file for the class described by this TStreamerInfo
 the function is called by TFile::MakeProject for each class in the file
Int_t GetDataMemberOffset(TDataMember* dm, TMemberStreamer*& streamer) const
 Compute data member offset
 return pointer to the Streamer function if one exists
Int_t GetOffset(const char* ) const
 return the offset of the data member as indicated by this StreamerInfo
Int_t GetSize() const
  return total size of all persistent elements of the class (with offsets)
Int_t GetSizeElements() const
  return total size of all persistent elements of the class
  use GetSize if you want to get the real size in memory
TStreamerElement* GetStreamerElement(const char* datamember, Int_t& offset) const
 Return the StreamerElement of "datamember" inside our
 class or any of its base classes.  The offset information
 contained in the StreamerElement is related to its immediately
 containing class, so we return in 'offset' the offset inside
 our class.
TStreamerElement* GetStreamerElementReal(Int_t i, Int_t j) const
  This routine is obsolete and should not longer be used.

  TStreamerInfo  holds two types of data structures
    -TObjArray* fElements; containing the list of all TStreamerElement
       objects for this class version.
    -ULong_t*  fElem;  containing the preprocessed information
       by TStreamerInfo::Compile In case consecutive data members
       are of the same type, the Compile function declares the consecutive
       elements as one single element in fElems.

  example with the class TAttLine
   TClass::GetClass("TAttLine")->GetStreamerInfo()->ls(); produces;
      StreamerInfo for class: TAttLine, version=1
       short        fLineColor      offset=  4 type= 2 line color
       short        fLineStyle      offset=  6 type= 2 line style
       short        fLineWidth      offset=  8 type= 2 line width
        i= 0, fLineColor      type= 22, offset=  4, len=3, method=0
  For I/O implementations (eg. XML) , one has to know the original name
  of the data member. This function can be used to return a pointer
  to the original TStreamerElement object corresponding to the j-th
  element of a compressed array in fElems.

  parameters description:
    - i: the serial number in array fElem
    - j: the element number in the array of consecutive types
  In the above example the class TAttLine has 3 consecutive data members
  of the same type "short". Compile makes one single array of 3 elements.
  To access the TStreamerElement for the second element
  of this array, one can call:
     TStreamerElement *el = GetStreamerElementReal(0,1);
     const char* membername = el->GetName();
  This function is typically called from TBuffer, TXmlBuffer
void InsertArtificialElements(const TObjArray* rules)
 Insert new members as expressed in the array of TSchemaRule(s).
void ls(Option_t* option = "") const
  List the TStreamerElement list and also the precomputed tables
  if option contains the string "incOrig", also prints the original
  (non-optimized elements in the list of compiled elements.
void* New(void* obj = 0)
 An emulated object is created at address obj, if obj is null we
 allocate memory for the object.
void* NewArray(Long_t nElements, void* ary = 0)
 An array of emulated objects is created at address ary, if ary is null,
 we allocate memory for the array.
void DestructorImpl(void* p, Bool_t dtorOnly)
 Internal part of the destructor.
 Destruct each of the datamembers in the same order
 as the implicit destructor would.
void Destructor(void* p, Bool_t dtorOnly = kFALSE)
 Emulated destructor for this class.
 An emulated object is destroyed at address p.
 Destruct each of the datamembers in the same order
 as the implicit destructor would.
void DeleteArray(void* p, Bool_t dtorOnly = kFALSE)
 Destroy an array of emulated objects, with optional delete.
void PrintValue(const char* name, char* pointer, Int_t i, Int_t len, Int_t lenmax = 1000) const
  print value of element i in object at pointer
  The function may be called in two ways:
    -method1  len < 0
           i is assumed to be the TStreamerElement number i in StreamerInfo
    -method2  len >= 0
           i is the type
           address of variable is directly pointer.
           len is the number of elements to be printed starting at pointer.
void PrintValueClones(const char* name, TClonesArray* clones, Int_t i, Int_t eoffset, Int_t lenmax = 1000) const
  print value of element i in a TClonesArray
void PrintValueSTL(const char* name, TVirtualCollectionProxy* cont, Int_t i, Int_t eoffset, Int_t lenmax = 1000) const
  print value of element i in a TClonesArray
void Streamer(TBuffer& )
 Stream an object of class TStreamerInfo.
void TagFile(TFile* fFile)
 Mark the classindex of the current file as using this TStreamerInfo
 This function is deprecated and its functionality is now done by
 the overloads of TBuffer::TagStreamerInfo.
void PrintValueAux(char* ladd, Int_t atype, TStreamerElement* aElement, Int_t aleng, Int_t* count)
  print value of element  in object at pointer, type atype, leng aleng or *count
  The function may be called in two ways:
    -method1  len < 0
           i is assumed to be the TStreamerElement number i in StreamerInfo
    -method2  len >= 0
           i is the type
           address of variable is directly pointer.
           len is the number of elements to be printed starting at pointer.
void Update(const TClass* oldClass, TClass* newClass)
function called by the TClass constructor when replacing an emulated class
by the real class
GenEmulatedProxy(const char* class_name, Bool_t silent)
 Generate emulated collection proxy for a given class.
GenEmulatedClassStreamer(const char* class_name, Bool_t silent)
 Generate emulated class streamer for a given collection class.
GenExplicitProxy(const ROOT::TCollectionProxyInfo& info, TClass* cl)
 Generate proxy from static functions.
GenExplicitClassStreamer(const ROOT::TCollectionProxyInfo& info, TClass* cl)
 Generate class streamer from static functions.
TStreamerInfo(const TStreamerInfo& )
TStreamerInfo& operator=(const TStreamerInfo& )
void AddReadAction(TStreamerInfoActions::TActionSequence* readSequence, Int_t index, TStreamerInfo::TCompInfo* compinfo)
void AddWriteAction(TStreamerInfoActions::TActionSequence* writeSequence, Int_t index, TStreamerInfo::TCompInfo* compinfo)
void AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence* readSequence, Int_t index, TStreamerInfo::TCompInfo* compinfo)
void AddWriteMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence* writeSequence, Int_t index, TStreamerInfo::TCompInfo* compinfo)
void Compile()
TClass * GetClass() const
{return fClass;}
UInt_t GetCheckSum() const
{return fCheckSum;}
Int_t GetClassVersion() const
{return fClassVersion;}
TObjArray * GetElements() const
{return fElements;}
TStreamerElement * GetElem(Int_t id) const
{return fComp[id].fElem;}
TStreamerElement * GetElement(Int_t id) const
{return (TStreamerElement*)fElements->At(id);}
Int_t GetElementOffset(Int_t id) const
{return fCompFull[id]->fOffset;}
TStreamerInfoActions::TActionSequence * GetReadMemberWiseActions(Bool_t forCollection)
{ return forCollection ? fReadMemberWiseVecPtr : fReadMemberWise; }
TStreamerInfoActions::TActionSequence * GetReadObjectWiseActions()
{ return fReadObjectWise; }
TStreamerInfoActions::TActionSequence * GetWriteMemberWiseActions(Bool_t forCollection)
{ return forCollection ? fWriteMemberWiseVecPtr : fWriteMemberWise; }
TStreamerInfoActions::TActionSequence * GetWriteObjectWiseActions()
{ return fWriteObjectWise; }
Int_t GetNdata() const
{return fNdata;}
Int_t GetNelement() const
{ return fElements->GetEntries(); }
Int_t GetNumber() const
{return fNumber;}
Int_t GetLength(Int_t id) const
{return fComp[id].fLength;}
ULong_t GetMethod(Int_t id) const
{return fComp[id].fMethod;}
Int_t GetNewType(Int_t id) const
{return fComp[id].fNewType;}
Int_t GetOffset(const char* ) const
Version_t GetOldVersion() const
{return fOldVersion;}
Int_t GetOnFileClassVersion() const
Int_t GetType(Int_t id) const
{return fComp[id].fType;}
Double_t GetValue(char* pointer, Int_t i, Int_t j, Int_t len) const
{ return GetTypedValue<Double_t>(pointer, i, j, len); }
Double_t GetValueClones(TClonesArray* clones, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
{ return GetTypedValueClones<Double_t>(clones, i, j, k, eoffset); }
Double_t GetValueSTL(TVirtualCollectionProxy* cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
{ return GetTypedValueSTL<Double_t>(cont, i, j, k, eoffset); }
Double_t GetValueSTLP(TVirtualCollectionProxy* cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
{ return GetTypedValueSTLP<Double_t>(cont, i, j, k, eoffset); }
TVirtualStreamerInfo * NewInfo(TClass* cl)
{return new TStreamerInfo(cl);}
Int_t ReadBufferClones(TBuffer& b, TClonesArray* clones, Int_t nc, Int_t first, Int_t eoffset)
Int_t ReadBufferSTL(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc, Int_t eoffset, Bool_t v7 = kTRUE)
void SetCheckSum(UInt_t checksum)
{fCheckSum = checksum;}
void SetClass(TClass* cl)
{fClass = cl;}
void SetClassVersion(Int_t vers)
void SetOnFileClassVersion(Int_t vers)
Int_t WriteBuffer(TBuffer& b, char* pointer, Int_t first)
 Try to remove those functions from the public interface.
Int_t WriteBufferClones(TBuffer& b, TClonesArray* clones, Int_t nc, Int_t first, Int_t eoffset)
Int_t WriteBufferSTL(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc)
Int_t WriteBufferSTLPtrs(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc, Int_t first, Int_t eoffset)
TStreamerElement * GetCurrentElement()