31#ifndef ETL_SPSC_QUEUE_ISR_INCLUDED
32#define ETL_SPSC_QUEUE_ISR_INCLUDED
47 template <
typename T, const
size_t MEMORY_MODEL = etl::memory_model::MEMORY_MODEL_LARGE>
85#if ETL_USING_CPP11 && ETL_NOT_USING_STLPORT && !defined(ETL_QUEUE_ISR_FORCE_CPP03_IMPLEMENTATION)
86 template <
typename ... Args>
87 bool emplace_from_isr(Args&&... args)
241#if ETL_USING_CPP11 && ETL_NOT_USING_STLPORT && !defined(ETL_QUEUE_ISR_FORCE_CPP03_IMPLEMENTATION)
247 template <
typename ... Args>
290 template <
typename T1>
312 template <
typename T1,
typename T2>
334 template <
typename T1,
typename T2,
typename T3>
356 template <
typename T1,
typename T2,
typename T3,
typename T4>
387#if ETL_USING_CPP11 && ETL_NOT_USING_STLPORT && !defined(ETL_QUEUE_LOCKABLE_FORCE_CPP03_IMPLEMENTATION)
445 if (index == maximum) ETL_UNLIKELY
464#if defined(ETL_POLYMORPHIC_SPSC_QUEUE_ISR) || defined(ETL_POLYMORPHIC_CONTAINERS)
488 template <
typename T,
typename TAccess, const
size_t MEMORY_MODEL = etl::memory_model::MEMORY_MODEL_LARGE>
539#if ETL_USING_CPP11 && ETL_NOT_USING_STLPORT && !defined(ETL_QUEUE_ISR_FORCE_CPP03_IMPLEMENTATION)
540 template <
typename ... Args>
571 template <
typename T1>
587 template <
typename T1,
typename T2>
603 template <
typename T1,
typename T2,
typename T3>
619 template <
typename T1,
typename T2,
typename T3,
typename T4>
792 template <
typename T,
size_t SIZE,
typename TAccess, const
size_t MEMORY_MODEL = etl::memory_model::MEMORY_MODEL_LARGE>
805 static ETL_CONSTANT size_type MAX_SIZE = size_type(SIZE);
837 template <
typename T,
size_t SIZE,
typename TAccess, const
size_t MEMORY_MODEL>
838 ETL_CONSTANT
typename queue_spsc_isr<T, SIZE, TAccess, MEMORY_MODEL>::size_type queue_spsc_isr<T, SIZE, TAccess, MEMORY_MODEL>::MAX_SIZE;
This is the base for all queue_spsc_isrs that contain a particular type.
Definition queue_spsc_isr.h:490
bool emplace(const T1 &value1, const T2 &value2)
Definition queue_spsc_isr.h:588
base_t::size_type size_type
The type used for determining the size of the queue.
Definition queue_spsc_isr.h:503
size_type size() const
How many items in the queue?
Definition queue_spsc_isr.h:734
const_reference front() const
Peek a value at the front of the queue.
Definition queue_spsc_isr.h:677
base_t::const_reference const_reference
A const reference to the type used in the queue.
Definition queue_spsc_isr.h:499
bool pop()
Pop a value from the queue and discard.
Definition queue_spsc_isr.h:649
size_type available() const
How much free space available in the queue.
Definition queue_spsc_isr.h:748
reference front()
Peek a value at the front of the queue.
Definition queue_spsc_isr.h:663
bool full() const
Is the queue full?
Definition queue_spsc_isr.h:720
void clear()
Clear the queue.
Definition queue_spsc_isr.h:691
bool push(const_reference value)
Push a value to the queue.
Definition queue_spsc_isr.h:508
bool emplace(const T1 &value1, const T2 &value2, const T3 &value3)
Definition queue_spsc_isr.h:604
base_t::value_type value_type
The type stored in the queue.
Definition queue_spsc_isr.h:497
iqueue_spsc_isr(T *p_buffer_, size_type max_size_)
The constructor that is called from derived classes.
Definition queue_spsc_isr.h:764
bool pop(reference value)
Pop a value from the queue.
Definition queue_spsc_isr.h:635
bool emplace(const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
Definition queue_spsc_isr.h:620
base_t::reference reference
A reference to the type used in the queue.
Definition queue_spsc_isr.h:498
bool emplace(const T1 &value1)
Definition queue_spsc_isr.h:572
bool empty() const
Is the queue empty?
Definition queue_spsc_isr.h:706
bool emplace()
Definition queue_spsc_isr.h:556
Definition queue_spsc_isr.h:49
bool emplace_implementation()
Definition queue_spsc_isr.h:269
bool full_from_isr() const
Definition queue_spsc_isr.h:158
bool pop_implementation(reference value)
Pop a value from the queue.
Definition queue_spsc_isr.h:379
bool push_from_isr(const_reference value)
Push a value to the queue from an ISR.
Definition queue_spsc_isr.h:65
const_reference front_from_isr() const
Peek a value at the front of the queue from an ISR.
Definition queue_spsc_isr.h:120
reference front_from_isr()
Peek a value at the front of the queue from an ISR.
Definition queue_spsc_isr.h:112
bool emplace_implementation(const T1 &value1, const T2 &value2)
Definition queue_spsc_isr.h:313
T value_type
The type stored in the queue.
Definition queue_spsc_isr.h:55
bool emplace_implementation(const T1 &value1, const T2 &value2, const T3 &value3)
Definition queue_spsc_isr.h:335
size_type capacity() const
How many items can the queue hold.
Definition queue_spsc_isr.h:175
bool emplace_implementation(const T1 &value1)
Definition queue_spsc_isr.h:291
void clear_from_isr()
Clear the queue from the ISR.
Definition queue_spsc_isr.h:137
static size_type get_next_index(size_type index, size_type maximum)
Calculate the next index.
Definition queue_spsc_isr.h:441
size_type available_from_isr() const
Definition queue_spsc_isr.h:129
~queue_spsc_isr_base()
Destructor.
Definition queue_spsc_isr.h:471
etl::size_type_lookup< MEMORY_MODEL >::type size_type
The type used for determining the size of queue.
Definition queue_spsc_isr.h:53
size_type read_index
Where to get the oldest data.
Definition queue_spsc_isr.h:455
const_reference front_implementation() const
Peek a value at the front of the queue.
Definition queue_spsc_isr.h:413
bool emplace_implementation(const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
Definition queue_spsc_isr.h:357
size_type max_size() const
How many items can the queue hold.
Definition queue_spsc_isr.h:183
bool pop_from_isr()
Pop a value from the queue from an ISR, and discard.
Definition queue_spsc_isr.h:104
bool pop_implementation()
Pop a value from the queue and discard.
Definition queue_spsc_isr.h:421
bool pop_from_isr(reference value)
Pop a value from the queue from an ISR.
Definition queue_spsc_isr.h:96
size_type write_index
Where to input new data.
Definition queue_spsc_isr.h:454
const size_type MAX_SIZE
The maximum number of items in the queue.
Definition queue_spsc_isr.h:457
bool empty_from_isr() const
Definition queue_spsc_isr.h:149
T * p_buffer
The internal buffer.
Definition queue_spsc_isr.h:453
size_type current_size
The current size of the queue.
Definition queue_spsc_isr.h:456
T & reference
A reference to the type used in the queue.
Definition queue_spsc_isr.h:56
const T & const_reference
A const reference to the type used in the queue.
Definition queue_spsc_isr.h:57
size_type size_from_isr() const
Definition queue_spsc_isr.h:167
bool push_implementation(const_reference value)
Push a value to the queue.
Definition queue_spsc_isr.h:202
reference front_implementation()
Peek a value at the front of the queue.
Definition queue_spsc_isr.h:405
Definition queue_spsc_isr.h:794
queue_spsc_isr()
Default constructor.
Definition queue_spsc_isr.h:810
~queue_spsc_isr()
Destructor.
Definition queue_spsc_isr.h:818
Definition alignment.h:231
Definition integral_limits.h:516
add_rvalue_reference
Definition type_traits_generator.h:1327
bitset_ext
Definition absolute.h:38
pair holds two objects of arbitrary type
Definition utility.h:164
Definition memory_model.h:50