The Gaudi Framework  master (37c0b60a)
ObjectList Class Reference

#include <GaudiKernel/ObjectList.h>

Collaboration diagram for ObjectList:

Public Types

typedef TYPE contained_type
 
typedef std::list< TYPE * >::value_type value_type
 
typedef std::list< TYPE * >::reference reference
 
typedef std::list< TYPE * >::const_reference const_reference
 
typedef std::list< TYPE * >::iterator iterator
 
typedef std::list< TYPE * >::const_iterator const_iterator
 
typedef std::list< TYPE * >::reverse_iterator reverse_iterator
 
typedef std::list< TYPE * >::const_reverse_iterator const_reverse_iterator
 
typedef std::vector< TYPE * >::pointer pointer
 
typedef std::vector< TYPE * >::const_pointer const_pointer
 

Public Member Functions

 ObjectList ()=default
 Constructors. More...
 
 ObjectList (const ObjectList< TYPE > &)=delete
 
ObjectListoperator= (const ObjectList< TYPE > &)=delete
 
 ~ObjectList () override
 Destructor. More...
 
const CLIDclID () const override
 Retrieve pointer to class definition structure. More...
 
ObjectList< TYPE >::iterator begin ()
 Return an iterator pointing to the beginning of the container. More...
 
ObjectList< TYPE >::const_iterator begin () const
 Return a const_iterator pointing to the beginning of the container. More...
 
ObjectList< TYPE >::iterator end ()
 Return an iterator pointing to the end of the container. More...
 
ObjectList< TYPE >::const_iterator end () const
 Return a const_iterator pointing to the end of the container. More...
 
ObjectList< TYPE >::reverse_iterator rbegin ()
 Return a reverse_iterator pointing to the beginning of the reversed container. More...
 
ObjectList< TYPE >::const_reverse_iterator rbegin () const
 Return a const_reverse_iterator pointing to the beginning of the reversed container. More...
 
ObjectList< TYPE >::reverse_iterator rend ()
 Return a reverse_iterator pointing to the end of the reversed container. More...
 
ObjectList< TYPE >::const_reverse_iterator rend () const
 Return a const_reverse_iterator pointing to the end of the reversed container. More...
 
ObjectList< TYPE >::size_type size () const
 Return the size of the container Size means the number of objects stored in the container, independently on the amount of information stored in each object. More...
 
ObjectList< TYPE >::size_type numberOfObjects () const override
 The same as size(), return number of objects in the container. More...
 
ObjectList< TYPE >::size_type max_size () const
 Return the largest possible size of the container. More...
 
bool empty () const
 Return true if the size of the container is 0. More...
 
ObjectList< TYPE >::reference front ()
 Return reference to the first element. More...
 
ObjectList< TYPE >::const_reference front () const
 Return const_reference to the first element. More...
 
ObjectList< TYPE >::reference back ()
 Return reference to the last element. More...
 
ObjectList< TYPE >::const_reference back () const
 Return const_reference to the last element. More...
 
void push_back (typename ObjectList< TYPE >::const_reference value)
 push_back = append = insert a new element at the end of the container More...
 
long add (ContainedObject *pObject) override
 Add an object to the container. More...
 
void pop_back ()
 pop_back = remove the last element from the container The removed object will be deleted (see the method release) More...
 
long remove (ContainedObject *value) override
 Release object from the container (the pointer will be removed from the container, but the object itself will remain alive) (see the method pop_back) More...
 
ObjectList< TYPE >::iterator insert (typename ObjectList< TYPE >::iterator position, typename ObjectList< TYPE >::const_reference value)
 Insert "value" before "position". More...
 
void erase (typename ObjectList< TYPE >::iterator position)
 Erase the object at "position" from the container. The removed object will be deleted. More...
 
void erase (typename ObjectList< TYPE >::iterator first, typename ObjectList< TYPE >::iterator last)
 Erase the range [first, last) from the container. The removed object will be deleted. More...
 
void clear ()
 Clear the entire content of the container and delete all contained objects. More...
 
long index (const ContainedObject *obj) const override
 Return distance of a given object from the beginning of its container It corresponds to the "index" ( from 0 to size()-1 ) If "obj" not fount, return -1. More...
 
const ContainedObjectcontainedObject (long dist) const override
 Return const pointer to an object of a given distance. More...
 
ContainedObjectcontainedObject (long dist) override
 Return const pointer to an object of a given distance. More...
 
std::ostreamfillStream (std::ostream &s) const override
 Fill the output stream (ASCII) More...
 

Static Public Member Functions

static const CLIDclassID ()
 

Private Attributes

std::list< TYPE * > m_list
 The STL list. More...
 

Detailed Description

