The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
ObjectList< TYPE > Class Template Reference

ObjectList is one of the basic Gaudi container classes capable of being registered in Data Stores. More...

#include <GaudiKernel/ObjectList.h>

Inheritance diagram for ObjectList< TYPE >:
Collaboration diagram for ObjectList< TYPE >:

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 Types inherited from ObjectContainerBase
typedef size_t size_type
 size_type, to conform the STL container interface
 

Public Member Functions

 ObjectList ()=default
 
 ObjectList (const ObjectList< TYPE > &)=delete
 
ObjectListoperator= (const ObjectList< TYPE > &)=delete
 
 ~ObjectList () override
 
const CLIDclID () const override
 Retrieve pointer to class definition structure.
 
ObjectList< TYPE >::iterator begin ()
 Return an iterator pointing to the beginning of the container.
 
ObjectList< TYPE >::const_iterator begin () const
 Return a const_iterator pointing to the beginning of the container.
 
ObjectList< TYPE >::iterator end ()
 Return an iterator pointing to the end of the container.
 
ObjectList< TYPE >::const_iterator end () const
 Return a const_iterator pointing to the end of the container.
 
ObjectList< TYPE >::reverse_iterator rbegin ()
 Return a reverse_iterator pointing to the beginning of the reversed container.
 
ObjectList< TYPE >::const_reverse_iterator rbegin () const
 Return a const_reverse_iterator pointing to the beginning of the reversed container.
 
ObjectList< TYPE >::reverse_iterator rend ()
 Return a reverse_iterator pointing to the end of the reversed container.
 
ObjectList< TYPE >::const_reverse_iterator rend () const
 Return a const_reverse_iterator pointing to the end of the reversed container.
 
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.
 
ObjectList< TYPE >::size_type numberOfObjects () const override
 The same as size(), return number of objects in the container.
 
ObjectList< TYPE >::size_type max_size () const
 Return the largest possible size of the container.
 
bool empty () const
 Return true if the size of the container is 0.
 
ObjectList< TYPE >::reference front ()
 Return reference to the first element.
 
ObjectList< TYPE >::const_reference front () const
 Return const_reference to the first element.
 
ObjectList< TYPE >::reference back ()
 Return reference to the last element.
 
ObjectList< TYPE >::const_reference back () const
 Return const_reference to the last element.
 
void push_back (typename ObjectList< TYPE >::const_reference value)
 push_back = append = insert a new element at the end of the container
 
long add (ContainedObject *pObject) override
 Add an object to the container.
 
void pop_back ()
 pop_back = remove the last element from the container The removed object will be deleted (see the method release)
 
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)
 
ObjectList< TYPE >::iterator insert (typename ObjectList< TYPE >::iterator position, typename ObjectList< TYPE >::const_reference value)
 Insert "value" before "position".
 
void erase (typename ObjectList< TYPE >::iterator position)
 Erase the object at "position" from the container. The removed object will be deleted.
 
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.
 
void clear ()
 Clear the entire content of the container and delete all contained objects.
 
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.
 
const ContainedObjectcontainedObject (long dist) const override
 Return const pointer to an object of a given distance.
 
ContainedObjectcontainedObject (long dist) override
 Return const pointer to an object of a given distance.
 
std::ostream & fillStream (std::ostream &s) const override
 Fill the output stream (ASCII)
 
- Public Member Functions inherited from DataObject
 DataObject ()
 Standard Constructor.
 
 DataObject (const DataObject &rhs)
 Copy Constructor.
 
DataObjectoperator= (const DataObject &rhs)
 Assignment Operator.
 
 DataObject (DataObject &&rhs)
 Move Constructor.
 
DataObjectoperator= (DataObject &&rhs)
 Move Assignment Operator.
 
virtual ~DataObject ()
 Standard Destructor.
 
virtual unsigned long addRef ()
 Add reference to object.
 
virtual unsigned long release ()
 release reference to object
 
const std::string & name () const
 Retreive DataObject name. It is the name when registered in the store.
 
virtual StatusCode update ()
 Provide empty placeholder for internal object reconfiguration callback.
 
void setRegistry (IRegistry *pRegistry)
 Set pointer to Registry.
 
IRegistryregistry () const
 Get pointer to Registry.
 
