SOFA API  1a4bb3e7
Open source framework for multi-physics simuation
sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy > Class Template Reference

#include <CircularQueue.h>

Inheritance diagram for sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >:

Detailed Description

template<class T, template< class U > class StoragePolicy, class ThreadAccessPolicy>
class sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >

This class implements a policy-based circular queue. The template parameter ThreadAccessPolicy allows to customize access to the array according to thread-safety requirements.

Public Member Functions

 CircularQueue ()
 
 ~CircularQueue ()
 
bool push (const T &item)
 
bool pop (T &item, bool clear=true)
 
bool isEmpty () const
 
unsigned size () const
 
bool isFull () const
 
unsigned skip (unsigned maxsize, bool clear=true)
 
template<class OutputIterator >
unsigned pop (OutputIterator out, unsigned maxsize, bool clear=true)
 

Constructor details

◆ CircularQueue()

template<class T , template< class U > class StoragePolicy, class ThreadAccessPolicy >
sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >::CircularQueue

◆ ~CircularQueue()

template<class T , template< class U > class StoragePolicy, class ThreadAccessPolicy >
sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >::~CircularQueue

Function details

◆ isEmpty()

template<class T , template< class U > class StoragePolicy, class ThreadAccessPolicy >
bool sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >::isEmpty

◆ isFull()

template<class T , template< class U > class StoragePolicy, class ThreadAccessPolicy >
bool sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >::isFull

◆ pop() [1/2]

template<class T , template< class U > class StoragePolicy, class ThreadAccessPolicy >
template<class OutputIterator >
unsigned sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >::pop ( OutputIterator  out,
unsigned  maxsize,
bool  clear = true 
)

◆ pop() [2/2]

template<class T , template< class U > class StoragePolicy, class ThreadAccessPolicy >
bool sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >::pop ( T &  item,
bool  clear = true 
)

◆ push()

template<class T , template< class U > class StoragePolicy, class ThreadAccessPolicy >
bool sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >::push ( const T &  item)

◆ size()

template<class T , template< class U > class StoragePolicy, class ThreadAccessPolicy >
unsigned sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >::size

◆ skip()

template<class T , template< class U > class StoragePolicy, class ThreadAccessPolicy >
unsigned sofa::helper::system::thread::CircularQueue< T, StoragePolicy, ThreadAccessPolicy >::skip ( unsigned  maxsize,
bool  clear = true 
)