Base Framework
Classes | Public Types | Public Member Functions | Protected Attributes | List of all members
Queue< TYPE, LOCK > Class Template Reference

Queue. More...

#include <base/collection/Queue.h>

Inherits Collection, and Synchronizeable< Unsafe >.

Classes

class  QueueImpl
 

Public Types

typedef TYPE Value
 
typedef LOCK Guard
 
typedef SingleLinkedNode< ValueNode
 

Public Member Functions

 Queue ()
 
 Queue (std::initializer_list< TYPE > values)
 
 Queue (const Queue &copy) noexcept
 
 Queue (Queue &&move) noexcept
 
Queueoperator= (const Queue &copy) noexcept
 
MemorySize getSize () const noexcept
 
bool isEmpty () const noexcept
 
void push (const TYPE &value)
 
Value pop ()
 

Protected Attributes

Reference< QueueImplelements
 

Additional Inherited Members

- Protected Member Functions inherited from Synchronizeable< Unsafe >
void exclusiveLock () const noexcept
 
void sharedLock () const noexcept
 
void releaseLock () const noexcept
 

Detailed Description

template<class TYPE, class LOCK = Unsafe>
class Queue< TYPE, LOCK >

Queue.

Queue implemented using a unidirectional linked list. The first value pushed onto the queue is also the first to be pop'ed.

Version
1.0
Examples
testsuite/echod.cpp.

Member Typedef Documentation

◆ Guard

template<class TYPE , class LOCK = Unsafe>
typedef LOCK Queue< TYPE, LOCK >::Guard

The type of the guard.

◆ Node

template<class TYPE , class LOCK = Unsafe>
typedef SingleLinkedNode<Value> Queue< TYPE, LOCK >::Node

The type of a node.

◆ Value

template<class TYPE , class LOCK = Unsafe>
typedef TYPE Queue< TYPE, LOCK >::Value

The type of a value.

Constructor & Destructor Documentation

◆ Queue() [1/4]

template<class TYPE , class LOCK = Unsafe>
Queue< TYPE, LOCK >::Queue ( )
inline

Initializes an empty queue.

◆ Queue() [2/4]

template<class TYPE , class LOCK = Unsafe>
Queue< TYPE, LOCK >::Queue ( std::initializer_list< TYPE >  values)
inline

Pushes all the values in left-to-right order.

◆ Queue() [3/4]

template<class TYPE , class LOCK = Unsafe>
Queue< TYPE, LOCK >::Queue ( const Queue< TYPE, LOCK > &  copy)
inlinenoexcept

Initializes queue from other queue.

◆ Queue() [4/4]

template<class TYPE , class LOCK = Unsafe>
Queue< TYPE, LOCK >::Queue ( Queue< TYPE, LOCK > &&  move)
inlinenoexcept

Initializes queue from other queue.

Member Function Documentation

◆ getSize()

template<class TYPE , class LOCK = Unsafe>
MemorySize Queue< TYPE, LOCK >::getSize ( ) const
inlinenoexcept

Returns the number of elements in the queue.

◆ isEmpty()

template<class TYPE , class LOCK = Unsafe>
bool Queue< TYPE, LOCK >::isEmpty ( ) const
inlinenoexcept

Returns true if the queue is empty.

◆ operator=()

template<class TYPE , class LOCK = Unsafe>
Queue& Queue< TYPE, LOCK >::operator= ( const Queue< TYPE, LOCK > &  copy)
inlinenoexcept

Assigns queue from other queue.

◆ pop()

template<class TYPE , class LOCK = Unsafe>
Value Queue< TYPE, LOCK >::pop ( )
inline

Removes the element at the front of the queue. Raises InvalidNode if the queue is empty.

◆ push()

template<class TYPE , class LOCK = Unsafe>
void Queue< TYPE, LOCK >::push ( const TYPE &  value)
inline

Adds the specified value to the end of the queue.

Parameters
valueThe value to be added to the queue.

Member Data Documentation

◆ elements

template<class TYPE , class LOCK = Unsafe>
Reference<QueueImpl> Queue< TYPE, LOCK >::elements
protected

The elements of the queue.