Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
iv::containers::OverwritingCircularQueue< T, Size > Class Template Reference

#include <CircularQueue.hpp>

Inheritance diagram for iv::containers::OverwritingCircularQueue< T, Size >:
[legend]
Collaboration diagram for iv::containers::OverwritingCircularQueue< T, Size >:
[legend]

Public Member Functions

 OverwritingCircularQueue ()=default
 
 OverwritingCircularQueue (const OverwritingCircularQueue &)=delete
 
bool push (const T &item) override
 Pushes an item into the queue. If the queue is full, it will pop the front item and push the new one.
 
void pop (T &item)
 
void pop ()
 
bool popWithFilter (T &item, const std::function< bool(const T &)> &filter)
 
void get (T &item)
 
void clear ()
 
bool empty ()
 
bool full ()
 
uint64_t size ()
 
uint64_t occupied ()
 

Private Member Functions

bool unblockingFull () const
 
bool unblockingEmpty () const
 
void unblockingPop ()
 

Private Attributes

std::array< T, Size > m_data
 
uint64_t m_front {0}
 
uint64_t m_rear {0}
 
uint64_t m_occupied {0}
 
std::mutex m_mutex
 
std::condition_variable_any m_cond
 

Constructor & Destructor Documentation

◆ OverwritingCircularQueue() [1/2]

template<typename T , uint64_t Size>
iv::containers::OverwritingCircularQueue< T, Size >::OverwritingCircularQueue ( )
default

◆ OverwritingCircularQueue() [2/2]

template<typename T , uint64_t Size>
iv::containers::OverwritingCircularQueue< T, Size >::OverwritingCircularQueue ( const OverwritingCircularQueue< T, Size > & )
delete

Member Function Documentation

◆ clear()

template<typename T , uint64_t Size>
void iv::containers::CircularQueue< T, Size >::clear ( )
inlineinherited

◆ empty()

template<typename T , uint64_t Size>
bool iv::containers::CircularQueue< T, Size >::empty ( )
inlineinherited

◆ full()

template<typename T , uint64_t Size>
bool iv::containers::CircularQueue< T, Size >::full ( )
inlineinherited

◆ get()

template<typename T , uint64_t Size>
void iv::containers::CircularQueue< T, Size >::get ( T & item)
inlineinherited

◆ occupied()

template<typename T , uint64_t Size>
uint64_t iv::containers::CircularQueue< T, Size >::occupied ( )
inlineinherited

◆ pop() [1/2]

template<typename T , uint64_t Size>
void iv::containers::CircularQueue< T, Size >::pop ( )
inlineinherited

◆ pop() [2/2]

template<typename T , uint64_t Size>
void iv::containers::CircularQueue< T, Size >::pop ( T & item)
inlineinherited

◆ popWithFilter()

template<typename T , uint64_t Size>
bool iv::containers::CircularQueue< T, Size >::popWithFilter ( T & item,
const std::function< bool(const T &)> & filter )
inlineinherited

◆ push()

template<typename T , uint64_t Size>
bool iv::containers::OverwritingCircularQueue< T, Size >::push ( const T & item)
inlineoverridevirtual

Pushes an item into the queue. If the queue is full, it will pop the front item and push the new one.

Parameters
itemItem to push.
Returns
true If the queue popped some elements in order to push the new one, otherwise, false.

Reimplemented from iv::containers::CircularQueue< T, Size >.

◆ size()

template<typename T , uint64_t Size>
uint64_t iv::containers::CircularQueue< T, Size >::size ( )
inlineinherited

◆ unblockingEmpty()

template<typename T , uint64_t Size>
bool iv::containers::CircularQueue< T, Size >::unblockingEmpty ( ) const
inlinenodiscardprivateinherited

◆ unblockingFull()

template<typename T , uint64_t Size>
bool iv::containers::CircularQueue< T, Size >::unblockingFull ( ) const
inlinenodiscardprivateinherited

◆ unblockingPop()

template<typename T , uint64_t Size>
void iv::containers::CircularQueue< T, Size >::unblockingPop ( )
inlineprivateinherited

Member Data Documentation

◆ m_cond

template<typename T , uint64_t Size>
std::condition_variable_any iv::containers::CircularQueue< T, Size >::m_cond
privateinherited

◆ m_data

template<typename T , uint64_t Size>
std::array<T, Size> iv::containers::CircularQueue< T, Size >::m_data
privateinherited

◆ m_front

template<typename T , uint64_t Size>
uint64_t iv::containers::CircularQueue< T, Size >::m_front {0}
privateinherited

◆ m_mutex

template<typename T , uint64_t Size>
std::mutex iv::containers::CircularQueue< T, Size >::m_mutex
privateinherited

◆ m_occupied

template<typename T , uint64_t Size>
uint64_t iv::containers::CircularQueue< T, Size >::m_occupied {0}
privateinherited

◆ m_rear

template<typename T , uint64_t Size>
uint64_t iv::containers::CircularQueue< T, Size >::m_rear {0}
privateinherited

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