ROOT » IO » IO » TGenCollectionProxy

class TGenCollectionProxy: public TVirtualCollectionProxy


 TGenCollectionProxy

 Proxy around an arbitrary container, which implements basic
 functionality and iteration.

 In particular this is used to implement splitting and abstract
 element access of any container. Access to compiled code is necessary
 to implement the abstract iteration sequence and functionality like
 size(), clear(), resize(). resize() may be a void operation.


Function Members (Methods)

public:
virtual~TGenCollectionProxy()
virtual void*Allocate(UInt_t n, Bool_t forceDelete)
virtual void*At(UInt_t idx)
virtual voidClear(const char* opt = "")
virtual voidCommit(void* env)
virtual voidTVirtualCollectionProxy::DeleteArray(void* p, Bool_t dtorOnly = kFALSE) const
virtual voidTVirtualCollectionProxy::Destructor(void* p, Bool_t dtorOnly = kFALSE) const
virtual TVirtualCollectionProxy*Generate() const
virtual TClass*GetCollectionClass() const
virtual Int_tGetCollectionType() const
virtual TStreamerInfoActions::TActionSequence*GetConversionReadMemberWiseActions(TClass* oldClass, Int_t version)
virtual TVirtualCollectionProxy::CopyIterator_tGetFunctionCopyIterator(Bool_t read = kTRUE)
virtual TVirtualCollectionProxy::CreateIterators_tGetFunctionCreateIterators(Bool_t read = kTRUE)
virtual TVirtualCollectionProxy::DeleteIterator_tGetFunctionDeleteIterator(Bool_t read = kTRUE)
virtual TVirtualCollectionProxy::DeleteTwoIterators_tGetFunctionDeleteTwoIterators(Bool_t read = kTRUE)
virtual TVirtualCollectionProxy::Next_tGetFunctionNext(Bool_t read = kTRUE)
virtual ULong_tGetIncrement() const
virtual TClass*GetOnFileClass() const
virtual Int_tTVirtualCollectionProxy::GetProperties() const
virtual TStreamerInfoActions::TActionSequence*GetReadMemberWiseActions(Int_t version)
virtual EDataTypeGetType() const
virtual TClass*GetValueClass() const
virtual TStreamerInfoActions::TActionSequence*GetWriteMemberWiseActions()
virtual Bool_tHasPointers() const
virtual voidInsert(const void* data, void* container, size_t size)
virtual void*TVirtualCollectionProxy::New() const
virtual void*TVirtualCollectionProxy::New(void* arena) const
virtual void*TVirtualCollectionProxy::NewArray(Int_t nElements) const
virtual void*TVirtualCollectionProxy::NewArray(Int_t nElements, void* arena) const
virtual voidoperator()(TBuffer& refBuffer, void* pObject)
char*TVirtualCollectionProxy::operator[](UInt_t idx) const
virtual voidPopProxy()
virtual voidPushProxy(void* objstart)
virtual voidReadBuffer(TBuffer& b, void* obj)
virtual voidReadBuffer(TBuffer& b, void* obj, const TClass* onfileClass)
virtual voidResize(UInt_t n, Bool_t force_delete)
virtual voidSetOnFileClass(TClass* cl)
virtual UInt_tSize() const
virtual UInt_tSizeof() const
virtual voidStreamer(TBuffer& refBuffer)
virtual voidStreamer(TBuffer& refBuffer, void* pObject, int siz)
TGenCollectionProxy(const TGenCollectionProxy& copy)
TGenCollectionProxy(TGenCollectionProxy::Info_t typ, size_t iter_size)
TGenCollectionProxy(const ROOT::TCollectionProxyInfo& info, TClass* cl)
protected:
voidCheckFunctions() const
virtual voidDeleteItem(Bool_t force, void* ptr) const
TGenCollectionProxy*Initialize(Bool_t silent) const
virtual TGenCollectionProxy*InitializeEx(Bool_t silent)
virtual voidUpdateValueClass(const TClass* oldcl, TClass* newcl)

Data Members