LinkManagerlinkMgr ()
 Retrieve Link manager.
 
const LinkManagerlinkMgr () const
 
unsigned char version () const
 Retrieve version number of this object representation.
 
void setVersion (unsigned char vsn)
 Set version number of this object representation.
 
unsigned long refCount () const
 Return the refcount.
 

Static Public Member Functions

static const CLIDclassID ()
 
- Static Public Member Functions inherited from DataObject
static const CLIDclassID ()
 Retrieve reference to class definition structure (static access)
 

Private Attributes

std::list< TYPE * > m_list
 

Additional Inherited Members

- Protected Member Functions inherited from ObjectContainerBase
 ObjectContainerBase ()=default
 Constructor.
 
 ObjectContainerBase (ObjectContainerBase &&)=default
 
ObjectContainerBaseoperator= (ObjectContainerBase &&)=default
 
 ~ObjectContainerBase () override=default
 

Detailed Description

template<class TYPE>
class ObjectList< TYPE >

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 42 of file ObjectList.h.

Member Typedef Documentation

◆ const_iterator

template<class TYPE>
typedef std::list<TYPE*>::const_iterator ObjectList< TYPE >::const_iterator

Definition at line 52 of file ObjectList.h.

◆ const_pointer

template<class TYPE>
typedef std::vector<TYPE*>::const_pointer ObjectList< TYPE >::const_pointer

Definition at line 58 of file ObjectList.h.

◆ const_reference

template<class TYPE>
typedef std::list<TYPE*>::const_reference ObjectList< TYPE >::const_reference

Definition at line 49 of file ObjectList.h.

◆ const_reverse_iterator

template<class TYPE>
typedef std::list<TYPE*>::const_reverse_iterator ObjectList< TYPE >::const_reverse_iterator

Definition at line 55 of file ObjectList.h.

◆ contained_type

template<class TYPE>
typedef TYPE ObjectList< TYPE >::contained_type

Definition at line 45 of file ObjectList.h.

◆ iterator

template<class TYPE>
typedef std::list<TYPE*>::iterator ObjectList< TYPE >::iterator

Definition at line 51 of file ObjectList.h.

◆ pointer

template<class TYPE>
typedef std::vector<TYPE*>::pointer ObjectList< TYPE >::pointer

Definition at line 57 of file ObjectList.h.

◆ reference

template<class TYPE>
typedef std::list<TYPE*>::reference ObjectList< TYPE >::reference

Definition at line 48 of file ObjectList.h.

◆ reverse_iterator

template<class TYPE>
typedef std::list<TYPE*>::reverse_iterator ObjectList< TYPE >::reverse_iterator

Definition at line 54 of file ObjectList.h.

◆ value_type

template<class TYPE>
typedef std::list<TYPE*>::value_type ObjectList< TYPE >::value_type

Definition at line 46 of file ObjectList.h.

Constructor & Destructor Documentation

◆ ObjectList() [1/2]

template<class TYPE>
ObjectList< TYPE >::ObjectList ( )
default

◆ ObjectList() [2/2]

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

◆ ~ObjectList()

template<class TYPE>
ObjectList< TYPE >::~ObjectList ( )
inlineoverride

Definition at line 65 of file ObjectList.h.

65{ clear(); }
void clear()
Clear the entire content of the container and delete all contained objects.
Definition ObjectList.h:209

Member Function Documentation

◆ add()

template<class TYPE>
long ObjectList< TYPE >::add ( ContainedObject * pObject)
inlineoverridevirtual

Add an object to the container.

Implements ObjectContainerBase.

Definition at line 135 of file ObjectList.h.

135 {
136 try {
137 auto ptr = dynamic_cast<typename ObjectList<TYPE>::value_type>( pObject );
138 if ( ptr ) {
139 push_back( ptr );
140 return m_list.size() - 1;
141 }
142 } catch ( ... ) {}
143 return -1;
144 }
ObjectList is one of the basic Gaudi container classes capable of being registered in Data Stores.
Definition ObjectList.h:42
std::list< TYPE * > m_list
Definition ObjectList.h:243
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:128

◆ back() [1/2]

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

Return reference to the last element.

Definition at line 122 of file ObjectList.h.

