Classes | |
class | _bqueue_item |
class | _bqueue_itr |
class | bqueue |
Functions | |
template<class T > | |
void | intrusive_ptr_add_ref (_bqueue_item< T > *it) |
template<class T > | |
void | intrusive_ptr_release (_bqueue_item< T > *it) |
template<typename T > | |
void | swap (bqueue< T > &rh, bqueue< T > &lh) |
Backwards linked queue with "head sharing"
Author: Giovanni Petrucciani
For use in trajectory building, where we want to "fork" a trajectory candidate in two without copying around all the hits before the fork.
Supported operations (mimics a std container):
Note that boost::intrusive_ptr is used for items, so they are deleted automatically while avoiding problems if one deletes a queue which shares the head with another one
Disclaimer: I'm not sure the const_iterator is really const-correct..
V.I. 22/08/2012 As the bqueue is made to be shared its content ahs been forced to be constant. This avoids that accidentally an update in one Trajectory modifies the content of onother!
to support c++11 begin,end and operator++ has been added with the same semantics of rbegin,rend and operator-- Highly confusing, still the bqueue is a sort of reversed slist: provided the user knows should work....
|
inline |
Definition at line 77 of file bqueue.h.
References cmsutils::_bqueue_item< T >::addRef().
|
inline |
Definition at line 81 of file bqueue.h.
References cmsutils::_bqueue_item< T >::delRef().
Definition at line 246 of file bqueue.h.
References cmsutils::bqueue< T >::swap().