public:
static const Int_tTVirtualCollectionProxy::fgIteratorArenaSizegreater than sizeof(void*) + sizeof(UInt_t)
static TGenCollectionProxy::(anonymous)kBIT_ISSTRING
static TGenCollectionProxy::(anonymous)kBIT_ISTSTRING
static TGenCollectionProxy::(anonymous)kBOOL_t
static TVirtualCollectionProxy::EPropertyTVirtualCollectionProxy::kIsAssociative
static TVirtualCollectionProxy::EPropertyTVirtualCollectionProxy::kIsEmulated
static TVirtualCollectionProxy::EPropertyTVirtualCollectionProxy::kNeedDelete
protected:
TClassRefTVirtualCollectionProxy::fClass
TGenCollectionProxy::MethodfClearMethod cache for container accessors: clear container
TGenCollectionProxy::Collectfunc_tfCollectMethod to collect objects from container
TGenCollectionProxy::ArrIterfunc_tfConstructContainer accessors: block construct
map<string,TObjArray*>*fConversionReadMemberWiseArray of bundle of TStreamerInfoActions to stream out (read) derived from another class.
TGenCollectionProxy::Method0fCreateEnvMethod to allocate an Environment holder.
TGenCollectionProxy::Sizing_tfDestructContainer accessors: block destruct
TGenCollectionProxy::EnvironBase_t*fEnvAddress of the currently proxied object
TGenCollectionProxy::Feedfunc_tfFeedContainer accessors: block feed
TGenCollectionProxy::MethodfFirstContainer accessors: generic iteration: first
TVirtualCollectionProxy::CopyIterator_tfFunctionCopyIterator
TVirtualCollectionProxy::CreateIterators_tfFunctionCreateIterators
TVirtualCollectionProxy::DeleteIterator_tfFunctionDeleteIterator
TVirtualCollectionProxy::DeleteTwoIterators_tfFunctionDeleteTwoIterators
TVirtualCollectionProxy::Next_tfFunctionNextIterator
TGenCollectionProxy::Value*fKeyDescriptor of the key_type
stringfNameName of the class being proxied.
TGenCollectionProxy::MethodfNextContainer accessors: generic iteration: next
TClass*fOnFileClassOn file class
Bool_tfPointersFlag to indicate if containee has pointers (key or value)
UInt_tTVirtualCollectionProxy::fProperties
TGenCollectionProxy::Proxies_tfProxyKeptOptimization: Keep proxies once they were created
TGenCollectionProxy::Proxies_tfProxyListStack of recursive proxies
TObjArray*fReadMemberWiseArray of bundle of TStreamerInfoActions to stream out (read)
TGenCollectionProxy::Sizing_tfResizeContainer accessors: resize container
intfSTL_typeSTL container type
TGenCollectionProxy::MethodfSizeContainer accessors: size of container
TGenCollectionProxy::Staged_tfStagedOptimization: Keep staged array once they were created
TGenCollectionProxy::Info_tfTypeinfoType information
TGenCollectionProxy::Value*fValDescriptor of the Value_type
intfValDiffOffset between two consecutive value_types (memory layout).
intfValOffsetOffset from key to value (in maps)
atomic<TGenCollectionProxy::Value*>fValueDescriptor of the container value type
TStreamerInfoActions::TActionSequence*fWriteMemberWise

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TGenCollectionProxy(const TGenCollectionProxy& copy)
 Build a proxy for an emulated container.
TGenCollectionProxy(TGenCollectionProxy::Info_t typ, size_t iter_size)
 Build a proxy for a collection whose type is described by 'collectionClass'.
TGenCollectionProxy(const ROOT::TCollectionProxyInfo& info, TClass* cl)
 Build a proxy for a collection whose type is described by 'collectionClass'.
~TGenCollectionProxy()
 Standard destructor
TVirtualCollectionProxy* Generate() const
 Virtual copy constructor
TGenCollectionProxy * Initialize(Bool_t silent) const
 Proxy initializer
void CheckFunctions() const
 Check existence of function pointers
TGenCollectionProxy * InitializeEx(Bool_t silent)
 Proxy initializer
TClass * GetCollectionClass() const
 Return a pointer to the TClass representing the container
Int_t GetCollectionType() const
 Return the type of collection see TClassEdit::ESTLType
ULong_t GetIncrement() const
 Return the offset between two consecutive value_types (memory layout).
UInt_t Sizeof() const
 Return the sizeof the collection object.
