Orocos Real-Time Toolkit
2.5.0
|
This object represents the default queue implementation used by Orocos objects. More...
#include <rtt/internal/List.hpp>
Public Types | |
typedef T | value_t |
Public Member Functions | |
List (int qsize, int t=ORONUM_OS_MAX_THREADS) | |
Create a queue of fixed size. | |
size_t | capacity () const |
Returns the maximum number of elements this list can hold. | |
size_t | size () const |
Returns the current number of elements in this list. | |
bool | empty () const |
Returns true if this list is empty. | |
void | grow (size_t items=1) |
Grow the capacity to contain at least n additional items. | |
void | shrink (size_t items=1) |
Shrink the capacity with at most n items. | |
void | reserve (size_t lsize) |
Reserve a capacity for this list. | |
void | clear () |
Clears all elements in the list. | |
bool | append (value_t item) |
Append a single value to the list. | |
size_t | append (const std::vector< T > &items) |
Append a sequence of values to the list. | |
value_t | front () const |
Returns the first element of the list. | |
value_t | back () const |
Returns the last element of the list. | |
bool | erase (value_t item) |
Erase a value from the list. | |
template<typename Pred > | |
bool | delete_if (Pred pred) |
Erase a value from the list. | |
template<class Function > | |
void | apply (Function func) |
Apply a function to the elements of the whole list. | |
template<class Function > | |
void | apply_and_blank (Function func, value_t blank) |
Apply a function to the non-blanked elements of the list. | |
bool | erase_and_blank (value_t item, value_t blank) |
Erase an element from the list and blank it if possible. | |
template<class Function > | |
value_t | find_if (Function func, value_t blank=value_t()) |
Find an item in the list such that func( item ) == true. | |
Public Attributes | |
const unsigned int | MAX_THREADS |
The maximum number of threads. |
This object represents the default queue implementation used by Orocos objects.
RTT::internal::List< T >::List | ( | int | qsize, |
int | t = ORONUM_OS_MAX_THREADS |
||
) | [inline] |
bool RTT::internal::ListLockFree< T >::append | ( | value_t | item | ) | [inline, inherited] |
Append a single value to the list.
This function calls the copy-constructor of item and may call the destructor of item
item | the value to write |
Definition at line 344 of file ListLockFree.hpp.
size_t RTT::internal::ListLockFree< T >::append | ( | const std::vector< T > & | items | ) | [inline, inherited] |
Append a sequence of values to the list.
items | the values to append. |
Definition at line 401 of file ListLockFree.hpp.
void RTT::internal::ListLockFree< T >::apply | ( | Function | func | ) | [inline, inherited] |
Apply a function to the elements of the whole list.
func | The function to apply. |
Definition at line 524 of file ListLockFree.hpp.
Referenced by RTT::internal::SignalBase::disconnect().
void RTT::internal::ListLockFree< T >::apply_and_blank | ( | Function | func, |
value_t | blank | ||
) | [inline, inherited] |
Apply a function to the non-blanked elements of the list.
If during an apply_and_blank, the erase_and_blank function is called, that element will not be subject to func if not yet processed. You must not call this function concurrently from multiple threads.
func | The function to apply. |
blank | The 'blank' item. Each item of this list will be compared to this item using operator==(), if it matches, it is considered blank, and func is not applied. |
Definition at line 552 of file ListLockFree.hpp.
size_t RTT::internal::ListLockFree< T >::capacity | ( | ) | const [inline, inherited] |
Returns the maximum number of elements this list can hold.
Definition at line 178 of file ListLockFree.hpp.
Referenced by RTT::internal::ListLockFree< connection_t >::grow(), and RTT::internal::ListLockFree< connection_t >::reserve().
void RTT::internal::ListLockFree< T >::clear | ( | ) | [inline, inherited] |
Clears all elements in the list.
Definition at line 316 of file ListLockFree.hpp.
bool RTT::internal::ListLockFree< T >::delete_if | ( | Pred | pred | ) | [inline, inherited] |
Erase a value from the list.
function | each elements for which pred returns true are removed |
Definition at line 480 of file ListLockFree.hpp.
bool RTT::internal::ListLockFree< T >::empty | ( | ) | const [inline, inherited] |
Returns true if this list is empty.
Definition at line 206 of file ListLockFree.hpp.
Referenced by RTT::internal::SignalBase::destroy(), and RTT::corba::CorbaDispatcher::loop().
bool RTT::internal::ListLockFree< T >::erase | ( | value_t | item | ) | [inline, inherited] |
Erase a value from the list.
item | is to be erased from the list. |
Definition at line 438 of file ListLockFree.hpp.
Referenced by RTT::internal::SignalBase::destroy(), RTT::internal::ListLockFree< connection_t >::erase_and_blank(), and RTT::corba::CorbaDispatcher::loop().
bool RTT::internal::ListLockFree< T >::erase_and_blank | ( | value_t | item, |
value_t | blank | ||
) | [inline, inherited] |
Erase an element from the list and blank it if possible.
If during an apply_and_blank, the erase_and_blank function is called, that element will not be subject to func if not yet processed. You may call this function concurrently from multiple threads.
item | The item to erase from the list. |
blank | The 'blank' item to use to blank item from the list. |
Definition at line 597 of file ListLockFree.hpp.
value_t RTT::internal::ListLockFree< T >::find_if | ( | Function | func, |
value_t | blank = value_t() |
||
) | [inline, inherited] |
Find an item in the list such that func( item ) == true.
blank | The value to return if not found. |
Definition at line 626 of file ListLockFree.hpp.
value_t RTT::internal::ListLockFree< T >::front | ( | ) | const [inline, inherited] |
Returns the first element of the list.
Definition at line 373 of file ListLockFree.hpp.
Referenced by RTT::internal::SignalBase::destroy(), and RTT::corba::CorbaDispatcher::loop().
void RTT::internal::ListLockFree< T >::grow | ( | size_t | items = 1 | ) | [inline, inherited] |
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.
items | The number of items to at least additionally reserve. |
Definition at line 224 of file ListLockFree.hpp.
void RTT::internal::ListLockFree< T >::reserve | ( | size_t | lsize | ) | [inline, inherited] |
Reserve a capacity for this list.
If you wish to invoke this method concurrently, guard it with a mutex. The other methods may be invoked concurrently with this method.
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(). @ Not real-time if lsize <= this->capacity(). |
Definition at line 252 of file ListLockFree.hpp.
Referenced by RTT::internal::ListLockFree< connection_t >::grow(), and RTT::internal::SignalBase::reserve().
void RTT::internal::ListLockFree< T >::shrink | ( | size_t | items = 1 | ) | [inline, inherited] |
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.
items | The number of items to at most remove from the capacity. |
Definition at line 238 of file ListLockFree.hpp.
size_t RTT::internal::ListLockFree< T >::size | ( | ) | const [inline, inherited] |
Returns the current number of elements in this list.
Definition at line 192 of file ListLockFree.hpp.
const unsigned int RTT::internal::ListLockFree< T >::MAX_THREADS [inherited] |
The maximum number of threads.
The number of threads which may concurrently access this buffer.
Definition at line 93 of file ListLockFree.hpp.