RTT::internal::ListLocked< T > Class Template Reference

#include <ListLocked.hpp>

List of all members.

Classes

struct  Cont

Public Types

typedef T value_t
typedef T value_t

Public Member Functions

size_t append (const std::vector< T > &items)
bool append (value_t item)
size_t append (const std::vector< T > &items)
bool append (value_t item)
template<class Function >
void apply (Function func)
template<class Function >
void apply (Function func)
value_t back () const
value_t back () const
size_t capacity () const
size_t capacity () const
void clear ()
void clear ()
template<typename Pred >
bool delete_if (Pred pred)
template<typename Pred >
bool delete_if (Pred pred)
bool empty () const
bool empty () const
bool erase (value_t item)
bool erase (value_t item)
template<class Function >
value_t find_if (Function func, value_t blank=value_t())
template<class Function >
value_t find_if (Function func, value_t blank=value_t())
value_t front () const
value_t front () const
void grow (size_t items=1)
void grow (size_t items=1)
 ListLocked (unsigned int lsize, unsigned int unused=0)
 ListLocked (unsigned int lsize, unsigned int unused=0)
void reserve (size_t lsize)
void reserve (size_t lsize)
void shrink (size_t items=1)
void shrink (size_t items=1)
size_t size () const
size_t size () const
 ~ListLocked ()
 ~ListLocked ()

Private Types

typedef boost::intrusive::list
< Cont
BufferType
typedef boost::intrusive::list
< Cont
BufferType
typedef BufferType::const_iterator CIterator
typedef BufferType::const_iterator CIterator
typedef BufferType::iterator Iterator
typedef BufferType::iterator Iterator
typedef std::stack< Cont * > StackType
typedef std::stack< Cont * > StackType

Private Member Functions

value_tget_data (Cont &c)
value_tget_data (Cont &c)
Contget_item (value_t item)
Contget_item (value_t item)
void give_back (Cont *cont)
void give_back (Cont *cont)
bool is_item (value_t item, const Cont &cont)
bool is_item (value_t item, const Cont &cont)

Private Attributes

os::MutexRecursive m
BufferType mlist
StackType mreserved
unsigned int required

Detailed Description

template<class T>
class RTT::internal::ListLocked< T >

A simple lock-based list implementation to append or erase data of type T.

Note:
The mutex used by this implementation is recursive in order to allow apply() to call apply() recursively. Erasing self (using clear() or erase()) from within apply() is not supported and may lead to abnormal program termination.
Parameters:
T The value type to be stored in the list. Example : ListLocked is a list which holds values of type A.

Definition at line 72 of file install/include/rtt/internal/ListLocked.hpp.


Member Typedef Documentation

template<class T>
typedef boost::intrusive::list<Cont> RTT::internal::ListLocked< T >::BufferType [private]

Definition at line 81 of file rtt/internal/ListLocked.hpp.

template<class T>
typedef boost::intrusive::list<Cont> RTT::internal::ListLocked< T >::BufferType [private]

Definition at line 81 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
typedef BufferType::const_iterator RTT::internal::ListLocked< T >::CIterator [private]

Definition at line 84 of file rtt/internal/ListLocked.hpp.

template<class T>
typedef BufferType::const_iterator RTT::internal::ListLocked< T >::CIterator [private]

Definition at line 84 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
typedef BufferType::iterator RTT::internal::ListLocked< T >::Iterator [private]

Definition at line 83 of file rtt/internal/ListLocked.hpp.

template<class T>
typedef BufferType::iterator RTT::internal::ListLocked< T >::Iterator [private]

Definition at line 83 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
typedef std::stack<Cont*> RTT::internal::ListLocked< T >::StackType [private]

Definition at line 82 of file rtt/internal/ListLocked.hpp.

template<class T>
typedef std::stack<Cont*> RTT::internal::ListLocked< T >::StackType [private]

Definition at line 82 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
typedef T RTT::internal::ListLocked< T >::value_t

Definition at line 76 of file rtt/internal/ListLocked.hpp.

template<class T>
typedef T RTT::internal::ListLocked< T >::value_t

Definition at line 76 of file install/include/rtt/internal/ListLocked.hpp.


Constructor & Destructor Documentation

template<class T>
RTT::internal::ListLocked< T >::ListLocked ( unsigned int  lsize,
unsigned int  unused = 0 
) [inline]

Create a lock-based list wich can store lsize elements.

Parameters:
lsize the initial capacity of the list.

Definition at line 96 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
RTT::internal::ListLocked< T >::~ListLocked (  )  [inline]

Definition at line 103 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
RTT::internal::ListLocked< T >::ListLocked ( unsigned int  lsize,
unsigned int  unused = 0 
) [inline]

