ULIS  dev4.0.7
Utility Library for Imaging Systems
Public Member Functions | List of all members
TQueue< T > Class Template Reference

The TQueue class provides a simple dynamic queue based on a forward list. More...

Inheritance diagram for TQueue< T >:

Public Member Functions

 TQueue ()
 
 TQueue (const TQueue< T > &iOther)=delete
 
 TQueue (TQueue< T > &&iOther)
 
 ~TQueue ()
 
T & Back ()
 
const T & Back () const
 
void Clear ()
 
template<class... Args>
void Emplace (Args &&... args)
 
T & Front ()
 
const T & Front () const
 
bool IsEmpty () const
 
TQueue< T > & operator= (const TQueue< T > &iOther)=delete
 
TQueue< T > & operator= (TQueue< T > &&iOther)=delete
 
void Pop ()
 
void Push (const T &iValue)
 
void Push (T &&iValue)
 
uint64 Size () const
 

Detailed Description

template<typename T>
class TQueue< T >

The need of a custom TQueue class rose from the fact that std:: classes cannot be exported easily accross dll boundaries when ULIS is compiled as a shared library.

Constructor & Destructor Documentation

◆ ~TQueue()

template<typename T >
TQueue< T >::~TQueue ( )
inline

Destroy the queue and cleanup memory.

◆ TQueue() [1/3]

template<typename T >
TQueue< T >::TQueue ( )
inline

Default constructor ( empty ).

◆ TQueue() [2/3]

template<typename T >
TQueue< T >::TQueue ( const TQueue< T > &  iOther)
delete

Copy constructor, explicitly removed.

◆ TQueue() [3/3]

template<typename T >
TQueue< T >::TQueue ( TQueue< T > &&  iOther)
inline

Move constructor. The first object is left in a valid but empty state. The second object steals the state.

Member Function Documentation

◆ Back() [1/2]

template<typename T >
T& TQueue< T >::Back ( )
inline

Access component at back. The behaviour is undefined if the queue is empty.

◆ Back() [2/2]

template<typename T >
const T& TQueue< T >::Back ( ) const
inline

Access const component at back. The behaviour is undefined if the queue is empty.

◆ Clear()

template<typename T >
void TQueue< T >::Clear ( )
inline

Clear the queue, deallocating everything.

◆ Emplace()

template<typename T >
template<class... Args>
void TQueue< T >::Emplace ( Args &&...  args)
inline

Emplace, emplace a new element at end of the queue.

◆ Front() [1/2]

template<typename T >
T& TQueue< T >::Front ( )
inline

Access component at front. The behaviour is undefined if the queue is empty.

◆ Front() [2/2]

template<typename T >
const T& TQueue< T >::Front ( ) const
inline

Access const component at front. The behaviour is undefined if the queue is empty.

◆ IsEmpty()

template<typename T >
bool TQueue< T >::IsEmpty ( ) const
inline

Returns wether the queue is empty or not.

◆ operator=() [1/2]

template<typename T >
TQueue< T >& TQueue< T >::operator= ( const TQueue< T > &  iOther)
delete

Copy Assignment Operator, explicitly removed.

◆ operator=() [2/2]

template<typename T >
TQueue< T >& TQueue< T >::operator= ( TQueue< T > &&  iOther)
delete

Move Assignment Operator, explicitly removed.

◆ Pop()

template<typename T >
void TQueue< T >::Pop ( )
inline

Pop, pop the front element. The behaviour is undefined is the queue is empty.

◆ Push() [1/2]

template<typename T >
void TQueue< T >::Push ( const T &  iValue)
inline

Push, insert a new element at the end of the queue.

◆ Push() [2/2]

template<typename T >
void TQueue< T >::Push ( T &&  iValue)
inline

Push, insert a new element at the end of the queue.

◆ Size()

template<typename T >
uint64 TQueue< T >::Size ( ) const
inline

Returns the queue size.