122{ return m_list.back(); }

◆ back() [2/2]

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

Return const_reference to the last element.

Definition at line 125 of file ObjectList.h.

125{ return m_list.back(); }

◆ begin() [1/2]

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

Return an iterator pointing to the beginning of the container.

Definition at line 75 of file ObjectList.h.

75{ return m_list.begin(); }

◆ begin() [2/2]

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

Return a const_iterator pointing to the beginning of the container.

Definition at line 78 of file ObjectList.h.

78{ return m_list.begin(); }

◆ classID()

template<class TYPE>
static const CLID & ObjectList< TYPE >::classID ( )
inlinestatic

Definition at line 69 of file ObjectList.h.

69 {
71 return clid;
72 }

◆ clear()

template<class TYPE>
void ObjectList< TYPE >::clear ( )
inline

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

Definition at line 209 of file ObjectList.h.

209{ erase( begin(), end() ); }
void erase(typename ObjectList< TYPE >::iterator position)
Erase the object at "position" from the container. The removed object will be deleted.
Definition ObjectList.h:185
ObjectList< TYPE >::iterator begin()
Return an iterator pointing to the beginning of the container.
Definition ObjectList.h:75
ObjectList< TYPE >::iterator end()
Return an iterator pointing to the end of the container.
Definition ObjectList.h:81

◆ clID()

template<class TYPE>
const CLID & ObjectList< TYPE >::clID ( ) const
inlineoverridevirtual

Retrieve pointer to class definition structure.

Reimplemented from DataObject.

Definition at line 68 of file ObjectList.h.

68{ return ObjectList<TYPE>::classID(); }
static const CLID & classID()
Definition ObjectList.h:69

◆ containedObject() [1/2]

template<class TYPE>
const ContainedObject * ObjectList< TYPE >::containedObject ( long dist) const
inlineoverridevirtual

Return const pointer to an object of a given distance.

Implements ObjectContainerBase.

Definition at line 219 of file ObjectList.h.

219 {
220 return dist < size() ? *std::next( begin(), dist ) : nullptr;
221 }
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:102

◆ containedObject() [2/2]

template<class TYPE>
ContainedObject * ObjectList< TYPE >::containedObject ( long dist)
inlineoverridevirtual

Return const pointer to an object of a given distance.

Implements ObjectContainerBase.

Definition at line 223 of file ObjectList.h.

223 {
224 return dist < size() ? *std::next( begin(), dist ) : nullptr;
225 }

◆ empty()

template<class TYPE>
bool ObjectList< TYPE >::empty ( ) const
inline

Return true if the size of the container is 0.

Definition at line 113 of file ObjectList.h.

113{ return m_list.empty(); }

◆ end() [1/2]

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

Return an iterator pointing to the end of the container.

Definition at line 81 of file ObjectList.h.

81{ return m_list.end(); }

◆ end() [2/2]

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

Return a const_iterator pointing to the end of the container.

Definition at line 84 of file ObjectList.h.

84{ return m_list.end(); }

◆ erase() [1/2]

template<class TYPE>
void ObjectList< TYPE >::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 197 of file ObjectList.h.

197 {
198 for ( auto iter = first; iter != last; ++iter ) {
199 // Set the back pointer to 0 to avoid repetitional searching
200 // for the object in the container, and deleting the object
201 ( *iter )->setParent( nullptr );
202 delete *iter;
203 }
204 // Removing from the container itself
205 m_list.erase( first, last );
206 }

◆ erase() [2/2]

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

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

Definition at line 185 of file ObjectList.h.

185 {
186 if ( ( *position )->parent() ) {
187 // Set the back pointer to 0 to avoid repetitional searching
188 // for the object in the container, and deleting the object
189 ( *position )->setParent( nullptr );
190 delete *position;
191 }
192 // Removing from the container itself
193 m_list.erase( position );
194 }

◆ fillStream()

template<class TYPE>
std::ostream & ObjectList< TYPE >::fillStream ( std::ostream & s) const
inlineoverridevirtual

Fill the output stream (ASCII)

Reimplemented from DataObject.

Definition at line 228 of file ObjectList.h.