Create a lock-based list wich can store lsize elements.

Parameters:
lsize the initial capacity of the list.

Definition at line 96 of file rtt/internal/ListLocked.hpp.

template<class T>
RTT::internal::ListLocked< T >::~ListLocked (  )  [inline]

Definition at line 103 of file rtt/internal/ListLocked.hpp.


Member Function Documentation

template<class T>
size_t RTT::internal::ListLocked< T >::append ( const std::vector< T > &  items  )  [inline]

Append a sequence of values to the list.

Parameters:
items the values to append.
Returns:
the number of values written (may be less than items.size())

Definition at line 214 of file rtt/internal/ListLocked.hpp.

template<class T>
bool RTT::internal::ListLocked< T >::append ( value_t  item  )  [inline]

Append a single value to the list.

Parameters:
d the value to write
Returns:
false if the list is full.

Definition at line 182 of file rtt/internal/ListLocked.hpp.

template<class T>
size_t RTT::internal::ListLocked< T >::append ( const std::vector< T > &  items  )  [inline]

Append a sequence of values to the list.

Parameters:
items the values to append.
Returns:
the number of values written (may be less than items.size())

Definition at line 214 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
bool RTT::internal::ListLocked< T >::append ( value_t  item  )  [inline]

Append a single value to the list.

Parameters:
d the value to write
Returns:
false if the list is full.

Definition at line 182 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
template<class Function >
void RTT::internal::ListLocked< T >::apply ( Function  func  )  [inline]

Apply a function to the elements of the whole list.

Parameters:
func The function to apply.
Note:
func may not call clear() or erase() on the current element of this list.

Definition at line 274 of file rtt/internal/ListLocked.hpp.

template<class T>
template<class Function >
void RTT::internal::ListLocked< T >::apply ( Function  func  )  [inline]

Apply a function to the elements of the whole list.

Parameters:
func The function to apply.
Note:
func may not call clear() or erase() on the current element of this list.

Definition at line 274 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
value_t RTT::internal::ListLocked< T >::back (  )  const [inline]

Returns the last element of the list.

Definition at line 203 of file rtt/internal/ListLocked.hpp.

template<class T>
value_t RTT::internal::ListLocked< T >::back (  )  const [inline]

Returns the last element of the list.

Definition at line 203 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
size_t RTT::internal::ListLocked< T >::capacity (  )  const [inline]

Definition at line 111 of file rtt/internal/ListLocked.hpp.

template<class T>
size_t RTT::internal::ListLocked< T >::capacity (  )  const [inline]

Definition at line 111 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::clear (  )  [inline]

Definition at line 171 of file rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::clear (  )  [inline]

Definition at line 171 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
template<typename Pred >
bool RTT::internal::ListLocked< T >::delete_if ( Pred  pred  )  [inline]

Erase a value from the list.

Parameters:
function each elements for which pred returns true are removed
Returns:
true if at least one element has been removed
Note:
This function is only real-time if the destructor and copy-constructor of of T is real-time.

Definition at line 245 of file rtt/internal/ListLocked.hpp.

template<class T>
template<typename Pred >
bool RTT::internal::ListLocked< T >::delete_if ( Pred  pred  )  [inline]

Erase a value from the list.

Parameters:
function each elements for which pred returns true are removed
Returns:
true if at least one element has been removed
Note:
This function is only real-time if the destructor and copy-constructor of of T is real-time.

Definition at line 245 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
bool RTT::internal::ListLocked< T >::empty (  )  const [inline]

Definition at line 123 of file rtt/internal/ListLocked.hpp.

template<class T>
bool RTT::internal::ListLocked< T >::empty (  )  const [inline]

Definition at line 123 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
bool RTT::internal::ListLocked< T >::erase ( value_t  item  )  [inline]

Erase a value from the list.

Parameters:
item is to be erased from the list.
Returns:
true if found and erased.

Definition at line 230 of file rtt/internal/ListLocked.hpp.

template<class T>
bool RTT::internal::ListLocked< T >::erase ( value_t  item  )  [inline]

Erase a value from the list.

Parameters:
item is to be erased from the list.
Returns:
true if found and erased.

Definition at line 230 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
template<class Function >
value_t RTT::internal::ListLocked< T >::find_if ( Function  func,
value_t  blank = value_t() 
) [inline]

Find an item in the list such that func( item ) == true.

Parameters:
blank The value to return if not found.
Returns:
The item that matches func(item) or blank if none matches.

Definition at line 288 of file rtt/internal/ListLocked.hpp.

template<class T>
template<class Function >
value_t RTT::internal::ListLocked< T >::find_if ( Function  func,
value_t  blank = value_t() 
) [inline]

