ROOT  6.06/09
Reference Guide
TGenCollectionProxy.h
Go to the documentation of this file.
1 // @(#)root/io:$Id$
2 // Author: Markus Frank 28/10/04
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2004, 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 #ifndef ROOT_TGenCollectionProxy
12 #define ROOT_TGenCollectionProxy
13 
14 #ifndef ROOT_TVirtualCollectionProxy
16 #endif
17 
18 #ifndef ROOT_TCollectionProxyInfo
19 #include "TCollectionProxyInfo.h"
20 #endif
21 
22 #ifndef ROOT_Rtypeinfo
23 #include "Rtypeinfo.h"
24 #endif
25 
26 #include <atomic>
27 #include <string>
28 #include <map>
29 #include <stdlib.h>
30 
31 class TObjArray;
33 
36 {
37 
38  // Friend declaration
40 
41 public:
42 
43 #ifdef R__HPUX
44  typedef const type_info& Info_t;
45 #else
46  typedef const std::type_info& Info_t;
47 #endif
48 
49  enum {
50  // Those 'bits' are used in conjunction with CINT's bit to store the 'type'
51  // info into one int
52  kBIT_ISSTRING = 0x20000000, // We can optimized a value operation when the content are strings
53  kBIT_ISTSTRING = 0x40000000
54  };
55 
56  /** @class TGenCollectionProxy::Value TGenCollectionProxy.h TGenCollectionProxy.h
57  *
58  * Small helper to describe the Value_type or the key_type
59  * of an STL container.
60  *
61  * @author M.Frank
62  * @version 1.0
63  * @date 10/10/2004
64  */
65  struct Value {
66  ROOT::NewFunc_t fCtor; ///< Method cache for containee constructor
67  ROOT::DesFunc_t fDtor; ///< Method cache for containee destructor
68  ROOT::DelFunc_t fDelete; ///< Method cache for containee delete
69  UInt_t fCase; ///< type of data of Value_type
70  UInt_t fProperties; ///< Additional properties of the value type (kNeedDelete)
71  TClassRef fType; ///< TClass reference of Value_type in collection
72  EDataType fKind; ///< kind of ROOT-fundamental type
73  size_t fSize; ///< fSize of the contained object
74 
75  // Default copy constructor has the correct implementation.
76 
77  // Initializing constructor
78  Value(const std::string& info, Bool_t silent);
79  // Delete individual item from STL container
80  void DeleteItem(void* ptr);
81 
82  Bool_t IsValid();
83  };
84 
85  /**@class StreamHelper
86  *
87  * Helper class to facilitate I/O
88  *
89  * @author M.Frank
90  * @version 1.0
91  * @date 10/10/2004
92  */
93  union StreamHelper {
107  void* p_void;
108  void** pp_void;
109  char* kchar;
111  void* ptr() {
112  return *(&this->p_void);
113  }
114  std::string* str() {
115  return (std::string*)this;
116  }
117  const char* c_str() {
118  return ((std::string*)this)->c_str();
119  }
120  const char* c_pstr() {
121  return (*(std::string**)this)->c_str();
122  }
123  void set(void* p) {
124  *(&this->p_void) = p;
125  }
127  TString s;
128  s.Streamer(b);
129  ((std::string*)this)->assign(s.Data());
130  }
131  void* read_tstring(TBuffer& b) {
132  *((TString*)this) = "";
133  ((TString*)this)->Streamer(b);
134  return this;
135  }
137  TString s;
138  std::string* str2 = (std::string*)ptr();
139  if (!str2) str2 = new std::string();
140  s.Streamer(b);
141  *str2 = s;
142  set(str2);
143  }
145  const char* c;
146  if (ptr()) {
147  std::string* strptr = (*(std::string**)this);
148  c = (const char*)(strptr->c_str());
149  } else c = "";
150  TString(c).Streamer(b);
151  }
153  void* p = ptr();
154  if ( p ) {
155  if ( v->fDelete ) { // Compiled content: call Destructor
156  (*v->fDelete)(p);
157  }
158  else if ( v->fType ) { // Emulated content: call TClass::Delete
159  v->fType->Destructor(p);
160  }
161  else if ( v->fDtor ) {
162  (*v->fDtor)(p);
163  ::operator delete(p);
164  }
165  else {
166  ::operator delete(p);
167  }
168  }
169  set( b.ReadObjectAny(v->fType) );
170  }
171 
173  TString* s = (TString*)ptr();
174  if ( vsn3 ) {
175  if ( !s ) s = new TString();
176  else s->Clear();
177  s->Streamer(b);
178  set(s);
179  return;
180  }
181  if ( s ) delete s;
183  }
186  }
187  };
188 
189  /** @class TGenCollectionProxy::Method TGenCollectionProxy.h TGenCollectionProxy.h
190  *
191  * Small helper to execute (compiler) generated function for the
192  * access to STL or other containers.
193  *
194  * @author M.Frank
195  * @version 1.0
196  * @date 10/10/2004
197  */
198  class Method {
199  public:
200  typedef void* (*Call_t)(void*);
202  Method() : call(0) { }
203  Method(Call_t c) : call(c) { }
204  Method(const Method& m) : call(m.call) { }
205  Method &operator=(const Method& m) { call = m.call; return *this; }
206  void* invoke(void* obj) const { return (*call)(obj); }
207  };
208 
209  /** @class TGenCollectionProxy::Method TGenCollectionProxy.h TGenCollectionProxy.h
210  *
211  * Small helper to execute (compiler) generated function for the
212  * access to STL or other containers.
213  *
214  * @author M.Frank
215  * @version 1.0
216  * @date 10/10/2004
217  */
218  class Method0 {
219  public:
220  typedef void* (*Call_t)();
222  Method0() : call(0) { }
223  Method0(Call_t c) : call(c) { }
224  Method0(const Method0& m) : call(m.call) { }
225  Method0 &operator=(const Method0& m) { call = m.call; return *this; }
226  void* invoke() const { return (*call)(); }
227  };
228 
229  /** @class TGenCollectionProxy::TStaging
230  *
231  * Small helper to stage the content of an associative
232  * container when reading and before inserting it in the
233  * actual collection.
234  *
235  * @author Ph.Canal
236  * @version 1.0
237  * @date 20/08/2010
238  */
239  class TStaging {
240  void *fTarget; ///< Pointer to the collection we are staging for.
241  void *fContent; ///< Pointer to the content
242  size_t fReserved; ///< Amount of space already reserved.
243  size_t fSize; ///< Number of elements
244  size_t fSizeOf; ///< size of each elements
245 
246  TStaging(const TStaging&); ///< Not implemented.
247  TStaging &operator=(const TStaging&); ///< Not implemented.
248 
249  public:
250  TStaging(size_t size, size_t size_of) : fTarget(0), fContent(0), fReserved(0), fSize(size), fSizeOf(size_of)
251  {
252  // Usual constructor. Reserves the required number of elements.
253  fReserved = fSize;
254  fContent = ::malloc(fReserved * fSizeOf);
255  }
256 
258  // Usual destructor
259  ::free(fContent);
260  }
261 
262  void *GetContent() {
263  // Return the location of the array of content.
264  return fContent;
265  }
266  void *GetEnd() {
267  // Return the 'end' of the array of content.
268  return ((char*)fContent) + fSize*fSizeOf;
269  }
270  size_t GetSize() {
271  // Return the number of elements.
272  return fSize;
273  }
274  void *GetTarget() {
275  // Get the address of the collection we are staging for.
276  return fTarget;
277  }
278  void Resize(size_t nelement) {
279  if (fReserved < nelement) {
280  fReserved = nelement;
281  fContent = ::realloc(fContent,fReserved * fSizeOf);
282  }
283  fSize = nelement;
284  }
285  void SetTarget(void *target) {
286  // Set the collection we are staging for.
287  fTarget = target;
288  }
289  };
290 
291 protected:
294  typedef std::vector<TStaging*> Staged_t; ///< Collection of pre-allocated staged array for associative containers.
295  typedef std::vector<EnvironBase_t*> Proxies_t;
296  mutable TObjArray *fReadMemberWise; ///< Array of bundle of TStreamerInfoActions to stream out (read)
297  mutable std::map<std::string, TObjArray*> *fConversionReadMemberWise; ///< Array of bundle of TStreamerInfoActions to stream out (read) derived from another class.
299  typedef void (*Sizing_t)(void *obj, size_t size);
300  typedef void* (*Feedfunc_t)(void *from, void *to, size_t size);
301  typedef void* (*Collectfunc_t)(void *from, void *to);
302  typedef void* (*ArrIterfunc_t)(void *from, size_t size);
303 
304  std::string fName; ///< Name of the class being proxied.
305  Bool_t fPointers; ///< Flag to indicate if containee has pointers (key or value)
306  Method fClear; ///< Method cache for container accessors: clear container
307  Method fSize; ///< Container accessors: size of container
308  Sizing_t fResize; ///< Container accessors: resize container
309  Method fFirst; ///< Container accessors: generic iteration: first
310  Method fNext; ///< Container accessors: generic iteration: next
311  ArrIterfunc_t fConstruct; ///< Container accessors: block construct
312  Sizing_t fDestruct; ///< Container accessors: block destruct
313  Feedfunc_t fFeed; ///< Container accessors: block feed
314  Collectfunc_t fCollect; ///< Method to collect objects from container
315  Method0 fCreateEnv; ///< Method to allocate an Environment holder.
316  std::atomic<Value*> fValue; ///< Descriptor of the container value type
317  Value* fVal; ///< Descriptor of the Value_type
318  Value* fKey; ///< Descriptor of the key_type
319  EnvironBase_t*fEnv; ///< Address of the currently proxied object
320  int fValOffset; ///< Offset from key to value (in maps)
321  int fValDiff; ///< Offset between two consecutive value_types (memory layout).
322  Proxies_t fProxyList; ///< Stack of recursive proxies
323  Proxies_t fProxyKept; ///< Optimization: Keep proxies once they were created
324  Staged_t fStaged; ///< Optimization: Keep staged array once they were created
325  int fSTL_type; ///< STL container type
326  Info_t fTypeinfo; ///< Type information
327  TClass* fOnFileClass; ///< On file class
328 
334 
335  // Late initialization of collection proxy
336  TGenCollectionProxy* Initialize(Bool_t silent) const;
337  // Some hack to avoid const-ness.
338  virtual TGenCollectionProxy* InitializeEx(Bool_t silent);
339  // Call to delete/destruct individual contained item.
340  virtual void DeleteItem(Bool_t force, void* ptr) const;
341  // Allow to check function pointers.
342  void CheckFunctions() const;
343 
344  // Set pointer to the TClass representing the content.
345  virtual void UpdateValueClass(const TClass *oldcl, TClass *newcl);
346 
347 private:
348  TGenCollectionProxy(); // not implemented on purpose.
349 
350 public:
351 
352  // Virtual copy constructor.
353  virtual TVirtualCollectionProxy* Generate() const;
354 
355  // Copy constructor.
357 
358 private:
359  // Assignment operator
360  TGenCollectionProxy &operator=(const TGenCollectionProxy&); // Not Implemented
361 
362 public:
363  // Initializing constructor
364  TGenCollectionProxy(Info_t typ, size_t iter_size);
366 
367  // Standard destructor.
368  virtual ~TGenCollectionProxy();
369 
370  // Return a pointer to the TClass representing the container.
371  virtual TClass *GetCollectionClass() const;
372 
373  // Return the type of collection see TClassEdit::ESTLType
374  virtual Int_t GetCollectionType() const;
375 
376  // Return the offset between two consecutive value_types (memory layout).
377  virtual ULong_t GetIncrement() const;
378 
379  // Return the sizeof the collection object.
380  virtual UInt_t Sizeof() const;
381 
382  // Push new proxy environment.
383  virtual void PushProxy(void *objstart);
384 
385  // Pop old proxy environment.
386  virtual void PopProxy();
387 
388  // Return true if the content is of type 'pointer to'.
389  virtual Bool_t HasPointers() const;
390 
391  // Return a pointer to the TClass representing the content.
392  virtual TClass *GetValueClass() const;
393 
394  // If the content is a simple numerical value, return its type (see TDataType).
395  virtual EDataType GetType() const;
396 
397  // Return the address of the value at index 'idx'.
398  virtual void *At(UInt_t idx);
399 
400  // Clear the container.
401  virtual void Clear(const char *opt = "");
402 
403  // Resize the container.
404  virtual void Resize(UInt_t n, Bool_t force_delete);
405 
406  // Return the current size of the container.
407  virtual UInt_t Size() const;
408 
409  // Block allocation of containees.
410  virtual void* Allocate(UInt_t n, Bool_t forceDelete);
411 
412  // Insert data into the container where data is a C-style array of the actual type contained in the collection
413  // of the given size. For associative container (map, etc.), the data type is the pair<key,value>.
414  virtual void Insert(const void *data, void *container, size_t size);
415 
416  // Block commit of containees.
417  virtual void Commit(void* env);
418 
419  // Streamer function.
420  virtual void Streamer(TBuffer &refBuffer);
421 
422  // Streamer I/O overload.
423  virtual void Streamer(TBuffer &refBuffer, void *pObject, int siz);
424 
425  // TClassStreamer I/O overload.
426  virtual void operator()(TBuffer &refBuffer, void *pObject);
427 
428  // Routine to read the content of the buffer into 'obj'.
429  virtual void ReadBuffer(TBuffer &b, void *obj);
430  virtual void ReadBuffer(TBuffer &b, void *obj, const TClass *onfileClass);
431 
432  virtual void SetOnFileClass( TClass* cl ) { fOnFileClass = cl; }
433  virtual TClass* GetOnFileClass() const { return fOnFileClass; }
434 
435  // MemberWise actions
439 
440  // Set of functions to iterate easily throught the collection
441 
443  // typedef void (*CreateIterators_t)(void *collection, void **begin_arena, void **end_arena);
444  // begin_arena and end_arena should contain the location of a memory arena of size fgIteratorSize.
445  // If the collection iterator are of that size or less, the iterators will be constructed in place in those location (new with placement)
446  // Otherwise the iterators will be allocated via a regular new and their address returned by modifying the value of begin_arena and end_arena.
447 
449  // typedef void* (*CopyIterator_t)(void **dest, const void *source);
450  // Copy the iterator source, into dest. dest should contain the location of a memory arena of size fgIteratorSize.
451  // If the collection iterator is of that size or less, the iterator will be constructed in place in this location (new with placement)
452  // Otherwise the iterator will be allocated via a regular new.
453  // The actual address of the iterator is returned in both case.
454 
456  // typedef void* (*Next_t)(void *iter, const void *end);
457  // iter and end should be pointers to respectively an iterator to be incremented and the result of collection.end()
458  // If the iterator has not reached the end of the collection, 'Next' increment the iterator 'iter' and return 0 if
459  // the iterator reached the end.
460  // If the end was not reached, 'Next' returns the address of the content pointed to by the iterator before the
461  // incrementation ; if the collection contains pointers, 'Next' will return the value of the pointer.
462 
465  // typedef void (*DeleteIterator_t)(void *iter);
466  // typedef void (*DeleteTwoIterators_t)(void *begin, void *end);
467  // If the size of the iterator is greater than fgIteratorArenaSize, call delete on the addresses,
468  // Otherwise just call the iterator's destructor.
469 
470 };
471 
472 template <typename T>
475  : TGenCollectionProxy(typeid(T::Cont_t),sizeof(T::Iter_t))
476  {
477  // Constructor.
478  fValDiff = sizeof(T::Value_t);
479  fValOffset = T::value_offset();
480  fSize.call = T::size;
481  fResize = T::resize;
482  fNext.call = T::next;
483  fFirst.call = T::first;
484  fClear.call = T::clear;
485  fConstruct = T::construct;
486  fDestruct = T::destruct;
487  fFeed = T::feed;
488  CheckFunctions();
489  }
490  virtual ~AnyCollectionProxy() { }
491 };
492 
493 #endif
494 
Method fSize
Container accessors: size of container.
size_t fSize
Number of elements.
double read(const std::string &file_name)
reading
DeleteIterator_t fFunctionDeleteIterator
ROOT::DelFunc_t fDelete
Method cache for containee delete.
An array of TObjects.
Definition: TObjArray.h:39
ROOT::NewFunc_t fCtor
Method cache for containee constructor.
virtual TStreamerInfoActions::TActionSequence * GetReadMemberWiseActions(Int_t version)
Return the set of action necessary to stream in this collection member-wise coming from the old value...
Proxies_t fProxyKept
Optimization: Keep proxies once they were created.
TStaging(const TStaging &)
Not implemented.
long long Long64_t
Definition: RtypesCore.h:69
virtual TVirtualCollectionProxy * Generate() const
Virtual copy constructor.
DeleteTwoIterators_t fFunctionDeleteTwoIterators
void * invoke(void *obj) const
UInt_t fProperties
Additional properties of the value type (kNeedDelete)
ROOT::Detail::TCollectionProxyInfo::EnvironBase EnvironBase_t
virtual void UpdateValueClass(const TClass *oldcl, TClass *newcl)
Update the internal ValueClass when a TClass constructor need to replace an emulated TClass by the re...
ClassImp(TSeqCollection) Int_t TSeqCollection TIter next(this)
Return index of object in collection.
virtual TClass * GetOnFileClass() const
float Float_t
Definition: RtypesCore.h:53
Bool_t fPointers
Flag to indicate if containee has pointers (key or value)
std::map< std::string, TObjArray * > * fConversionReadMemberWise
Array of bundle of TStreamerInfoActions to stream out (read) derived from another class...
TGenCollectionProxy * Initialize(Bool_t silent) const
Proxy initializer.
Collectfunc_t fCollect
Method to collect objects from container.
std::string fName
Name of the class being proxied.
TStaging(size_t size, size_t size_of)
double T(double x)
Definition: ChebyshevPol.h:34
virtual Int_t WriteObjectAny(const void *obj, const TClass *ptrClass)=0
unsigned short UShort_t
Definition: RtypesCore.h:36
virtual TStreamerInfoActions::TActionSequence * GetWriteMemberWiseActions()
Return the set of action necessary to stream out this collection member-wise.
virtual void PopProxy()
Remove the last object.
virtual void Insert(const void *data, void *container, size_t size)
Insert data into the container where data is a C-style array of the actual type contained in the coll...
Method fFirst
Container accessors: generic iteration: first.
Buffer base class used for serializing objects.
Definition: TBuffer.h:40
TClass * fOnFileClass
On file class.
Basic string class.
Definition: TString.h:137
Feedfunc_t fFeed
Container accessors: block feed.
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
UInt_t fCase
type of data of Value_type
virtual Bool_t HasPointers() const
Return true if the content is of type 'pointer to'.
void *(* CopyIterator_t)(void *dest, const void *source)
virtual ULong_t GetIncrement() const
Return the offset between two consecutive value_types (memory layout).
Sizing_t fResize
Container accessors: resize container.
size_t fSize
fSize of the contained object
void(* DeleteIterator_t)(void *iter)
const char * Data() const
Definition: TString.h:349
virtual Int_t GetCollectionType() const
Return the type of collection see TClassEdit::ESTLType.
void(* DesFunc_t)(void *)
Definition: Rtypes.h:151
virtual void DeleteItem(Bool_t force, void *ptr) const
Call to delete/destruct individual item.
TObjArray * fReadMemberWise
Array of bundle of TStreamerInfoActions to stream out (read)
CopyIterator_t fFunctionCopyIterator
Vc_ALWAYS_INLINE void free(T *p)
Frees memory that was allocated with Vc::malloc.
Definition: memory.h:94
void Class()
Definition: Class.C:29
virtual CreateIterators_t GetFunctionCreateIterators(Bool_t read=kTRUE)
See typedef void (*CreateIterators_t)(void *collection, void *&begin_arena, void *&end_arena); begin_...
virtual TStreamerInfoActions::TActionSequence * GetConversionReadMemberWiseActions(TClass *oldClass, Int_t version)
Return the set of action necessary to stream in this collection member-wise coming from the old value...
void Clear()
Clear string without changing its capacity.
Definition: TString.cxx:1139
TStaging & operator=(const TStaging &)
Not implemented.
virtual UInt_t Size() const
Return the current size of the container.
Proxies_t fProxyList
Stack of recursive proxies.
void *(* ArrIterfunc_t)(void *from, size_t size)
Method fClear
Method cache for container accessors: clear container.
Method0 fCreateEnv
Method to allocate an Environment holder.
ArrIterfunc_t fConstruct
Container accessors: block construct.
virtual void Streamer(TBuffer &refBuffer)
Streamer Function.
void * fContent
Pointer to the content.
std::vector< EnvironBase_t * > Proxies_t
EDataType fKind
kind of ROOT-fundamental type
Staged_t fStaged
Optimization: Keep staged array once they were created.
void(* Sizing_t)(void *obj, size_t size)
virtual EDataType GetType() const
If the content is a simple numerical value, return its type (see TDataType)
int fValOffset
Offset from key to value (in maps)
Method0 & operator=(const Method0 &m)
int fSTL_type
STL container type.
SVector< double, 2 > v
Definition: Dict.h:5
void(* CreateIterators_t)(void *collection, void **begin_arena, void **end_arena, TVirtualCollectionProxy *proxy)
virtual void Commit(void *env)
Commit the change.
std::vector< TStaging * > Staged_t
Collection of pre-allocated staged array for associative containers.
void Destructor(void *obj, Bool_t dtorOnly=kFALSE)
Explicitly call destructor for object.
Definition: TClass.cxx:5040
unsigned int UInt_t
Definition: RtypesCore.h:42
TMarker * m
Definition: textangle.C:8
virtual void PushProxy(void *objstart)
Add an object.
short Short_t
Definition: RtypesCore.h:35
void *(* Feedfunc_t)(void *from, void *to, size_t size)
virtual Next_t GetFunctionNext(Bool_t read=kTRUE)
See typedef void* (*Next_t)(void *iter, void *end); iter and end should be pointer to respectively an...
CreateIterators_t fFunctionCreateIterators
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:81
TGenCollectionProxy & operator=(const TGenCollectionProxy &)
void read_any_object(Value *v, TBuffer &b)
void * fTarget
Pointer to the collection we are staging for.
Small helper to execute (compiler) generated function for the access to STL or other containers...
int fValDiff
Offset between two consecutive value_types (memory layout).
long Long_t
Definition: RtypesCore.h:50
virtual void Resize(UInt_t n, Bool_t force_delete)
Resize the container.
TCollectionProxyFactory Interface to collection proxy and streamer generator.
virtual DeleteIterator_t GetFunctionDeleteIterator(Bool_t read=kTRUE)
See typedef void (*DeleteIterator_t)(void *iter); If the sizeof iterator is greater than fgIteratorAr...
virtual DeleteTwoIterators_t GetFunctionDeleteTwoIterators(Bool_t read=kTRUE)
See typedef void (*DeleteTwoIterators_t)(void *begin, void *end); If the sizeof iterator is greater t...
double Double_t
Definition: RtypesCore.h:55
virtual TGenCollectionProxy * InitializeEx(Bool_t silent)
Proxy initializer.
unsigned long long ULong64_t
Definition: RtypesCore.h:70
unsigned long ULong_t
Definition: RtypesCore.h:51
EDataType
Definition: TDataType.h:30
virtual void * ReadObjectAny(const TClass *cast)=0
void CheckFunctions() const
Check existence of function pointers.
std::atomic< Value * > fValue
Descriptor of the container value type.
TClassRef fType
TClass reference of Value_type in collection.
virtual void SetOnFileClass(TClass *cl)
virtual void Clear(const char *opt="")
Clear the emulated collection.
virtual void ReadBuffer(TBuffer &b, void *obj)
virtual CopyIterator_t GetFunctionCopyIterator(Bool_t read=kTRUE)
See typedef void (*CopyIterator_t)(void *&dest, const void *source); Copy the iterator source...
virtual TClass * GetValueClass() const
Return a pointer to the TClass representing the content.
Value(const std::string &info, Bool_t silent)
Constructor.
virtual void * At(UInt_t idx)
Return the address of the value at index 'idx'.
size_t fSizeOf
size of each elements
TClassRef is used to implement a permanent reference to a TClass object.
Definition: TClassRef.h:33
char Char_t
Definition: RtypesCore.h:29
typedef void((*Func_t)())
Value * fKey
Descriptor of the key_type.
virtual void operator()(TBuffer &refBuffer, void *pObject)
TClassStreamer IO overload.
Small helper to stage the content of an associative container when reading and before inserting it in...
void(* DelFunc_t)(void *)
Definition: Rtypes.h:149
Helper class to facilitate I/O.
Proxy around an arbitrary container, which implements basic functionality and iteration.
EnvironBase_t * fEnv
Address of the currently proxied object.
Sizing_t fDestruct
Container accessors: block destruct.
Bool_t IsValid()
Return true if the Value has been properly initialized.
Method fNext
Container accessors: generic iteration: next.
void *(* Next_t)(void *iter, const void *end)
size_t fReserved
Amount of space already reserved.
unsigned char UChar_t
Definition: RtypesCore.h:34
Info_t fTypeinfo
Type information.
ROOT::Detail::TCollectionProxyInfo::Environ< char[64]> Env_t
const Bool_t kTRUE
Definition: Rtypes.h:91
TObject * obj
virtual TClass * GetCollectionClass() const
Return a pointer to the TClass representing the container.
void *(* NewFunc_t)(void *)
Definition: Rtypes.h:147
void(* DeleteTwoIterators_t)(void *begin, void *end)
virtual UInt_t Sizeof() const
Return the sizeof the collection object.
Vc_ALWAYS_INLINE_L T *Vc_ALWAYS_INLINE_R malloc(size_t n)
Allocates memory on the Heap with alignment and padding suitable for vectorized access.
Definition: memory.h:67
const std::type_info & Info_t
const Int_t n
Definition: legend1.C:16
TStreamerInfoActions::TActionSequence * fWriteMemberWise
Small helper to describe the Value_type or the key_type of an STL container.
Method & operator=(const Method &m)
void read_tstring_pointer(Bool_t vsn3, TBuffer &b)
virtual ~TGenCollectionProxy()
Standard destructor.
virtual void * Allocate(UInt_t n, Bool_t forceDelete)
Allocate the needed space.
Value * fVal
Descriptor of the Value_type.
void *(* Collectfunc_t)(void *from, void *to)
ROOT::DesFunc_t fDtor
Method cache for containee destructor.