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 teh 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 voidTVirtualStreamerInfo::Build()
virtual voidBuildCheck()
virtual voidTVirtualStreamerInfo::BuildCheck()
virtual voidBuildEmulated(TFile* file)
virtual voidTVirtualStreamerInfo::BuildEmulated(TFile* file)
virtual Bool_tBuildFor(const TClass* cl)
virtual Bool_tTVirtualStreamerInfo::BuildFor(const TClass* cl)
virtual voidBuildOld()
virtual voidTVirtualStreamerInfo::BuildOld()
static Bool_tTVirtualStreamerInfo::CanDelete()
static Bool_tTVirtualStreamerInfo::CanOptimize()
static TClass*Class()
static TClass*TVirtualStreamerInfo::Class()
virtual const char*TObject::ClassName() const
virtual voidClear(Option_t*)
virtual voidTVirtualStreamerInfo::Clear(Option_t*)
virtual voidTNamed::Clear(Option_t* option = "")
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual Bool_tCompareContent(TClass* cl, TVirtualStreamerInfo* info, Bool_t warn, Bool_t complete)
virtual Bool_tTVirtualStreamerInfo::CompareContent(TClass* cl, TVirtualStreamerInfo* info, Bool_t warn, Bool_t complete)
virtual voidCompile()
virtual voidTVirtualStreamerInfo::Compile()
voidComputeSize()
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual voidDeleteArray(void* p, Bool_t dtorOnly = kFALSE)
virtual voidTVirtualStreamerInfo::DeleteArray(void* p, Bool_t dtorOnly = kFALSE)
virtual voidDestructor(void* p, Bool_t dtorOnly = kFALSE)
virtual voidTVirtualStreamerInfo::Destructor(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 voidTVirtualStreamerInfo::ForceWriteInfo(TFile* file, Bool_t force = kFALSE)
virtual TClassStreamer*GenEmulatedClassStreamer(const char* class_name)
virtual TClassStreamer*TVirtualStreamerInfo::GenEmulatedClassStreamer(const char* class_name)
virtual TVirtualCollectionProxy*GenEmulatedProxy(const char* class_name)
virtual TVirtualCollectionProxy*TVirtualStreamerInfo::GenEmulatedProxy(const char* class_name)
virtual Int_tGenerateHeaderFile(const char* dirname, const TList* subClasses = 0)
virtual Int_tTVirtualStreamerInfo::GenerateHeaderFile(const char* dirname, const TList* subClasses = 0)
virtual TClassStreamer*GenExplicitClassStreamer(const ROOT::TCollectionProxyInfo& info, TClass* cl)
virtual TClassStreamer*TVirtualStreamerInfo::GenExplicitClassStreamer(const ROOT::TCollectionProxyInfo& info, TClass* cl)
virtual TVirtualCollectionProxy*GenExplicitProxy(const ROOT::TCollectionProxyInfo& info, TClass* cl)
virtual TVirtualCollectionProxy*TVirtualStreamerInfo::GenExplicitProxy(const ROOT::TCollectionProxyInfo& info, TClass* cl)
virtual UInt_tGetCheckSum() const
virtual UInt_tTVirtualStreamerInfo::GetCheckSum() const
UInt_tGetCheckSum(UInt_t code) const
virtual TClass*GetClass() const
virtual TClass*TVirtualStreamerInfo::GetClass() const
virtual Int_tGetClassVersion() const
virtual Int_tTVirtualStreamerInfo::GetClassVersion() const
static TStreamerElement*GetCurrentElement()
Int_tGetDataMemberOffset(TDataMember* dm, TMemberStreamer*& streamer) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
static TStreamerBasicType*TVirtualStreamerInfo::GetElementCounter(const char* countName, TClass* cl)
virtual TObjArray*GetElements() const
virtual TObjArray*TVirtualStreamerInfo::GetElements() const
virtual ULong_t*GetElems() const
virtual ULong_t*TVirtualStreamerInfo::GetElems() const
virtual const char*TObject::GetIconName() const
Int_t*GetLengths() const
ULong_t*GetMethods() const
virtual const char*TNamed::GetName() const
virtual const char*TObject::GetName() const
Int_tGetNdata() const
Int_t*GetNewTypes() const
virtual Int_tGetNumber() const
virtual Int_tTVirtualStreamerInfo::GetNumber() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Int_tGetOffset(const char*) const
virtual Int_tTVirtualStreamerInfo::GetOffset(const char*) const
virtual Int_t*GetOffsets() const
virtual Int_t*TVirtualStreamerInfo::GetOffsets() const
virtual Version_tGetOldVersion() const
virtual Version_tTVirtualStreamerInfo::GetOldVersion() const
virtual Int_tGetOnFileClassVersion() const
virtual Int_tTVirtualStreamerInfo::GetOnFileClassVersion() const
virtual Option_t*TObject::GetOption() const
virtual Int_tGetSize() const
virtual Int_tTVirtualStreamerInfo::GetSize() const
Int_tGetSizeElements() const
virtual TStreamerElement*GetStreamerElement(const char* datamember, Int_t& offset) const
virtual TStreamerElement*TVirtualStreamerInfo::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
virtual const char*TObject::GetTitle() const
Int_t*GetTypes() 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
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual ULong_tTObject::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
virtual TClass*TVirtualStreamerInfo::IsA() const
virtual Bool_tIsBuilt() const
virtual Bool_tTVirtualStreamerInfo::IsBuilt() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tIsOptimized() const
virtual Bool_tTVirtualStreamerInfo::IsOptimized() const
virtual Int_tIsRecovered() const
virtual Int_tTVirtualStreamerInfo::IsRecovered() const
virtual Bool_tTNamed::IsSortable() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidls(Option_t* option = "") const
virtual voidTVirtualStreamerInfo::ls(Option_t* option = "") const
virtual voidTNamed::ls(Option_t* option = "") const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual void*New(void* obj = 0)
virtual void*TVirtualStreamerInfo::New(void* obj = 0)
virtual void*NewArray(Long_t nElements, void* ary = 0)
virtual void*TVirtualStreamerInfo::NewArray(Long_t nElements, void* ary = 0)
virtual TVirtualStreamerInfo*NewInfo(TClass* cl)
virtual TVirtualStreamerInfo*TVirtualStreamerInfo::NewInfo(TClass* cl)
virtual Bool_tTObject::Notify()
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)
TNamed&TNamed::operator=(const TNamed& rhs)
TObject&TObject::operator=(const TObject& rhs)
static voidTVirtualStreamerInfo::Optimize(Bool_t opt = kTRUE)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual voidTObject::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 first, Int_t eoffset)
Int_tReadBufferSTLPtrs(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc, Int_t first, Int_t eoffset)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& 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 voidTVirtualStreamerInfo::SetCheckSum(UInt_t checksum)
virtual voidSetClass(TClass* cl)
virtual voidTVirtualStreamerInfo::SetClass(TClass* cl)
virtual voidSetClassVersion(Int_t vers)
virtual voidTVirtualStreamerInfo::SetClassVersion(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)
static Bool_tTVirtualStreamerInfo::SetStreamMemberWise(Bool_t enable = kTRUE)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual voidTVirtualStreamerInfo::ShowMembers(TMemberInspector& insp, char* parent)
virtual voidTNamed::ShowMembers(TMemberInspector& insp, char* parent)
virtual voidTObject::ShowMembers(TMemberInspector& insp, char* parent)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer& b)
virtual voidTVirtualStreamerInfo::Streamer(TBuffer& b)
virtual voidTNamed::Streamer(TBuffer& b)
virtual voidTObject::Streamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
virtual voidTagFile(TFile* fFile)
virtual voidTVirtualStreamerInfo::TagFile(TFile* fFile)
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidUpdate(const TClass* oldClass, TClass* newClass)
virtual voidTVirtualStreamerInfo::Update(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
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_t first, Int_t eoffset)
Int_tWriteBufferSTLPtrs(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc, Int_t first, Int_t eoffset)
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
TVirtualStreamerInfo&TVirtualStreamerInfo::operator=(const TVirtualStreamerInfo&)
private:
TStreamerInfo(const TStreamerInfo&)
voidGenerateDeclaration(FILE* fp, FILE* sfp, const TList* subClasses, Bool_t top = kTRUE)
UInt_tGenerateIncludes(FILE* fp, char* inclist)
static Double_tGetValueAux(Int_t type, void* ladd, int k, Int_t len)
voidInsertArtificialElements(const TObjArray* rules)
TStreamerInfo&operator=(const TStreamerInfo&)
static voidPrintValueAux(char* ladd, Int_t atype, TStreamerElement* aElement, Int_t aleng, Int_t* count)