Find an item in the list such that func( item ) == true.

Parameters:
blank The value to return if not found.
Returns:
The item that matches func(item) or blank if none matches.

Definition at line 288 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
value_t RTT::internal::ListLocked< T >::front (  )  const [inline]

Returns the first element of the list.

Definition at line 194 of file rtt/internal/ListLocked.hpp.

template<class T>
value_t RTT::internal::ListLocked< T >::front (  )  const [inline]

Returns the first element of the list.

Definition at line 194 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
value_t& RTT::internal::ListLocked< T >::get_data ( Cont c  )  [inline, private]

Definition at line 315 of file rtt/internal/ListLocked.hpp.

template<class T>
value_t& RTT::internal::ListLocked< T >::get_data ( Cont c  )  [inline, private]

Definition at line 315 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
Cont& RTT::internal::ListLocked< T >::get_item ( value_t  item  )  [inline, private]

Definition at line 307 of file rtt/internal/ListLocked.hpp.

template<class T>
Cont& RTT::internal::ListLocked< T >::get_item ( value_t  item  )  [inline, private]

Definition at line 307 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::give_back ( Cont cont  )  [inline, private]

This is a dispose function for remove_and_dispose_if It takes a pointer as argument.

Parameters:
cont 

Definition at line 302 of file rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::give_back ( Cont cont  )  [inline, private]

This is a dispose function for remove_and_dispose_if It takes a pointer as argument.

Parameters:
cont 

Definition at line 302 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::grow ( size_t  items = 1  )  [inline]

Grow the capacity to contain at least n additional items. This method tries to avoid too much re-allocations, by growing a bit more than required every N invocations and growing nothing in between.

Parameters:
items The number of items to at least additionally reserve.

Definition at line 136 of file rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::grow ( size_t  items = 1  )  [inline]

Grow the capacity to contain at least n additional items. This method tries to avoid too much re-allocations, by growing a bit more than required every N invocations and growing nothing in between.

Parameters:
items The number of items to at least additionally reserve.

Definition at line 136 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
bool RTT::internal::ListLocked< T >::is_item ( value_t  item,
const Cont cont 
) [inline, private]

This is a predicate function for remove_and_dispose_if It takes a reference as argument.

Parameters:
item 
cont 
Returns:

Definition at line 327 of file rtt/internal/ListLocked.hpp.

template<class T>
bool RTT::internal::ListLocked< T >::is_item ( value_t  item,
const Cont cont 
) [inline, private]

This is a predicate function for remove_and_dispose_if It takes a reference as argument.

Parameters:
item 
cont 
Returns:

Definition at line 327 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::reserve ( size_t  lsize  )  [inline]

Reserve a capacity for this list.

Parameters:
lsize the minimal number of items this list will be able to hold. Will not drop below the current capacity() and this method will do nothing if lsize < this->capacity().

Definition at line 163 of file rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::reserve ( size_t  lsize  )  [inline]

Reserve a capacity for this list.

Parameters:
lsize the minimal number of items this list will be able to hold. Will not drop below the current capacity() and this method will do nothing if lsize < this->capacity().

Definition at line 163 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::shrink ( size_t  items = 1  )  [inline]

Shrink the capacity with at most n items. This method does not actually free memory, it just prevents a (number of) subsequent grow() invocations to allocate more memory.

Parameters:
items The number of items to at most remove from the capacity.

Definition at line 152 of file rtt/internal/ListLocked.hpp.

template<class T>
void RTT::internal::ListLocked< T >::shrink ( size_t  items = 1  )  [inline]

Shrink the capacity with at most n items. This method does not actually free memory, it just prevents a (number of) subsequent grow() invocations to allocate more memory.

Parameters:
items The number of items to at most remove from the capacity.

Definition at line 152 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
size_t RTT::internal::ListLocked< T >::size (  )  const [inline]

Definition at line 117 of file rtt/internal/ListLocked.hpp.

template<class T>
size_t RTT::internal::ListLocked< T >::size (  )  const [inline]

Definition at line 117 of file install/include/rtt/internal/ListLocked.hpp.


Member Data Documentation

template<class T>
os::MutexRecursive RTT::internal::ListLocked< T >::m [mutable, private]

Definition at line 90 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
BufferType RTT::internal::ListLocked< T >::mlist [private]

Definition at line 86 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
StackType RTT::internal::ListLocked< T >::mreserved [private]

Definition at line 87 of file install/include/rtt/internal/ListLocked.hpp.

template<class T>
unsigned int RTT::internal::ListLocked< T >::required [private]

Definition at line 88 of file install/include/rtt/internal/ListLocked.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


rtt
Author(s): RTT Developers
autogenerated on Fri Jan 11 09:50:03 2013