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....
void cmsutils::intrusive_ptr_add_ref | ( | _bqueue_item< T > * | it | ) | [inline] |
Definition at line 68 of file bqueue.h.
References cmsutils::_bqueue_item< T >::addRef().
{ it->addRef(); }
void cmsutils::intrusive_ptr_release | ( | _bqueue_item< T > * | it | ) | [inline] |
Definition at line 69 of file bqueue.h.
References cmsutils::_bqueue_item< T >::delRef().
{ it->delRef(); }