Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooSTLRefCountList< T > Class Template Reference

template<class T>
class RooSTLRefCountList< T >

The RooSTLRefCountList is a simple collection of pointers to the template objects with reference counters.

The pointees are not owned, hence not deleted when removed from the collection. Objects can be searched for either by pointer or by name (confusion possible when objects with same name are present). This replicates the behaviour of the RooRefCountList.

Definition at line 39 of file RooSTLRefCountList.h.

Public Types

using Container_t = std::vector< T * >
 

Public Member Functions

 RooSTLRefCountList ()
 
 RooSTLRefCountList (const RooSTLRefCountList &)=default
 
virtual ~RooSTLRefCountList ()
 
void Add (T *obj, std::size_t initialCount=1)
 Add an object or increase refCount if it is already present.
 
Container_t::const_iterator begin () const
 Iterator over contained objects.
 
const Container_tcontainedObjects () const
 Direct reference to container of objects held by this list.
 
bool containsByNamePtr (const T *obj) const
 Check if list contains an item using findByNamePointer().
 
template<typename Obj_t >
bool containsByPointer (const Obj_t *obj) const
 Check if list contains an item using findByPointer().
 
bool containsSameName (const char *name) const
 Check if list contains an item using findByName().
 
bool empty () const
 Check if empty.
 
Container_t::const_iterator end () const
 End of contained objects.
 
Container_t::const_iterator findByName (const char *name) const
 Find an item by comparing strings returned by RooAbsArg::GetName()
 
T * findByNamePointer (const T *item) const
 Find an item by comparing RooAbsArg::namePtr() adresses.
 
template<typename Obj_t >
Container_t::const_iterator findByPointer (const Obj_t *item) const
 Find an item by comparing its adress.
 
RooSTLRefCountListoperator= (const RooSTLRefCountList &)=default
 
RooSTLRefCountListoperator= (RooSTLRefCountList &&)=default
 
Container_t::value_type operator[] (std::size_t index) const
 Retrieve an element from the list.
 
template<typename Obj_t >
std::size_t refCount (const Obj_t *obj) const
 Return ref count of item with given address.
 
std::size_t refCount (typename Container_t::const_iterator item) const
 Return ref count of item that iterator points to.
 
void Remove (const T *obj, bool force=false)
 Decrease ref count of given object.
 
void RemoveAll (const T *obj)
 Remove from list irrespective of ref count.
 
void reserve (std::size_t amount)
 
std::size_t size () const
 Number of contained objects (neglecting the ref count).
 

Static Public Attributes

static constexpr std::size_t minSizeForNamePointerOrdering = 7
 

Private Member Functions

void initializeOrderedStorage () const
 
std::vector< T * >::const_iterator lowerBoundByNamePointer (const T *item) const
 
bool orderedStorageNeedsSorting () const
 

Private Attributes

std::vector< T * > _orderedStorage
 
std::vector< UInt_t_refCount
 
unsigned long _renameCounterForLastSorting = 0
 
Container_t _storage
 

Static Private Attributes

static std::size_t const * _renameCounter = nullptr
 

#include <RooSTLRefCountList.h>

Member Typedef Documentation

◆ Container_t

template<class T >
using RooSTLRefCountList< T >::Container_t = std::vector<T*>

Definition at line 41 of file RooSTLRefCountList.h.

Constructor & Destructor Documentation

◆ RooSTLRefCountList() [1/2]

template<class T >
RooSTLRefCountList< T >::RooSTLRefCountList ( )
inline

Definition at line 45 of file RooSTLRefCountList.h.

◆ RooSTLRefCountList() [2/2]

template<class T >
RooSTLRefCountList< T >::RooSTLRefCountList ( const RooSTLRefCountList< T > &  )
default

◆ ~RooSTLRefCountList()

template<class T >
virtual RooSTLRefCountList< T >::~RooSTLRefCountList ( )
inlinevirtual

Definition at line 55 of file RooSTLRefCountList.h.

Member Function Documentation

◆ Add()

template<class T >
void RooSTLRefCountList< T >::Add ( T *  obj,
std::size_t  initialCount = 1 
)
inline

Add an object or increase refCount if it is already present.

Only compares pointers to check for existing objects

Definition at line 59 of file RooSTLRefCountList.h.

◆ begin()

template<class T >
Container_t::const_iterator RooSTLRefCountList< T >::begin ( ) const
inline

Iterator over contained objects.

Definition at line 90 of file RooSTLRefCountList.h.

◆ containedObjects()

template<class T >
const Container_t & RooSTLRefCountList< T >::containedObjects ( ) const
inline

Direct reference to container of objects held by this list.

Definition at line 106 of file RooSTLRefCountList.h.

◆ containsByNamePtr()

template<class T >
bool RooSTLRefCountList< T >::containsByNamePtr ( const T *  obj) const
inline

Check if list contains an item using findByNamePointer().

Definition at line 180 of file RooSTLRefCountList.h.

◆ containsByPointer()

template<class T >
template<typename Obj_t >
bool RooSTLRefCountList< T >::containsByPointer ( const Obj_t *  obj) const
inline

Check if list contains an item using findByPointer().

Definition at line 174 of file RooSTLRefCountList.h.

◆ containsSameName()

template<class T >
bool RooSTLRefCountList< T >::containsSameName ( const char *  name) const
inline