ObjectList is one of the basic Gaudi container classes capable of being registered in Data Stores. It is based on Standard Library (STL) std::list (see STL Programmer's Guide) ObjectList has all functions of the std::list interface,

Each object is allowed to belong into a single container only. After inserting the object into the container, it takes over all responsibilities for the object. E.g. erasing the object from its container causes removing the object's pointer from the container and deleting the object itself.

Author
Pavel Binko
Pere Mato
Date
19/10/1999, 30/11/2000

Definition at line 24 of file ContainedObject.h.

Member Typedef Documentation

◆ const_iterator

Definition at line 55 of file ObjectList.h.

◆ const_pointer

Definition at line 65 of file ObjectList.h.

◆ const_reference

Definition at line 52 of file ObjectList.h.

◆ const_reverse_iterator

◆ contained_type

Definition at line 48 of file ObjectList.h.

◆ iterator

Definition at line 54 of file ObjectList.h.

◆ pointer

Definition at line 64 of file ObjectList.h.

◆ reference

Definition at line 51 of file ObjectList.h.

◆ reverse_iterator

Definition at line 57 of file ObjectList.h.

◆ value_type

Definition at line 49 of file ObjectList.h.

Constructor & Destructor Documentation

◆ ObjectList() [1/2]

ObjectList::ObjectList ( )
default

Constructors.

◆ ObjectList() [2/2]

ObjectList::ObjectList ( const ObjectList< TYPE > &  )
delete

◆ ~ObjectList()

ObjectList::~ObjectList ( )
inlineoverride

Destructor.

Definition at line 76 of file ObjectList.h.

76 { clear(); }

Member Function Documentation

◆ add()

long ObjectList::add ( ContainedObject pObject)
inlineoverride

Add an object to the container.

Definition at line 146 of file ObjectList.h.

146  {
147  try {
148  auto ptr = dynamic_cast<typename ObjectList<TYPE>::value_type>( pObject );
149  if ( ptr ) {
150  push_back( ptr );
151  return m_list.size() - 1;
152  }
153  } catch ( ... ) {}
154  return -1;
155  }

◆ back() [1/2]

ObjectList<TYPE>::reference ObjectList::back ( )
inline

Return reference to the last element.

Definition at line 133 of file ObjectList.h.

133 { return m_list.back(); }

◆ back() [2/2]

ObjectList<TYPE>::const_reference ObjectList::back ( ) const
inline

Return const_reference to the last element.

Definition at line 136 of file ObjectList.h.

136 { return m_list.back(); }

◆ begin() [1/2]

ObjectList<TYPE>::iterator ObjectList::begin ( )
inline

Return an iterator pointing to the beginning of the container.

Definition at line 86 of file ObjectList.h.

86 { return m_list.begin(); }

◆ begin() [2/2]

ObjectList<TYPE>::const_iterator ObjectList::begin ( ) const
inline

Return a const_iterator pointing to the beginning of the container.

Definition at line 89 of file ObjectList.h.

89 { return m_list.begin(); }

◆ classID()

static const CLID& ObjectList::classID ( )
inlinestatic

Definition at line 80 of file ObjectList.h.

80  {
81  static CLID clid = TYPE::classID() + CLID_ObjectList;
82  return clid;
83  }

◆ clear()

void ObjectList::clear ( )
inline

Clear the entire content of the container and delete all contained objects.

Definition at line 220 of file ObjectList.h.

220 { erase( begin(), end() ); }

◆ clID()

const CLID& ObjectList::clID ( ) const
inlineoverride

Retrieve pointer to class definition structure.

Definition at line 79 of file ObjectList.h.

79 { return ObjectList<TYPE>::classID(); }

◆ containedObject() [1/2]

const ContainedObject* ObjectList::containedObject ( long  dist) const
inlineoverride

Return const pointer to an object of a given distance.

Definition at line 230 of file ObjectList.h.

230  {
231  return dist < size() ? *std::next( begin(), dist ) : nullptr;
232  }

◆ containedObject() [2/2]

ContainedObject* ObjectList::containedObject ( long  dist)
inlineoverride

Return const pointer to an object of a given distance.

Definition at line 234 of file ObjectList.h.

234  {
235  return dist < size() ? *std::next( begin(), dist ) : nullptr;
236  }

◆ empty()

bool ObjectList::empty ( ) const
inline

Return true if the size of the container is 0.

Definition at line 124 of file ObjectList.h.

124 { return m_list.empty(); }

◆ end() [1/2]

ObjectList<TYPE>::iterator ObjectList::end ( )
inline

Return an iterator pointing to the end of the container.

Definition at line 92 of file ObjectList.h.

92 { return m_list.end(); }

◆ end() [2/2]

ObjectList<TYPE>::const_iterator ObjectList::end ( ) const
inline

Return a const_iterator pointing to the end of the container.

Definition at line 95 of file ObjectList.h.

95 { return m_list.end(); }

◆ erase() [1/2]

void ObjectList::erase ( typename ObjectList< TYPE >::iterator  first,
typename ObjectList< TYPE >::iterator  last 
)
inline

Erase the range [first, last) from the container. The removed object will be deleted.

Definition at line 208 of file ObjectList.h.

208  {
209  for ( auto iter = first; iter != last; ++iter ) {
210  // Set the back pointer to 0 to avoid repetitional searching
211  // for the object in the container, and deleting the object
212  ( *iter )->setParent( nullptr );
213  delete *iter;
214  }
215  // Removing from the container itself
216  m_list.erase( first, last );
217  }

◆ erase() [2/2]

void ObjectList::erase ( typename ObjectList< TYPE >::iterator  position)
inline

Erase the object at "position" from the container. The removed object will be deleted.

Definition at line 196 of file ObjectList.h.

196  {
197  if ( ( *position )->parent() ) {
198  // Set the back pointer to 0 to avoid repetitional searching
199  // for the object in the container, and deleting the object
200  ( *position )->setParent( nullptr );
201  delete *position;
202  }
203  // Removing from the container itself
204  m_list.erase( position );
205  }

◆ fillStream()

std::ostream& ObjectList::fillStream ( std::ostream s) const
inlineoverride

Fill the output stream (ASCII)

Definition at line 239 of file ObjectList.h.

239  {
240  s << "class ObjectList : size = " << std::setw( 12 ) << size() << "\n";
241  // Output the base class
242  // ObjectContainerBase::fillStream(s);
243  if ( !empty() ) {
244  s << "\nContents of the STL list :";
245  long count = 0;
246  for ( const auto& iter : m_list ) {
247  s << "\nIndex " << std::setw( 12 ) << count++ << " of object of type " << *iter;
248  }
249  }
250  return s;
251  }

◆ front() [1/2]

ObjectList<TYPE>::reference ObjectList::front ( )
inline

Return reference to the first element.

Definition at line 127 of file ObjectList.h.

127 { return m_list.front(); }

◆ front() [2/2]

ObjectList<TYPE>::const_reference ObjectList::front ( ) const
inline

Return const_reference to the first element.

Definition at line 130 of file ObjectList.h.

130 { return m_list.front(); }

◆ index()

long ObjectList::index ( const ContainedObject obj) const
inlineoverride

Return distance of a given object from the beginning of its container It corresponds to the "index" ( from 0 to size()-1 ) If "obj" not fount, return -1.

Definition at line 224 of file ObjectList.h.

224  {
225  auto i = std::find_if( begin(), end(), [&]( const ContainedObject* o ) { return o == obj; } );
226  return i != end() ? std::distance( begin(), i ) : -1;
227  }

◆ insert()

ObjectList<TYPE>::iterator ObjectList::insert ( typename ObjectList< TYPE >::iterator  position,
typename ObjectList< TYPE >::const_reference  value 
)
inline

Insert "value" before "position".

Definition at line 189 of file ObjectList.h.

190  {
191  value->setParent( this );
192  return m_list.insert( position, value );
193  }

◆ max_size()

ObjectList<TYPE>::size_type ObjectList::max_size ( ) const
inline

Return the largest possible size of the container.

Definition at line 121 of file ObjectList.h.

121 { return m_list.max_size(); }

◆ numberOfObjects()

ObjectList<TYPE>::size_type ObjectList::numberOfObjects ( ) const
inlineoverride

The same as size(), return number of objects in the container.

Definition at line 118 of file ObjectList.h.

118 { return m_list.size(); }

◆ operator=()

ObjectList& ObjectList::operator= ( const ObjectList< TYPE > &  )
delete

◆ pop_back()

void ObjectList::pop_back ( )
inline

pop_back = remove the last element from the container The removed object will be deleted (see the method release)

Definition at line 159 of file ObjectList.h.

159  {
160  auto position = m_list.back();
161  // Set the back pointer to 0 to avoid repetitional searching
162  // for the object in the container, and deleting the object
163  position->setParent( nullptr );
164  delete position;
165  // Removing from the container itself
166  m_list.pop_back();
167  }

◆ push_back()

void ObjectList::push_back ( typename ObjectList< TYPE >::const_reference  value)
inline

push_back = append = insert a new element at the end of the container

Definition at line 139 of file ObjectList.h.

139  {
140  if ( value->parent() ) { const_cast<ObjectContainerBase*>( value->parent() )->remove( value ); }
141  value->setParent( this );
142  m_list.push_back( value );
143  }

◆ rbegin() [1/2]

ObjectList<TYPE>::reverse_iterator ObjectList::rbegin ( )
inline

Return a reverse_iterator pointing to the beginning of the reversed container.

Definition at line 99 of file ObjectList.h.

99 { return m_list.rbegin(); }

◆ rbegin() [2/2]

ObjectList<TYPE>::const_reverse_iterator ObjectList::rbegin ( ) const
inline

Return a const_reverse_iterator pointing to the beginning of the reversed container.

Definition at line 102 of file ObjectList.h.

102 { return m_list.rbegin(); }

◆ remove()

long ObjectList::remove ( ContainedObject value)
inlineoverride

Release object from the container (the pointer will be removed from the container, but the object itself will remain alive) (see the method pop_back)

Definition at line 171 of file ObjectList.h.

171  {
172  // Find the object of value value
173  long idx = 0;
174  auto iter = std::find_if( begin(), end(), [&]( const ContainedObject* i ) { return i == value; } );
175  if ( iter == end() ) {
176  // Object cannot be released from the container,
177  // as it is not contained in it
178  return -1;
179  }
180 
181  // Set the back pointer to 0 to avoid repetitional searching
182  // for the object in the container and deleting the object
183  ( *iter )->setParent( nullptr );
184  erase( iter );
185  return idx;
186  }

◆ rend() [1/2]

ObjectList<TYPE>::reverse_iterator ObjectList::rend ( )
inline

Return a reverse_iterator pointing to the end of the reversed container.

Definition at line 105 of file ObjectList.h.

105 { return m_list.rend(); }

◆ rend() [2/2]

ObjectList<TYPE>::const_reverse_iterator ObjectList::rend ( ) const
inline

Return a const_reverse_iterator pointing to the end of the reversed container.

Definition at line 108 of file ObjectList.h.

108 { return m_list.rend(); }

◆ size()

ObjectList<TYPE>::size_type ObjectList::size ( ) const
inline

Return the size of the container Size means the number of objects stored in the container, independently on the amount of information stored in each object.

Definition at line 113 of file ObjectList.h.

113  {
114  // C++11: std::list::size is constant (pre C++11 it could be linear!)
115  return m_list.size();
116  }

Member Data Documentation

◆ m_list

std::list<TYPE*> ObjectList::m_list
private

The STL list.

Definition at line 255 of file ObjectList.h.


The documentation for this class was generated from the following files:
gaudirun.s
string s
Definition: gaudirun.py:346
std::find_if
T find_if(T... args)
std::list::size
T size(T... args)
ObjectList::push_back
void push_back(typename ObjectList< TYPE >::const_reference value)
push_back = append = insert a new element at the end of the container
Definition: ObjectList.h:139
std::distance
T distance(T... args)
ObjectList::clear
void clear()
Clear the entire content of the container and delete all contained objects.
Definition: ObjectList.h:220
std::list::back
T back(T... args)
ObjectList::end
ObjectList< TYPE >::iterator end()
Return an iterator pointing to the end of the container.
Definition: ObjectList.h:92
std::list::front
T front(T... args)
ObjectList::remove
long remove(ContainedObject *value) override
Release object from the container (the pointer will be removed from the container,...
Definition: ObjectList.h:171
std::list::push_back
T push_back(T... args)
ObjectList::m_list
std::list< TYPE * > m_list
The STL list.
Definition: ObjectList.h:255
ObjectList::erase
void erase(typename ObjectList< TYPE >::iterator position)
Erase the object at "position" from the container. The removed object will be deleted.
Definition: ObjectList.h:196
GaudiPython.Bindings.nullptr
nullptr
Definition: Bindings.py:87
std::list::erase
T erase(T... args)
CLID
unsigned int CLID
Class ID definition.
Definition: ClassID.h:18
std::list::pop_back
T pop_back(T... args)
std::list::max_size
T max_size(T... args)
std::list::rend
T rend(T... args)
ObjectList::begin
ObjectList< TYPE >::iterator begin()
Return an iterator pointing to the beginning of the container.
Definition: ObjectList.h:86
ObjectContainerBase
Definition: ObjectContainerBase.h:29
std::list::begin
T begin(T... args)
std::list::insert
T insert(T... args)
ObjectList::classID
static const CLID & classID()
Definition: ObjectList.h:80
std::count
T count(T... args)
std::list::empty
T empty(T... args)
std::list::end
T end(T... args)
ObjectList::value_type
std::list< TYPE * >::value_type value_type
Definition: ObjectList.h:49
std::setw
T setw(T... args)
ObjectList::size
ObjectList< TYPE >::size_type size() const
Return the size of the container Size means the number of objects stored in the container,...
Definition: ObjectList.h:113
ContainedObject
Definition: ContainedObject.h:41
std::list::rbegin
T rbegin(T... args)
ObjectList::empty
bool empty() const
Return true if the size of the container is 0.
Definition: ObjectList.h:124
std::next
T next(T... args)