Data Members

private:
enum { kCannotOptimize
kIgnoreTObjectStreamer
kRecovered
kNeedCheck
};
enum 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 TVirtualStreamerInfo::[unnamed] { kCannotOptimize
kIgnoreTObjectStreamer
kRecovered
kNeedCheck
};
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:
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![fNdata] additional info
ULong_t*fElem![fNdata]
TObjArray*fElementsArray of TStreamerElements
Bool_tfIsBuilt! true if the TStreamerInfo has been 'built'
Int_t*fLength![fNdata]
ULong_t*fMethod![fNdata]
Int_tfNdata!number of optmized types
Int_t*fNewType![fNdata]
Int_tfNumber!Unique identifier
Int_t*fOffset![fNdata]
Version_tfOldVersion! Version of the TStreamerInfo object read from the file
Int_tfOnFileClassVersion!Class version identifier as stored on file.
Bool_tfOptimized! true if has been optimized
Int_tfSize!size of the persistent class
Int_t*fType![fNdata]
static Int_tfgCountNumber of TStreamerInfo instances
static TStreamerElement*fgElementPointer to current TStreamerElement

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()
 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).
Bool_t CompareContent(TClass* cl, TVirtualStreamerInfo* info, Bool_t warn, Bool_t complete)
 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 Compile()
 loop on the TStreamerElement list
 regroup members with same type
 Store predigested information into local arrays. This saves a huge amount
 of time compared to an explicit iteration on all elements.
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.
UInt_t GetCheckSum(UInt_t 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.
 Algorithm from Victor Perevovchikov (perev@bnl.gov).

 if code==1 data members of type enum are not counted in the checksum
 if code==2 return the checksum of data members and base classes, not including the ranges and array size found in comments.
            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)
 Add to the header file, the #include need for this class
Int_t GenerateHeaderFile(const char* dirname, const TList* subClasses = 0)
 Generate header file for the class described by this TStreamerInfo
 the function is called by TFile::MakeProject for each class in the file
TStreamerElement * GetCurrentElement()
static function returning a pointer to the current TStreamerElement
fgElement points to the current TStreamerElement being read in ReadBuffer
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
  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
Double_t GetValueAux(Int_t type, void* ladd, int k, Int_t len)
 Get the value from inside a collection.
Double_t GetValue(char* pointer, Int_t i, Int_t j, Int_t len) const
  return 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.
Double_t GetValueClones(TClonesArray* clones, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
  return value of element i in object number j in a TClonesArray and eventually
 element k in a sub-array.
Double_t GetValueSTL(TVirtualCollectionProxy* cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
  return value of element i in object number j in a TClonesArray and eventually
 element k in a sub-array.
Double_t GetValueSTLP(TVirtualCollectionProxy* cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
  return value of element i in object number j in a TClonesArray and eventually
 element k in a sub-array.
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
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 Destructor(void* p, Bool_t dtorOnly = kFALSE)
  emulated destructor for this class.
  An emulated object is destroyed at address p
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& b)
 Stream an object of class TStreamerInfo.
void TagFile(TFile* fFile)
 Mark the classindex of the current file as using this TStreamerInfo
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)
 Generate emulated collection proxy for a given class.
GenEmulatedClassStreamer(const char* class_name)
 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.
TCompInfo& operator=(const TStreamerInfo& )
TStreamerInfo(const TStreamerInfo&)
TClass * GetClass() const
{return fClass;}
UInt_t GetCheckSum() const
{return fCheckSum;}
Int_t GetClassVersion() const
{return fClassVersion;}
TObjArray * GetElements() const
{return fElements;}
ULong_t * GetElems() const
{return fElem;}
Int_t GetNdata() const
{return fNdata;}
Int_t GetNumber() const
{return fNumber;}
Int_t * GetLengths() const
{return fLength;}
ULong_t * GetMethods() const
{return fMethod;}
Int_t * GetNewTypes() const
{return fNewType;}
Int_t * GetOffsets() const
{return fOffset;}
Version_t GetOldVersion() const
{return fOldVersion;}
Int_t GetOnFileClassVersion() const
Int_t * GetTypes() const
{return fType;}
Bool_t IsBuilt() const
{ return fIsBuilt; }
Bool_t IsOptimized() const
{return fOptimized;}
Int_t IsRecovered() const
{return TestBit(kRecovered);}
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 first, Int_t eoffset)
Int_t ReadBufferSTLPtrs(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc, Int_t first, Int_t eoffset)
void SetCheckSum(UInt_t checksum)
{fCheckSum = checksum;}
void SetClass(TClass* cl)
{fClass = cl;}
void SetClassVersion(Int_t vers)
Int_t WriteBuffer(TBuffer& b, char* pointer, Int_t first)
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 first, Int_t eoffset)
Int_t WriteBufferSTLPtrs(TBuffer& b, TVirtualCollectionProxy* cont, Int_t nc, Int_t first, Int_t eoffset)