Check if list contains an item using findByName().

Definition at line 186 of file RooSTLRefCountList.h.

◆ empty()

template<class T >
bool RooSTLRefCountList< T >::empty ( ) const
inline

Check if empty.

Definition at line 126 of file RooSTLRefCountList.h.

◆ end()

template<class T >
Container_t::const_iterator RooSTLRefCountList< T >::end ( ) const
inline

End of contained objects.

Definition at line 95 of file RooSTLRefCountList.h.

◆ findByName()

template<class T >
Container_t::const_iterator RooSTLRefCountList< T >::findByName ( const char *  name) const
inline

Find an item by comparing strings returned by RooAbsArg::GetName()

Definition at line 139 of file RooSTLRefCountList.h.

◆ findByNamePointer()

template<class T >
T * RooSTLRefCountList< T >::findByNamePointer ( const T *  item) const
inline

Find an item by comparing RooAbsArg::namePtr() adresses.

Definition at line 152 of file RooSTLRefCountList.h.

◆ findByPointer()

template<class T >
template<typename Obj_t >
Container_t::const_iterator RooSTLRefCountList< T >::findByPointer ( const Obj_t *  item) const
inline

Find an item by comparing its adress.

Definition at line 133 of file RooSTLRefCountList.h.

◆ initializeOrderedStorage()

template<class T >
void RooSTLRefCountList< T >::initializeOrderedStorage ( ) const
inlineprivate

Definition at line 250 of file RooSTLRefCountList.h.

◆ lowerBoundByNamePointer()

template<class T >
std::vector< T * >::const_iterator RooSTLRefCountList< T >::lowerBoundByNamePointer ( const T *  item) const
inlineprivate

Definition at line 228 of file RooSTLRefCountList.h.

◆ operator=() [1/2]

template<class T >
RooSTLRefCountList & RooSTLRefCountList< T >::operator= ( const RooSTLRefCountList< T > &  )
default

◆ operator=() [2/2]

template<class T >
RooSTLRefCountList & RooSTLRefCountList< T >::operator= ( RooSTLRefCountList< T > &&  )
default

◆ operator[]()

template<class T >
Container_t::value_type RooSTLRefCountList< T >::operator[] ( std::size_t  index) const
inline

Retrieve an element from the list.

Definition at line 100 of file RooSTLRefCountList.h.

◆ orderedStorageNeedsSorting()

template<class T >
bool RooSTLRefCountList< T >::orderedStorageNeedsSorting ( ) const
inlineprivate

Definition at line 240 of file RooSTLRefCountList.h.

◆ refCount() [1/2]

template<class T >
template<typename Obj_t >
std::size_t RooSTLRefCountList< T >::refCount ( const Obj_t *  obj) const
inline

Return ref count of item with given address.

Definition at line 85 of file RooSTLRefCountList.h.

◆ refCount() [2/2]

template<class T >
std::size_t RooSTLRefCountList< T >::refCount ( typename Container_t::const_iterator  item) const
inline

Return ref count of item that iterator points to.

Definition at line 76 of file RooSTLRefCountList.h.

◆ Remove()

template<class T >
void RooSTLRefCountList< T >::Remove ( const T *  obj,
bool  force = false 
)
inline

Decrease ref count of given object.

Shrink list if ref count reaches 0.

Parameters
objDecrease ref count of given object. Compare by pointer.
forceIf true, remove irrespective of ref count.

Definition at line 194 of file RooSTLRefCountList.h.

◆ RemoveAll()

template<class T >
void RooSTLRefCountList< T >::RemoveAll ( const T *  obj)
inline

Remove from list irrespective of ref count.

Definition at line 220 of file RooSTLRefCountList.h.

◆ reserve()

template<class T >
void RooSTLRefCountList< T >::reserve ( std::size_t  amount)
inline

Definition at line 118 of file RooSTLRefCountList.h.

◆ size()

template<class T >
std::size_t RooSTLRefCountList< T >::size ( ) const
inline

Number of contained objects (neglecting the ref count).

Definition at line 112 of file RooSTLRefCountList.h.

Member Data Documentation

◆ _orderedStorage

template<class T >
std::vector<T*> RooSTLRefCountList< T >::_orderedStorage
mutableprivate

Definition at line 265 of file RooSTLRefCountList.h.

◆ _refCount

template<class T >
std::vector<UInt_t> RooSTLRefCountList< T >::_refCount
private

Definition at line 264 of file RooSTLRefCountList.h.

◆ _renameCounter

template<class T >
std::size_t const * RooSTLRefCountList< T >::_renameCounter = nullptr
staticprivate

Definition at line 271 of file RooSTLRefCountList.h.

◆ _renameCounterForLastSorting

template<class T >
unsigned long RooSTLRefCountList< T >::_renameCounterForLastSorting = 0
mutableprivate

Definition at line 266 of file RooSTLRefCountList.h.

◆ _storage

template<class T >
Container_t RooSTLRefCountList< T >::_storage
private

Definition at line 263 of file RooSTLRefCountList.h.

◆ minSizeForNamePointerOrdering

template<class T >
constexpr std::size_t RooSTLRefCountList< T >::minSizeForNamePointerOrdering = 7
staticconstexpr

Definition at line 43 of file RooSTLRefCountList.h.

  • roofit/roofitcore/inc/RooSTLRefCountList.h