Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
uavcan::Multiset< T > Class Template Reference

#include <multiset.hpp>

Inheritance diagram for uavcan::Multiset< T >:
Inheritance graph
[legend]

Classes

struct  Chunk
 
struct  ComparingPredicate
 
struct  IndexPredicate
 
struct  Item
 
struct  OperatorToFalsePredicateAdapter
 
struct  YesPredicate
 

Public Member Functions

void clear ()
 
T * emplace ()
 
template<typename P1 >
T * emplace (P1 p1)
 
template<typename P1 , typename P2 >
T * emplace (P1 p1, P2 p2)
 
template<typename P1 , typename P2 , typename P3 >
T * emplace (P1 p1, P2 p2, P3 p3)
 
template<typename Predicate >
T * find (Predicate predicate)
 
template<typename Predicate >
const T * find (Predicate predicate) const
 
template<typename Operator >
void forEach (Operator oper)
 
template<typename Operator >
void forEach (Operator oper) const
 
T * getByIndex (unsigned index)
 
const T * getByIndex (unsigned index) const
 
unsigned getSize () const
 
bool isEmpty () const
 
 Multiset (IPoolAllocator &allocator)
 
void removeAll (const T &ref)
 
template<typename Predicate >
void removeAllWhere (Predicate predicate)
 
void removeFirst (const T &ref)
 
template<typename Predicate >
void removeFirstWhere (Predicate predicate)
 
 ~Multiset ()
 

Private Types

enum  RemoveStrategy { RemoveOne, RemoveAll }
 

Private Member Functions

void compact ()
 
ItemfindOrCreateFreeSlot ()
 
template<typename Predicate >
void removeWhere (Predicate predicate, RemoveStrategy strategy)
 
- Private Member Functions inherited from uavcan::Noncopyable
 Noncopyable ()
 
 ~Noncopyable ()
 

Private Attributes

IPoolAllocatorallocator_
 
LinkedListRoot< Chunklist_
 

Detailed Description

template<typename T>
class uavcan::Multiset< T >

Slow but memory efficient unordered multiset. Unlike Map<>, this container does not move objects, so they don't have to be copyable.

Items will be allocated in the node's memory pool.

Definition at line 29 of file multiset.hpp.

Member Enumeration Documentation

◆ RemoveStrategy

template<typename T >
enum uavcan::Multiset::RemoveStrategy
private
Enumerator
RemoveOne 
RemoveAll 

Definition at line 131 of file multiset.hpp.

Constructor & Destructor Documentation

◆ Multiset()

template<typename T >
uavcan::Multiset< T >::Multiset ( IPoolAllocator allocator)
inline

Definition at line 191 of file multiset.hpp.

◆ ~Multiset()

template<typename T >
uavcan::Multiset< T >::~Multiset ( )
inline

Definition at line 195 of file multiset.hpp.

Member Function Documentation

◆ clear()

template<typename T >
void uavcan::Multiset< T >::clear ( )
inline

Definition at line 271 of file multiset.hpp.

◆ compact()

template<typename T >
void uavcan::Multiset< T >::compact
private

Definition at line 369 of file multiset.hpp.

◆ emplace() [1/4]

template<typename T >
T* uavcan::Multiset< T >::emplace ( )
inline

Creates one item in-place and returns a pointer to it. If creation fails due to lack of memory, UAVCAN_NULLPTR will be returned. Complexity is O(N).

Definition at line 205 of file multiset.hpp.

◆ emplace() [2/4]

template<typename T >
template<typename P1 >
T* uavcan::Multiset< T >::emplace ( P1  p1)
inline

Definition at line 218 of file multiset.hpp.

◆ emplace() [3/4]

template<typename T >
template<typename P1 , typename P2 >
T* uavcan::Multiset< T >::emplace ( P1  p1,
P2  p2 
)
inline

Definition at line 231 of file multiset.hpp.

◆ emplace() [4/4]

template<typename T >
template<typename P1 , typename P2 , typename P3 >
T* uavcan::Multiset< T >::emplace ( P1  p1,
P2  p2,
P3  p3 
)
inline

Definition at line 244 of file multiset.hpp.

◆ find() [1/2]

template<typename T >
template<typename Predicate >
T * uavcan::Multiset< T >::find ( Predicate  predicate)

Returns first entry where the predicate returns true. Predicate prototype: bool (const T& item)

Definition at line 437 of file multiset.hpp.

◆ find() [2/2]

template<typename T >
template<typename Predicate >
const T* uavcan::Multiset< T >::find ( Predicate  predicate) const
inline

Definition at line 282 of file multiset.hpp.

◆ findOrCreateFreeSlot()

template<typename T >
Multiset< T >::Item * uavcan::Multiset< T >::findOrCreateFreeSlot
private

Definition at line 342 of file multiset.hpp.

◆ forEach() [1/2]

template<typename T >
template<typename Operator >
void uavcan::Multiset< T >::forEach ( Operator  oper)
inline

Calls Operator for each item of the set. Operator prototype: void (T& item) void (const T& item) - const overload

Definition at line 294 of file multiset.hpp.

◆ forEach() [2/2]

template<typename T >
template<typename Operator >
void uavcan::Multiset< T >::forEach ( Operator  oper) const
inline

Definition at line 301 of file multiset.hpp.

◆ getByIndex() [1/2]

template<typename T >
T* uavcan::Multiset< T >::getByIndex ( unsigned  index)
inline

Returns an item located at the specified position from the beginning. Note that addition and removal operations invalidate indices. If index is greater than or equal the number of items, null pointer will be returned. Complexity is O(N).

Definition at line 313 of file multiset.hpp.

◆ getByIndex() [2/2]

template<typename T >
const T* uavcan::Multiset< T >::getByIndex ( unsigned  index) const
inline

Definition at line 319 of file multiset.hpp.

◆ getSize()

template<typename T >
unsigned uavcan::Multiset< T >::getSize

Counts number of items stored. Best case complexity is O(N).

Definition at line 461 of file multiset.hpp.

◆ isEmpty()

template<typename T >
bool uavcan::Multiset< T >::isEmpty ( ) const
inline

Complexity is O(1).

Definition at line 327 of file multiset.hpp.

◆ removeAll()

template<typename T >
void uavcan::Multiset< T >::removeAll ( const T &  ref)
inline

Definition at line 269 of file multiset.hpp.

◆ removeAllWhere()

template<typename T >
template<typename Predicate >
void uavcan::Multiset< T >::removeAllWhere ( Predicate  predicate)
inline

Removes entries where the predicate returns true. Predicate prototype: bool (T& item)

Definition at line 262 of file multiset.hpp.

◆ removeFirst()

template<typename T >
void uavcan::Multiset< T >::removeFirst ( const T &  ref)
inline

Definition at line 267 of file multiset.hpp.

◆ removeFirstWhere()

template<typename T >
template<typename Predicate >
void uavcan::Multiset< T >::removeFirstWhere ( Predicate  predicate)
inline

Definition at line 265 of file multiset.hpp.

◆ removeWhere()

template<typename T >
template<typename Predicate >
void uavcan::Multiset< T >::removeWhere ( Predicate  predicate,
RemoveStrategy  strategy 
)
private

Definition at line 395 of file multiset.hpp.

Member Data Documentation

◆ allocator_

template<typename T >
IPoolAllocator& uavcan::Multiset< T >::allocator_
private

Definition at line 122 of file multiset.hpp.

◆ list_

template<typename T >
LinkedListRoot<Chunk> uavcan::Multiset< T >::list_
private

Definition at line 121 of file multiset.hpp.


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


uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:04