12#ifndef ROOT_TVirtualCollectionIterators
13#define ROOT_TVirtualCollectionIterators
55 ::Fatal(
"TIterators::TIterators",
"Created with out a collection proxy!\n");
114 virtual operator bool()
const = 0;
131 fNext( proxy->GetFunctionNext(read_from_file) ),
168 if ( ! (
bool)*
this )
return 0;
253 ::Fatal(
"TIterators::TIterators",
"Created with out a collection proxy!\n");
282 static void *
Next(
void *iter,
const void *end)
287 void **ptr = (
void**)internal_iter->
fNext(internal_iter->
fIter,internal_end->
fIter);
305 void *newiter = internal_source->
fCopy(
dest,internal_source->
fIter);
306 if (newiter ==
dest) {
309 internal_dest->
fIter = newiter;
310 return internal_dest;
352 std::vector<char> *vec = (std::vector<char>*)
collection;
359#ifdef R__VISUAL_CPLUSPLUS
360 fEnd = &(*(vec->end()-1)) + 1;
363 fEnd = &(*vec->end());
void Fatal(const char *location, const char *msgfmt,...)
TVirtualCollectionProxy::Next_t Next_t
virtual void * operator*() const
RegularIterator(void *collection, TVirtualCollectionProxy *proxy, Bool_t read_from_file)
VectorIterator(void *collection, TVirtualCollectionProxy *proxy, Bool_t read_from_file)
virtual void * operator*() const
TVirtualCollectionIterators fIterators
TGenericCollectionIterator(const TGenericCollectionIterator &)=delete
TGenericCollectionIterator & operator++()
TGenericCollectionIterator()=delete
static TGenericCollectionIterator * New(void *collection, TVirtualCollectionProxy *proxy)
virtual void * operator*() const =0
TGenericCollectionIterator(void *collection, TVirtualCollectionProxy *proxy, Bool_t read_from_file=kTRUE)
virtual ~TGenericCollectionIterator()
Small helper class to generically acquire and release iterators.
TVirtualCollectionProxy::CreateIterators_t CreateIterators_t
TVirtualCollectionIterators(const TVirtualCollectionIterators &)
void CreateIterators(void *collection, TVirtualCollectionProxy *proxy)
TVirtualCollectionIterators(TVirtualCollectionProxy *proxy, Bool_t read_from_file=kTRUE)
DeleteTwoIterators_t fDeleteTwoIterators
TVirtualCollectionProxy::DeleteTwoIterators_t DeleteTwoIterators_t
char fEndBuffer[TVirtualCollectionProxy::fgIteratorArenaSize]
TVirtualCollectionIterators()
CreateIterators_t fCreateIterators
~TVirtualCollectionIterators()
TVirtualCollectionIterators(CreateIterators_t creator, DeleteTwoIterators_t destruct)
char fBeginBuffer[TVirtualCollectionProxy::fgIteratorArenaSize]
void(* CreateIterators_t)(void *collection, void **begin_arena, void **end_arena, TVirtualCollectionProxy *proxy)
void *(* CopyIterator_t)(void *dest, const void *source)
void *(* Next_t)(void *iter, const void *end)
virtual Int_t GetCollectionType() const =0
virtual Next_t GetFunctionNext(Bool_t read=kTRUE)=0
virtual DeleteTwoIterators_t GetFunctionDeleteTwoIterators(Bool_t read=kTRUE)=0
void(* DeleteTwoIterators_t)(void *begin, void *end)
void(* DeleteIterator_t)(void *iter)
static const Int_t fgIteratorArenaSize
virtual CreateIterators_t GetFunctionCreateIterators(Bool_t read=kTRUE)=0
virtual DeleteIterator_t GetFunctionDeleteIterator(Bool_t read=kTRUE)=0
virtual CopyIterator_t GetFunctionCopyIterator(Bool_t read=kTRUE)=0
TVirtualCollectionPtrIterators(const TVirtualCollectionPtrIterators &)
TVirtualCollectionProxy::DeleteIterator_t Delete_t
char fRawBeginBuffer[TVirtualCollectionProxy::fgIteratorArenaSize]
TVirtualCollectionProxy::CreateIterators_t CreateIterators_t
TVirtualCollectionProxy::Next_t Next_t
DeleteTwoIterators_t fDeleteTwoIterators
void CreateIterators(void *collection, TVirtualCollectionProxy *proxy)
TVirtualCollectionPtrIterators()
static void DeleteIterator(void *iter)
TVirtualCollectionPtrIterators(TVirtualCollectionProxy *proxy)
TVirtualCollectionProxy::DeleteTwoIterators_t DeleteTwoIterators_t
TInternalIterator fBeginBuffer
TVirtualCollectionProxy::CopyIterator_t Copy_t
char fRawEndBuffer[TVirtualCollectionProxy::fgIteratorArenaSize]
static void * Next(void *iter, const void *end)
TInternalIterator fEndBuffer
CreateIterators_t fCreateIterators
static void * CopyIterator(void *dest, const void *source)
~TVirtualCollectionPtrIterators()
TInternalIterator & operator=(const TInternalIterator &)
TInternalIterator(const TInternalIterator &source)
TVirtualVectorIterators(TVirtualCollectionProxy *)
void CreateIterators(void *collection)
TVirtualCollectionProxy::CreateIterators_t CreateIterators_t
TVirtualVectorIterators(const TVirtualVectorIterators &)
TVirtualVectorIterators(CreateIterators_t)
TVirtualVectorIterators()
#define dest(otri, vertexptr)