Skip to content

Struct Ase::QueueMultiplexer

template <size_t MAXQUEUES, class ForwardIterator>

ClassList > Ase > QueueMultiplexer

More...

  • #include <queuemux.hh>

Classes

Type Name
class Iter
struct Ptr

Public Types

Type Name
typedef decltype(QueueMultiplexer_priority(std::declval< const ValueType & >())) Priority
typedef std::remove_reference_t< decltype(*std::declval< ForwardIterator >())> ValueType
typedef Iter iterator

Public Attributes

Type Name
ssize_t current = = -1
Priority first = = {}
ssize_t n_queues = = 0
Priority next = = {}
std::array< Ptr, MAXQUEUES > ptrs

Public Functions

Type Name
QueueMultiplexer ()
bool assign (const std::array< const IterableContainer *, MAXQUEUES > & queues)
iterator begin ()
size_t count_pending () noexcept const
iterator end ()
bool more () noexcept const
const ValueType & peek () noexcept
const ValueType & pop () noexcept

Detailed Description

Multiplexer to pop from multiple Queues, while preserving priorities. Order for values at the same priority is unstable. Relies on unqualified calls to Priority QueueMultiplexer_priority (const ValueType&).

Public Types Documentation

typedef Priority

using Ase::QueueMultiplexer< MAXQUEUES, ForwardIterator >::Priority =  decltype (QueueMultiplexer_priority (std::declval<const ValueType&>()));

typedef ValueType

using Ase::QueueMultiplexer< MAXQUEUES, ForwardIterator >::ValueType =  std::remove_reference_t<decltype (*std::declval<ForwardIterator>())>;

typedef iterator

using Ase::QueueMultiplexer< MAXQUEUES, ForwardIterator >::iterator =  Iter;

Public Attributes Documentation

variable current

ssize_t Ase::QueueMultiplexer< MAXQUEUES, ForwardIterator >::current;

variable first

Priority Ase::QueueMultiplexer< MAXQUEUES, ForwardIterator >::first;

variable n_queues

ssize_t Ase::QueueMultiplexer< MAXQUEUES, ForwardIterator >::n_queues;

variable next

Priority Ase::QueueMultiplexer< MAXQUEUES, ForwardIterator >::next;

variable ptrs

std::array<Ptr, MAXQUEUES> Ase::QueueMultiplexer< MAXQUEUES, ForwardIterator >::ptrs;

Public Functions Documentation

function QueueMultiplexer

inline Ase::QueueMultiplexer::QueueMultiplexer () 

function assign

template<class IterableContainer>
inline bool Ase::QueueMultiplexer::assign (
    const std::array< const IterableContainer *, MAXQUEUES > & queues
) 

function begin

inline iterator Ase::QueueMultiplexer::begin () 

function count_pending

inline size_t Ase::QueueMultiplexer::count_pending () noexcept const

function end

inline iterator Ase::QueueMultiplexer::end () 

function more

inline bool Ase::QueueMultiplexer::more () noexcept const

function peek

inline const ValueType & Ase::QueueMultiplexer::peek () noexcept

function pop

inline const ValueType & Ase::QueueMultiplexer::pop () noexcept


The documentation for this class was generated from the following file /__w/anklang/anklang/ase/queuemux.hh