228 {
229 s << "class ObjectList : size = " << std::setw( 12 ) << size() << "\n";
230 // Output the base class
231 // ObjectContainerBase::fillStream(s);
232 if ( !empty() ) {
233 s << "\nContents of the STL list :";
234 long count = 0;
235 for ( const auto& iter : m_list ) {
236 s << "\nIndex " << std::setw( 12 ) << count++ << " of object of type " << *iter;
237 }
238 }
239 return s;
240 }
bool empty() const
Return true if the size of the container is 0.
Definition ObjectList.h:113

◆ front() [1/2]

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

Return reference to the first element.

Definition at line 116 of file ObjectList.h.

116{ return m_list.front(); }

◆ front() [2/2]

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

Return const_reference to the first element.

Definition at line 119 of file ObjectList.h.

119{ return m_list.front(); }

◆ index()

template<class TYPE>
long ObjectList< TYPE >::index ( const ContainedObject * obj) const
inlineoverridevirtual

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.

Implements ObjectContainerBase.

Definition at line 213 of file ObjectList.h.

213 {
214 auto i = std::find_if( begin(), end(), [&]( const ContainedObject* o ) { return o == obj; } );
215 return i != end() ? std::distance( begin(), i ) : -1;
216 }

◆ insert()

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

Insert "value" before "position".

Definition at line 178 of file ObjectList.h.

179 {
180 value->setParent( this );
181 return m_list.insert( position, value );
182 }

◆ max_size()

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

Return the largest possible size of the container.

Definition at line 110 of file ObjectList.h.

110{ return m_list.max_size(); }

◆ numberOfObjects()

template<class TYPE>
ObjectList< TYPE >::size_type ObjectList< TYPE >::numberOfObjects ( ) const
inlineoverridevirtual

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

Implements ObjectContainerBase.

Definition at line 107 of file ObjectList.h.

107{ return m_list.size(); }

◆ operator=()

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

◆ pop_back()

template<class TYPE>
void ObjectList< TYPE >::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 148 of file ObjectList.h.

148 {
149 auto position = m_list.back();
150 // Set the back pointer to 0 to avoid repetitional searching
151 // for the object in the container, and deleting the object
152 position->setParent( nullptr );
153 delete position;
154 // Removing from the container itself
155 m_list.pop_back();
156 }

◆ push_back()

template<class TYPE>
void ObjectList< TYPE >::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 128 of file ObjectList.h.

128 {
129 if ( value->parent() ) { const_cast<ObjectContainerBase*>( value->parent() )->remove( value ); }
130 value->setParent( this );
131 m_list.push_back( value );
132 }
ObjectContainerBase()=default
Constructor.

◆ rbegin() [1/2]

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

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

Definition at line 88 of file ObjectList.h.

88{ return m_list.rbegin(); }

◆ rbegin() [2/2]

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

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

Definition at line 91 of file ObjectList.h.

91{ return m_list.rbegin(); }

◆ remove()

template<class TYPE>
long ObjectList< TYPE >::remove ( ContainedObject * value)
inlineoverridevirtual

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)

Implements ObjectContainerBase.

Definition at line 160 of file ObjectList.h.

160 {
161 // Find the object of value value
162 long idx = 0;
163 auto iter = std::find_if( begin(), end(), [&]( const ContainedObject* i ) { return i == value; } );
164 if ( iter == end() ) {
165 // Object cannot be released from the container,
166 // as it is not contained in it
167 return -1;
168 }
169
170 // Set the back pointer to 0 to avoid repetitional searching
171 // for the object in the container and deleting the object
172 ( *iter )->setParent( nullptr );
173 erase( iter );
174 return idx;
175 }

◆ rend() [1/2]

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

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

Definition at line 94 of file ObjectList.h.

94{ return m_list.rend(); }

◆ rend() [2/2]

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

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

Definition at line 97 of file ObjectList.h.

97{ return m_list.rend(); }

◆ size()

template<class TYPE>
ObjectList< TYPE >::size_type ObjectList< TYPE >::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 102 of file ObjectList.h.

102 {
103 // C++11: std::list::size is constant (pre C++11 it could be linear!)
104 return m_list.size();
105 }

Member Data Documentation

◆ m_list

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

Definition at line 243 of file ObjectList.h.


The documentation for this class was generated from the following files: