Logo ROOT   6.10/00
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TStreamerInfo.h
Go to the documentation of this file.
1 // @(#)root/io:$Id$
2 // Author: Rene Brun 12/10/2000
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TStreamerInfo
13 #define ROOT_TStreamerInfo
14 
15 #include <atomic>
16 
17 #include "TVirtualStreamerInfo.h"
18 
19 #include "ThreadLocalStorage.h"
20 
22 
23 /**
24 \class TStreamerInfo
25 \ingroup IO
26 Describe Streamer information for one class version
27 */
28 
29 class TFile;
30 class TClass;
31 class TClonesArray;
32 class TDataMember;
33 class TMemberStreamer;
34 class TStreamerElement;
35 class TStreamerBasicType;
36 class TClassStreamer;
37 class TVirtualArray;
38 namespace ROOT { namespace Detail { class TCollectionProxyInfo; } }
39 namespace ROOT { class TSchemaRule; }
40 
41 namespace TStreamerInfoActions { class TActionSequence; }
42 
44 
45  class TCompInfo {
46  // Class used to cache information (see fComp)
47  private:
48  // TCompInfo(const TCompInfo&) = default;
49  // TCompInfo& operator=(const TCompInfo&) = default;
50  public:
55  TStreamerElement *fElem; ///< Not Owned
57  TClass *fClass; ///< Not Owned
58  TClass *fNewClass; ///< Not Owned
60  TMemberStreamer *fStreamer; ///< Not Owned
61  TCompInfo() : fType(-1), fNewType(0), fOffset(0), fLength(0), fElem(0), fMethod(0),
62  fClass(0), fNewClass(0), fClassName(), fStreamer(0) {};
63  ~TCompInfo() {};
64  void Update(const TClass *oldcl, TClass *newcl);
65  };
67 
68 public:
69  // make the opaque pointer public.
71 
72 protected:
73  //---------------------------------------------------------------------------
74  // Adapter class used to handle streaming collection of pointers
75  //---------------------------------------------------------------------------
77  {
78  public:
80  fProxy( proxy ) {}
81 
82  char* operator[]( UInt_t idx ) const
83  {
84  char **el = (char**)fProxy->At(idx);
85  return *el;
86  }
87  private:
89  };
90 
91 private:
92  UInt_t fCheckSum; ///<Checksum of original class
93  Int_t fClassVersion; ///<Class version identifier
94  Int_t fOnFileClassVersion;///<!Class version identifier as stored on file.
95  Int_t fNumber; ///<!Unique identifier
96  Int_t fSize; ///<!size of the persistent class
97  Int_t fNdata; ///<!number of optimized elements
98  Int_t fNfulldata; ///<!number of elements
99  Int_t fNslots; ///<!total numbrer of slots in fComp.
100  TCompInfo *fComp; ///<![fNslots with less than fElements->GetEntries()*1.5 used] Compiled info
101  TCompInfo **fCompOpt; ///<![fNdata]
102  TCompInfo **fCompFull; ///<![fElements->GetEntries()]
103  TClass *fClass; ///<!pointer to class
104  TObjArray *fElements; ///<Array of TStreamerElements
105  Version_t fOldVersion; ///<! Version of the TStreamerInfo object read from the file
106  Int_t fNVirtualInfoLoc; ///<! Number of virtual info location to update.
107  ULong_t *fVirtualInfoLoc; ///<![fNVirtualInfoLoc] Location of the pointer to the TStreamerInfo inside the object (when emulated)
108  std::atomic<ULong_t> fLiveCount; ///<! Number of outstanding pointer to this StreamerInfo.
109  TStreamerInfoActions::TActionSequence *fReadObjectWise; ///<! List of read action resulting from the compilation.
110  TStreamerInfoActions::TActionSequence *fReadMemberWise; ///<! List of read action resulting from the compilation for use in member wise streaming.
111  TStreamerInfoActions::TActionSequence *fReadMemberWiseVecPtr; ///<! List of read action resulting from the compilation for use in member wise streaming.
112  TStreamerInfoActions::TActionSequence *fWriteObjectWise; ///<! List of write action resulting from the compilation.
113  TStreamerInfoActions::TActionSequence *fWriteMemberWise; ///<! List of write action resulting from the compilation for use in member wise streaming.
114  TStreamerInfoActions::TActionSequence *fWriteMemberWiseVecPtr; ///<! List of write action resulting from the compilation for use in member wise streaming.
115 
116  static std::atomic<Int_t> fgCount; ///<Number of TStreamerInfo instances
117 
118  template <typename T> static T GetTypedValueAux(Int_t type, void *ladd, int k, Int_t len);
119  static void PrintValueAux(char *ladd, Int_t atype, TStreamerElement * aElement, Int_t aleng, Int_t *count);
120 
121  UInt_t GenerateIncludes(FILE *fp, char *inclist, const TList *extrainfos);
122  void GenerateDeclaration(FILE *fp, FILE *sfp, const TList *subClasses, Bool_t top = kTRUE);
123  void InsertArtificialElements(std::vector<const ROOT::TSchemaRule*> &rules);
124  void DestructorImpl(void* p, Bool_t dtorOnly);
125 
126 private:
127  TStreamerInfo(const TStreamerInfo&); // TStreamerInfo are copiable. Not Implemented.
128  TStreamerInfo& operator=(const TStreamerInfo&); // TStreamerInfo are copiable. Not Implemented.
129  void AddReadAction(TStreamerInfoActions::TActionSequence *readSequence, Int_t index, TCompInfo *compinfo);
130  void AddWriteAction(TStreamerInfoActions::TActionSequence *writeSequence, Int_t index, TCompInfo *compinfo);
133 
134 public:
135 
136  /// Status bits
137  enum { kCannotOptimize = BIT(12),
138  kIgnoreTObjectStreamer = BIT(13), ///< Eventhough BIT(13) is taken up by TObject (to preserverse forward compatibility)
143  };
144 
145 /// EReadWrite Enumerator
146 /// | Enum Constant | Description |
147 /// |----------|--------------------|
148 /// | kBase | Base class element |
149 /// | kOffsetL | Fixed size array |
150 /// | kOffsetP | Pointer to object |
151 /// | kCounter | Counter for array size |
152 /// | kCharStar| Pointer to array of char |
153 /// | kLegacyChar | Equal to TDataType's kchar |
154 /// | kBits | TObject::fBits in case of a referenced object |
155 /// | kObject | Class derived from TObject, or for TStreamerSTL::fCtype non-pointer elements |
156 /// | kObjectp | Class* derived from TObject and with comment field //->Class, or for TStreamerSTL::fCtype: pointer elements |
157 /// | kObjectP | Class* derived from TObject and with NO comment field //->Class |
158 /// | kAny | Class not derived from TObject |
159 /// | kAnyp | Class* not derived from TObject with comment field //->Class |
160 /// | kAnyP | Class* not derived from TObject with NO comment field //->Class |
161 /// | kAnyPnoVT | Class* not derived from TObject with NO comment field //->Class and Class has NO virtual table |
162 /// | kSTLp | Pointer to STL container |
163 /// | kTString | TString, special case |
164 /// | kTObject | TObject, special case |
165 /// | kTNamed | TNamed , special case |
166 /// | kCache | Cache the value in memory than is not part of the object but is accessible via a SchemaRule |
167  enum EReadWrite {
168  kBase = 0, kOffsetL = 20, kOffsetP = 40, kCounter = 6, kCharStar = 7,
169  kChar = 1, kShort = 2, kInt = 3, kLong = 4, kFloat = 5,
171  kLegacyChar = 10, /// Equal to TDataType's kchar
172  kUChar = 11, kUShort = 12, kUInt = 13, kULong = 14, kBits = 15,
173  kLong64 = 16, kULong64 = 17, kBool = 18, kFloat16 = 19,
174  kObject = 61, kAny = 62, kObjectp = 63, kObjectP = 64, kTString = 65,
175  kTObject = 66, kTNamed = 67, kAnyp = 68, kAnyP = 69, kAnyPnoVT = 70,
176  kSTLp = 71,
177  kSkip = 100, kSkipL = 120, kSkipP = 140,
178  kConv = 200, kConvL = 220, kConvP = 240,
179  kSTL = 300, kSTLstring = 365,
180  kStreamer = 500, kStreamLoop = 501,
181  kCache = 600, /// Cache the value in memory than is not part of the object but is accessible via a SchemaRule
182  kArtificial = 1000,
183  kCacheNew = 1001,
184  kCacheDelete = 1002,
186  kMissing = 99999
187  };
188 
189  TStreamerInfo();
190  TStreamerInfo(TClass *cl);
191  virtual ~TStreamerInfo();
192  void Build();
193  void BuildCheck(TFile *file = 0);
194  void BuildEmulated(TFile *file);
195  void BuildOld();
196  virtual Bool_t BuildFor( const TClass *cl );
197  void CallShowMembers(const void* obj, TMemberInspector &insp, Bool_t isTransient) const;
198  void Clear(Option_t *);
199  TObject *Clone(const char *newname = "") const;
200  Bool_t CompareContent(TClass *cl,TVirtualStreamerInfo *info, Bool_t warn, Bool_t complete, TFile *file);
201  void Compile();
202  void ComputeSize();
203  void ForceWriteInfo(TFile *file, Bool_t force=kFALSE);
204  Int_t GenerateHeaderFile(const char *dirname, const TList *subClasses = 0, const TList *extrainfos = 0);
205  TClass *GetActualClass(const void *obj) const;
206  TClass *GetClass() const {return fClass;}
207  UInt_t GetCheckSum() const {return fCheckSum;}
210  Int_t GetDataMemberOffset(TDataMember *dm, TMemberStreamer *&streamer) const;
211  TObjArray *GetElements() const {return fElements;}
212  TStreamerElement *GetElem(Int_t id) const {return fComp[id].fElem;} // Return the element for the list of optimized elements (max GetNdata())
213  TStreamerElement *GetElement(Int_t id) const {return (TStreamerElement*)fElements->At(id);} // Return the element for the complete list of elements (max GetElements()->GetEntries())
219  Int_t GetNdata() const {return fNdata;}
220  Int_t GetNelement() const { return fElements->GetEntries(); }
221  Int_t GetNumber() const {return fNumber;}
222  Int_t GetLength(Int_t id) const {return fComp[id].fLength;}
223  ULong_t GetMethod(Int_t id) const {return fComp[id].fMethod;}
224  Int_t GetNewType(Int_t id) const {return fComp[id].fNewType;}
225  Int_t GetOffset(const char *) const;
226  Int_t GetOffset(Int_t id) const {return fComp[id].fOffset;}
229  Int_t GetSize() const;
230  Int_t GetSizeElements() const;
231  TStreamerElement *GetStreamerElement(const char*datamember, Int_t& offset) const;
233  Int_t GetType(Int_t id) const {return fComp[id].fType;}
234  template <typename T> T GetTypedValue(char *pointer, Int_t i, Int_t j, Int_t len) const;
235  template <typename T> T GetTypedValueClones(TClonesArray *clones, Int_t i, Int_t j, Int_t k, Int_t eoffset) const;
236  template <typename T> T GetTypedValueSTL(TVirtualCollectionProxy *cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const;
237  template <typename T> T GetTypedValueSTLP(TVirtualCollectionProxy *cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const;
238  Double_t GetValue(char *pointer, Int_t i, Int_t j, Int_t len) const { return GetTypedValue<Double_t>(pointer, i, j, len); }
239  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); }
240  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); }
241  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); }
242  void ls(Option_t *option="") const;
243  Bool_t MatchLegacyCheckSum(UInt_t checksum) const;
245  void *New(void *obj = 0);
246  void *NewArray(Long_t nElements, void* ary = 0);
247  void Destructor(void* p, Bool_t dtorOnly = kFALSE);
248  void DeleteArray(void* p, Bool_t dtorOnly = kFALSE);
249  void PrintValue(const char *name, char *pointer, Int_t i, Int_t len, Int_t lenmax=1000) const;
250  void PrintValueClones(const char *name, TClonesArray *clones, Int_t i, Int_t eoffset, Int_t lenmax=1000) const;
251  void PrintValueSTL(const char *name, TVirtualCollectionProxy *cont, Int_t i, Int_t eoffset, Int_t lenmax=1000) const;
252 
253  template <class T>
254  Int_t ReadBuffer(TBuffer &b, const T &arrptr, TCompInfo *const*const compinfo, Int_t first, Int_t last, Int_t narr=1,Int_t eoffset=0,Int_t mode=0);
255  template <class T>
256  Int_t ReadBufferSkip(TBuffer &b, const T &arrptr, const TCompInfo *compinfo,Int_t kase, TStreamerElement *aElement, Int_t narr, Int_t eoffset);
257  template <class T>
258  Int_t ReadBufferConv(TBuffer &b, const T &arrptr, const TCompInfo *compinfo,Int_t kase, TStreamerElement *aElement, Int_t narr, Int_t eoffset);
259  template <class T>
260  Int_t ReadBufferArtificial(TBuffer &b, const T &arrptr, TStreamerElement *aElement, Int_t narr, Int_t eoffset);
261 
262  Int_t ReadBufferClones(TBuffer &b, TClonesArray *clones, Int_t nc, Int_t first, Int_t eoffset);
264  void SetCheckSum(UInt_t checksum) {fCheckSum = checksum;}
265  void SetClass(TClass *cl) {fClass = cl;}
268  void TagFile(TFile *fFile);
269 private:
270  // Try to remove those functions from the public interface.
271  Int_t WriteBuffer(TBuffer &b, char *pointer, Int_t first);
272  Int_t WriteBufferClones(TBuffer &b, TClonesArray *clones, Int_t nc, Int_t first, Int_t eoffset);
275 public:
276  virtual void Update(const TClass *oldClass, TClass *newClass);
277 
278  virtual TVirtualCollectionProxy *GenEmulatedProxy(const char* class_name, Bool_t silent);
279  virtual TClassStreamer *GenEmulatedClassStreamer(const char* class_name, Bool_t silent);
280  virtual TVirtualCollectionProxy *GenExplicitProxy( const ::ROOT::Detail::TCollectionProxyInfo &info, TClass *cl );
281  virtual TClassStreamer *GenExplicitClassStreamer( const ::ROOT::Detail::TCollectionProxyInfo &info, TClass *cl );
282 
284 
285 public:
286  // For access by the StreamerInfoActions.
287  template <class T>
288  Int_t WriteBufferAux (TBuffer &b, const T &arr, TCompInfo *const*const compinfo, Int_t first, Int_t last, Int_t narr,Int_t eoffset,Int_t mode);
289 
290  //WARNING this class version must be the same as TVirtualStreamerInfo
291  ClassDef(TStreamerInfo,9) //Streamer information for one class version
292 };
293 
294 
295 #endif
Describe Streamer information for one class version.
Definition: TStreamerInfo.h:43
TStreamerInfoActions::TActionSequence * GetWriteObjectWiseActions()
Int_t fClassVersion
Class version identifier.
Definition: TStreamerInfo.h:93
Int_t ReadBufferSkip(TBuffer &b, const T &arrptr, const TCompInfo *compinfo, Int_t kase, TStreamerElement *aElement, Int_t narr, Int_t eoffset)
Skip an element.
static std::atomic< Int_t > fgCount
Number of TStreamerInfo instances.
Double_t GetValueClones(TClonesArray *clones, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
An array of TObjects.
Definition: TObjArray.h:37
TClass * fNewClass
Not Owned.
Definition: TStreamerInfo.h:58
Int_t GetNelement() const
Version_t fOldVersion
! Version of the TStreamerInfo object read from the file
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.
T GetTypedValue(char *pointer, Int_t i, Int_t j, Int_t len) const
Return value of element i in object at pointer.
void SetCheckSum(UInt_t checksum)
void AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence *readSequence, Int_t index, TCompInfo *compinfo)
Add a read action for the given element.
static 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 cal...
void BuildEmulated(TFile *file)
Create an Emulation TStreamerInfo object.
TStreamerInfoActions::TActionSequence * fWriteMemberWiseVecPtr
! List of write action resulting from the compilation for use in member wise streaming.
short Version_t
Definition: RtypesCore.h:61
void AddReadAction(TStreamerInfoActions::TActionSequence *readSequence, Int_t index, TCompInfo *compinfo)
Add a read action for the given element.
Equal to TDataType&#39;s kchar.
const char Option_t
Definition: RtypesCore.h:62
Double_t GetValueSTL(TVirtualCollectionProxy *cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
Int_t GetOffset(Int_t id) const
All ROOT classes may have RTTI (run time type identification) support added.
Definition: TDataMember.h:31
double T(double x)
Definition: ChebyshevPol.h:34
T GetTypedValueSTLP(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-arra...
#define BIT(n)
Definition: Rtypes.h:75
TStreamerInfo & operator=(const TStreamerInfo &)
void Update(const TClass *oldcl, TClass *newcl)
Update the TClass pointer cached in this object.
void InsertArtificialElements(std::vector< const ROOT::TSchemaRule * > &rules)
Insert new members as expressed in the array of TSchemaRule(s).
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:46
Buffer base class used for serializing objects.
Definition: TBuffer.h:40
void ForceWriteInfo(TFile *file, Bool_t force=kFALSE)
Recursively mark streamer infos for writing to a file.
void AddWriteAction(TStreamerInfoActions::TActionSequence *writeSequence, Int_t index, TCompInfo *compinfo)
void * New(void *obj=0)
An emulated object is created at address obj, if obj is null we allocate memory for the object...
Basic string class.
Definition: TString.h:129
void DestructorImpl(void *p, Bool_t dtorOnly)
Internal part of the destructor.
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
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::M...
Cache the value in memory than is not part of the object but is accessible via a SchemaRule.
Int_t fNdata
!number of optimized elements
Definition: TStreamerInfo.h:97
ULong_t * fVirtualInfoLoc
![fNVirtualInfoLoc] Location of the pointer to the TStreamerInfo inside the object (when emulated) ...
void AddWriteMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence *writeSequence, Int_t index, TCompInfo *compinfo)
This is for streaming via a TClonesArray (or a vector of pointers of this type).
Abstract base class for accessing the data-members of a class.
Int_t GetType(Int_t id) const
Double_t GetValue(char *pointer, Int_t i, Int_t j, Int_t len) const
void Destructor(void *p, Bool_t dtorOnly=kFALSE)
Emulated destructor for this class.
void DeleteArray(void *p, Bool_t dtorOnly=kFALSE)
Destroy an array of emulated objects, with optional delete.
TCompInfo ** fCompFull
![fElements-&gt;GetEntries()]
TClass * GetActualClass(const void *obj) const
Assuming that obj points to (the part of) an object that is of the type described by this streamerInf...
void ComputeSize()
Compute total size of all persistent elements of the class.
Int_t GetElementOffset(Int_t id) const
TStreamerInfoActions::TActionSequence * fReadMemberWise
! List of read action resulting from the compilation for use in member wise streaming.
Int_t fSize
!size of the persistent class
Definition: TStreamerInfo.h:96
TVirtualStreamerInfo * NewInfo(TClass *cl)
Int_t WriteBufferSTLPtrs(TBuffer &b, TVirtualCollectionProxy *cont, Int_t nc, Int_t first, Int_t eoffset)
Write for STL container.
virtual TVirtualCollectionProxy * GenEmulatedProxy(const char *class_name, Bool_t silent)
Generate emulated collection proxy for a given class.
#define ClassDef(name, id)
Definition: Rtypes.h:297
virtual TClassStreamer * GenEmulatedClassStreamer(const char *class_name, Bool_t silent)
Generate emulated class streamer for a given collection class.
virtual TVirtualCollectionProxy * GenExplicitProxy(const ::ROOT::Detail::TCollectionProxyInfo &info, TClass *cl)
Generate proxy from static functions.
ECheckSum
Definition: TClass.h:92
Int_t GetOnFileClassVersion() const
Int_t ReadBufferClones(TBuffer &b, TClonesArray *clones, Int_t nc, Int_t first, Int_t eoffset)
Read for TClonesArray.
Int_t WriteBufferAux(TBuffer &b, const T &arr, TCompInfo *const *const compinfo, Int_t first, Int_t last, Int_t narr, Int_t eoffset, Int_t mode)
The object at pointer is serialized to the buffer b if (arrayMode &amp; 1) ptr is a pointer to array of p...
Int_t WriteBufferClones(TBuffer &b, TClonesArray *clones, Int_t nc, Int_t first, Int_t eoffset)
Write for ClonesArray (&#39;first&#39; is an id between -1 and fNfulldata).
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 che...
TMemberStreamer * fStreamer
Not Owned.
Definition: TStreamerInfo.h:60
Version_t GetOldVersion() const
Int_t fNfulldata
!number of elements
Definition: TStreamerInfo.h:98
T GetTypedValueSTL(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-arra...
Eventhough BIT(13) is taken up by TObject (to preserverse forward compatibility)
TStreamerInfoActions::TActionSequence * fReadObjectWise
! List of read action resulting from the compilation.
void SetOnFileClassVersion(Int_t vers)
virtual TClassStreamer * GenExplicitClassStreamer(const ::ROOT::Detail::TCollectionProxyInfo &info, TClass *cl)
Generate class streamer from static functions.
void SetClass(TClass *cl)
TClass * GetClass() const
XFontStruct * id
Definition: TGX11.cxx:108
UInt_t fCheckSum
Checksum of original class.
Definition: TStreamerInfo.h:92
TCompInfo TCompInfo_t
Definition: TStreamerInfo.h:70
void GenerateDeclaration(FILE *fp, FILE *sfp, const TList *subClasses, Bool_t top=kTRUE)
Write the Declaration of class.
Int_t GetClassVersion() const
static T GetTypedValueAux(Int_t type, void *ladd, int k, Int_t len)
Get the value from inside a collection.
A doubly linked list.
Definition: TList.h:43
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 &lt; ...
virtual void Update(const TClass *oldClass, TClass *newClass)
function called by the TClass constructor when replacing an emulated class by the real class ...
Int_t GetLength(Int_t id) const
TClass * fClass
!pointer to class
Int_t GetOffset(const char *) const
Return the offset of the data member as indicated by this StreamerInfo.
Int_t ReadBufferConv(TBuffer &b, const T &arrptr, const TCompInfo *compinfo, Int_t kase, TStreamerElement *aElement, Int_t narr, Int_t eoffset)
Convert elements of a TClonesArray.
TObjArray * fElements
Array of TStreamerElements.
UInt_t GenerateIncludes(FILE *fp, char *inclist, const TList *extrainfos)
Add to the header file, the #include need for this class.
TVirtualCollectionProxy * fProxy
Definition: TStreamerInfo.h:88
TStreamerElement * GetElem(Int_t id) const
void ls(Option_t *option="") const
List the TStreamerElement list and also the precomputed tables if option contains the string &quot;incOrig...
TObjArray * GetElements() const
void BuildOld()
rebuild the TStreamerInfo structure
Wrapper around an object and giving indirect access to its content even if the object is not of a cla...
Definition: TVirtualArray.h:26
void Clear(Option_t *)
If opt contains &#39;built&#39;, reset this StreamerInfo as if Build or BuildOld was never called on it (usef...
TPointerCollectionAdapter(TVirtualCollectionProxy *proxy)
Definition: TStreamerInfo.h:79
Int_t ReadBuffer(TBuffer &b, const T &arrptr, TCompInfo *const *const compinfo, Int_t first, Int_t last, Int_t narr=1, Int_t eoffset=0, Int_t mode=0)
Deserialize information from buffer b into object at pointer if (arrayMode &amp; 1) ptr is a pointer to a...
Int_t fOnFileClassVersion
!Class version identifier as stored on file.
Definition: TStreamerInfo.h:94
UInt_t GetCheckSum() const
Int_t ReadBufferArtificial(TBuffer &b, const T &arrptr, TStreamerElement *aElement, Int_t narr, Int_t eoffset)
Handle Artificial StreamerElement.
virtual Bool_t BuildFor(const TClass *cl)
Check if we can build this for foreign class - do we have some rules to do that.
unsigned int UInt_t
Definition: RtypesCore.h:42
Int_t GetDataMemberOffset(TDataMember *dm, TMemberStreamer *&streamer) const
Compute data member offset.
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:71
TStreamerInfoActions::TActionSequence * GetReadMemberWiseActions(Bool_t forCollection)
TClass * fClass
Not Owned.
Definition: TStreamerInfo.h:57
void SetClassVersion(Int_t vers)
Int_t GetNumber() const
TCompInfo * fComp
![fNslots with less than fElements-&gt;GetEntries()*1.5 used] Compiled info
TStreamerInfoActions::TActionSequence * fWriteMemberWise
! List of write action resulting from the compilation for use in member wise streaming.
const Bool_t kFALSE
Definition: RtypesCore.h:92
TStreamerElement * fElem
Not Owned.
Definition: TStreamerInfo.h:55
long Long_t
Definition: RtypesCore.h:50
Int_t WriteBuffer(TBuffer &b, char *pointer, Int_t first)
General Write.
Int_t WriteBufferSTL(TBuffer &b, TVirtualCollectionProxy *cont, Int_t nc)
Write for STL container. (&#39;first&#39; is an id between -1 and fNfulldata).
void CallShowMembers(const void *obj, TMemberInspector &insp, Bool_t isTransient) const
Emulated a call ShowMembers() on the obj of this class type, passing insp and parent.
Int_t GetNdata() const
TStreamerElement * GetStreamerElementReal(Int_t i, Int_t j) const
Obsolete: this routine is obsolete and should not longer be used.
void Build()
Build the I/O data structure for the current class version.
TStreamerElement * GetStreamerElement(const char *datamember, Int_t &offset) const
Return the StreamerElement of &quot;datamember&quot; inside our class or any of its base classes.
T GetTypedValueClones(TClonesArray *clones, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
Int_t GetSizeElements() const
Return total size of all persistent elements of the class use GetSize if you want to get the real siz...
double Double_t
Definition: RtypesCore.h:55
Int_t fNslots
!total numbrer of slots in fComp.
Definition: TStreamerInfo.h:99
TStreamerInfoActions::TActionSequence * fReadMemberWiseVecPtr
! List of read action resulting from the compilation for use in member wise streaming.
TStreamerInfoActions::TActionSequence * fWriteObjectWise
! List of write action resulting from the compilation.
int type
Definition: TGX11.cxx:120
Int_t GetNewType(Int_t id) const
unsigned long ULong_t
Definition: RtypesCore.h:51
Int_t fNVirtualInfoLoc
! Number of virtual info location to update.
virtual void * At(UInt_t idx)=0
Int_t GetEntries() const
Return the number of objects in array (i.e.
Definition: TObjArray.cxx:494
void Compile()
loop on the TStreamerElement list regroup members with same type Store predigested information into l...
void TagFile(TFile *fFile)
Mark the classindex of the current file as using this TStreamerInfo.
Mother of all ROOT objects.
Definition: TObject.h:37
Int_t GetSize() const
Return total size of all persistent elements of the class (with offsets).
static TStreamerElement * GetCurrentElement()
static function returning a pointer to the current TStreamerElement fgElement points to the current T...
An array of clone (identical) objects.
Definition: TClonesArray.h:32
Int_t fNumber
!Unique identifier
Definition: TStreamerInfo.h:95
ULong_t GetMethod(Int_t id) const
void BuildCheck(TFile *file=0)
Check if built and consistent with the class dictionary.
virtual ~TStreamerInfo()
TStreamerInfo dtor.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Definition: TRolke.cxx:630
TStreamerElement * GetElement(Int_t id) const
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 ar...
TCompInfo ** fCompOpt
![fNdata]
TObject * At(Int_t idx) const
Definition: TObjArray.h:165
TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
TStreamerInfoActions::TActionSequence * GetReadObjectWiseActions()
Abstract Interface class describing Streamer information for one class.
char * operator[](UInt_t idx) const
Definition: TStreamerInfo.h:82
Int_t ReadBufferSTL(TBuffer &b, TVirtualCollectionProxy *cont, Int_t nc, Int_t eoffset, Bool_t v7=kTRUE)
The STL vector/list is deserialized from the buffer b.
const Bool_t kTRUE
Definition: RtypesCore.h:91
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.
Double_t GetValueSTLP(TVirtualCollectionProxy *cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
char name[80]
Definition: TGX11.cxx:109
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.
std::atomic< ULong_t > fLiveCount
! Number of outstanding pointer to this StreamerInfo.
TStreamerInfoActions::TActionSequence * GetWriteMemberWiseActions(Bool_t forCollection)
TStreamerInfo()
Default ctor.