Arene Base
Fundamental Utilities For Safety Critical C++
Loading...
Searching...
No Matches
arene::base::intrusive::queue< T, Tag > Class Template Reference

Intrusive queue implementation. More...

Public Types

using const_reference = T const&
 const reference type
 
using reference = T&
 reference type
 
using size_type = std::size_t
 size type
 
using value_type = T
 value type
 

Public Member Functions

constexpr queue () noexcept=default
 Default constructor.
 
constexpr queue (queue &&other) noexcept
 Move constructor.
 
 queue (queue const &)=delete
 Deleted copy constructor.
 
 ~queue ()=default
 Trivial destructor. This is a tradeoff. C++14 doesn't allow user-provided destructor to be constexpr.
 
constexpr auto back () noexcept -> reference
 Get the reference to the back element of the queue.
 
constexpr auto empty () const noexcept -> bool
 Check if the queue is empty.
 
constexpr auto front () noexcept -> reference
 Get the reference to the front element of the queue.
 
constexpr auto operator!= (queue const &other) const noexcept -> bool=delete
 deleted equality operator
 
constexpr auto operator= (queue &&other) noexcept -> queue &
 Move assignment operator.
 
auto operator= (queue const &) -> queue &=delete
 Deleted copy assignment operator.
 
constexpr auto operator== (queue const &other) const noexcept -> bool=delete
 deleted equality operator
 
constexpr void pop () noexcept
 Remove the front element from the queue.
 
constexpr void push (reference value) noexcept
 Push an element into the queue.
 
constexpr auto size () const noexcept -> size_type
 Get the size of the queue.
 
constexpr void swap (queue &other) noexcept
 Swap the contents of two queues.
 

Detailed Description

template<typename T, typename Tag = detail::default_tag>
class arene::base::intrusive::queue< T, Tag >

Intrusive queue implementation.

Template Parameters
TThe type of the elements in the queue.
TagThe tag of the priority queue to work on. Default to default_tag.

Member Typedef Documentation

◆ const_reference

template<typename T, typename Tag = detail::default_tag>
using arene::base::intrusive::queue< T, Tag >::const_reference = T const&

const reference type

◆ reference

template<typename T, typename Tag = detail::default_tag>
using arene::base::intrusive::queue< T, Tag >::reference = T&

reference type

◆ size_type

template<typename T, typename Tag = detail::default_tag>
using arene::base::intrusive::queue< T, Tag >::size_type = std::size_t

size type

◆ value_type

template<typename T, typename Tag = detail::default_tag>
using arene::base::intrusive::queue< T, Tag >::value_type = T

value type

Constructor & Destructor Documentation

◆ queue() [1/3]

template<typename T, typename Tag = detail::default_tag>
arene::base::intrusive::queue< T, Tag >::queue ( )
explicitconstexprdefaultnoexcept

Default constructor.

◆ queue() [2/3]

template<typename T, typename Tag = detail::default_tag>
arene::base::intrusive::queue< T, Tag >::queue ( queue< T, Tag > && other)
inlineconstexprnoexcept

Move constructor.

Parameters
otherThe queue to move from.

◆ queue() [3/3]

template<typename T, typename Tag = detail::default_tag>
arene::base::intrusive::queue< T, Tag >::queue ( queue< T, Tag > const & )
delete

Deleted copy constructor.

Intrusive queue does not support copy

◆ ~queue()

template<typename T, typename Tag = detail::default_tag>
arene::base::intrusive::queue< T, Tag >::~queue ( )
default

Trivial destructor. This is a tradeoff. C++14 doesn't allow user-provided destructor to be constexpr.

Member Function Documentation

◆ back()

template<typename T, typename Tag = detail::default_tag>
auto arene::base::intrusive::queue< T, Tag >::back ( ) -> reference
inlineconstexprnoexcept

Get the reference to the back element of the queue.

Precondition
The queue must not be empty.
Returns
Reference to the back element.

◆ empty()

template<typename T, typename Tag = detail::default_tag>
auto arene::base::intrusive::queue< T, Tag >::empty ( ) const -> bool
inlineconstexprnoexcept

Check if the queue is empty.

Returns
true if the queue is empty, false otherwise.

◆ front()

template<typename T, typename Tag = detail::default_tag>
auto arene::base::intrusive::queue< T, Tag >::front ( ) -> reference
inlineconstexprnoexcept

Get the reference to the front element of the queue.

Precondition
The queue must not be empty.
Returns
Reference to the front element.

◆ operator!=()

template<typename T, typename Tag = detail::default_tag>
auto arene::base::intrusive::queue< T, Tag >::operator!= ( queue< T, Tag > const & other) const -> bool=delete
constexprdeletenoexcept

deleted equality operator

Queue does not support inequality comparison as the definition of equality is not clear for intrusive containers.

◆ operator=() [1/2]

template<typename T, typename Tag = detail::default_tag>
auto arene::base::intrusive::queue< T, Tag >::operator= ( queue< T, Tag > && other) -> queue&
inlineconstexprnoexcept

Move assignment operator.

Parameters
otherThe queue to move assign from.
Returns
Reference to the modified queue.

◆ operator=() [2/2]

template<typename T, typename Tag = detail::default_tag>
auto arene::base::intrusive::queue< T, Tag >::operator= ( queue< T, Tag > const & ) -> queue &=delete
delete

Deleted copy assignment operator.

Intrusive queue does not support copy

◆ operator==()

template<typename T, typename Tag = detail::default_tag>
auto arene::base::intrusive::queue< T, Tag >::operator== ( queue< T, Tag > const & other) const -> bool=delete
constexprdeletenoexcept

deleted equality operator

Queue does not support equality comparison as the definition of equality is not clear for intrusive containers.

◆ pop()

template<typename T, typename Tag = detail::default_tag>
void arene::base::intrusive::queue< T, Tag >::pop ( )
inlineconstexprnoexcept

Remove the front element from the queue.

Precondition
The queue must not be empty.

◆ push()

template<typename T, typename Tag = detail::default_tag>
void arene::base::intrusive::queue< T, Tag >::push ( reference value)
inlineconstexprnoexcept

Push an element into the queue.

Precondition
The element must not be in any queue.
Parameters
valueThe element to push.

◆ size()

template<typename T, typename Tag = detail::default_tag>
auto arene::base::intrusive::queue< T, Tag >::size ( ) const -> size_type
inlineconstexprnoexcept

Get the size of the queue.

Returns
The number of elements in the queue.

◆ swap()

template<typename T, typename Tag = detail::default_tag>
void arene::base::intrusive::queue< T, Tag >::swap ( queue< T, Tag > & other)
inlineconstexprnoexcept

Swap the contents of two queues.

Parameters
otherThe queue to swap with.

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