Bool_t HasPointers() const
 Return true if the content is of type 'pointer to'
TClass * GetValueClass() const
 Return a pointer to the TClass representing the content.
void UpdateValueClass(const TClass* oldcl, TClass* newcl)
 Update the internal ValueClass when a TClass constructor need to
 replace an emulated TClass by the real TClass.
EDataType GetType() const
 If the content is a simple numerical value, return its type (see TDataType)
void* At(UInt_t idx)
 Return the address of the value at index 'idx'
void Clear(const char* opt = "")
 Clear the emulated collection.
UInt_t Size() const
 Return the current size of the container
void Resize(UInt_t n, Bool_t force_delete)
 Resize the container
void* Allocate(UInt_t n, Bool_t forceDelete)
 Allocate the needed space.
 For associative collection, this returns a TStaging object that
 need to be deleted manually __or__ returned by calling Commit(TStaging*)
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 collection
 of the given size.   For associative container (map, etc.), the data type is the pair<key,value>.
void Commit(void* env)
 Commit the change.
void PushProxy(void* objstart)
 Add an object.
void PopProxy()
 Remove the last object.
void DeleteItem(Bool_t force, void* ptr) const
 Call to delete/destruct individual item.
void ReadBuffer(TBuffer& b, void* obj, const TClass* onfileClass)
void ReadBuffer(TBuffer& b, void* obj)
void Streamer(TBuffer& refBuffer)
 Streamer Function.
void Streamer(TBuffer& refBuffer, void* pObject, int siz)
 Streamer I/O overload
void operator()(TBuffer& refBuffer, void* pObject)
 TClassStreamer IO overload
TVirtualCollectionProxy::CreateIterators_t GetFunctionCreateIterators(Bool_t read = kTRUE)
 See typedef void (*CreateIterators_t)(void *collection, void *&begin_arena, void *&end_arena);
 begin_arena and end_arena should contain the location of memory arena  of size fgIteratorSize.
 If the collection iterator are of that size or less, the iterators will be constructed in place in those location (new with placement)
 Otherwise the iterators will be allocated via a regular new and their address returned by modifying the value of begin_arena and end_arena.
TVirtualCollectionProxy::CopyIterator_t GetFunctionCopyIterator(Bool_t read = kTRUE)
 See typedef void (*CopyIterator_t)(void *&dest, const void *source);
 Copy the iterator source, into dest.   dest should contain should contain the location of memory arena  of size fgIteratorSize.
 If the collection iterator are of that size or less, the iterator will be constructed in place in this location (new with placement)
 Otherwise the iterator will be allocated via a regular new and its address returned by modifying the value of dest.
TVirtualCollectionProxy::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 iterator to be incremented and the result of colleciton.end()
 'Next' will increment the iterator 'iter' and return 0 if the iterator reached the end.
 If the end is not reached, 'Next' will return the address of the content unless the collection contains pointers in
 which case 'Next' will return the value of the pointer.
TVirtualCollectionProxy::DeleteIterator_t GetFunctionDeleteIterator(Bool_t read = kTRUE)
 See typedef void (*DeleteIterator_t)(void *iter);
 If the sizeof iterator is greater than fgIteratorArenaSize, call delete on the addresses,
 Otherwise just call the iterator's destructor.
TVirtualCollectionProxy::DeleteTwoIterators_t GetFunctionDeleteTwoIterators(Bool_t read = kTRUE)
 See typedef void (*DeleteTwoIterators_t)(void *begin, void *end);
 If the sizeof iterator is greater than fgIteratorArenaSize, call delete on the addresses,
 Otherwise just call the iterator's destructor.
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 class layout refered to by 'version'.
TStreamerInfoActions::TActionSequence * GetReadMemberWiseActions(Int_t version)
 Return the set of action necessary to stream in this collection member-wise coming from
 the old value class layout refered to by 'version'.
TStreamerInfoActions::TActionSequence * GetWriteMemberWiseActions()
 Return the set of action necessary to stream out this collection member-wise.
Method & operator=(const TGenCollectionProxy& )
{ call = m.call; return *this; }
TGenCollectionProxy()
void SetOnFileClass(TClass* cl)
{ fOnFileClass = cl; }
TClass* GetOnFileClass() const
{ return fOnFileClass; }