Fw/DataStructures/docs/FifoQueue.md
FifoQueue is a final class template
defined in Fw/DataStructures.
It represents a FIFO queue with internal storage.
FifoQueue has the following template parameters.
| Kind | Name | Purpose |
|---|---|---|
typename | T | The type of a queue item |
FwSizeType | C | The queue capacity in items |
FifoQueue statically asserts the following:
T is default constructible.C > 0.FifoQueue<T, C> is publicly derived from
FifoQueueBase<T>.
FifoQueue has the following private member variables.
| Name | Type | Purpose | Default Value |
|---|---|---|---|
m_extQueue | ExternalFifoQueue<T> | The external queue implementation | C++ default initialization |
m_items | T[C] | The array providing the backing memory for m_extQueue | C++ default initialization |
classDiagram
FifoQueue *-- ExternalFifoQueue
FifoQueue()
Initialize m_extQueue with ExternalFifoQueue<T>(m_items, C).
Example:
FifoQueue<U32, 10> queue;
FifoQueue(const FifoQueue<T, C>& queue)
Initialize m_extQueue with ExternalFifoQueue<T>(m_items, C).
Set *this = queue.
Example:
FifoQueue<U32, 10> q1;
auto status = q1.enqueue(3);
ASSERT_EQ(status, Success::SUCCESS);
FifoQueue<U32, 10> q2(q1);
ASSERT_EQ(q2.size(), 1);
U32 value = 0;
status = q2.dequeue(value);
ASSERT_EQ(status, Success::SUCCESS);
ASSERT_EQ(value, 3);
~FifoQueue() override
Defined as = default.
FifoQueue<T, C>& operator=(const FifoQueue<T, C>& queue)
Return m_extQueue.copyDataFrom(queue).
Example:
FifoQueue<U32, 10> q1;
auto status = q1.enqueue(3);
ASSERT_EQ(status, Success::SUCCESS);
FifoQueue<U32, 10> q2;
ASSERT_EQ(q2.size(), 0);
q2 = q1;
ASSERT_EQ(q2.size(), 1);
U32 value = 0;
status = q2.dequeue(value);
ASSERT_EQ(status, Success::SUCCESS);
ASSERT_EQ(value, 3);
void clear() override
Call m_extQueue.clear().
Success enqueue(const T& e) override
Return m_extQueue.enqueue(e).
const T& at(FwSizeType index) const override
Return m_extQueue.at(index).
Success dequeue(T& e) override
Return m_extQueue.dequeue(e).
FwSizeType getSize() const override
Return m_extQueue.getSize().
FwSizeType getCapacity() const override
Return m_extQueue.getCapacity().
static constexpr FwSizeType getStaticCapacity()
Return the static capacity C.
Example:
const auto capacity = FifoQueue<U32, 3>::getStaticCapacity();
ASSERT_EQ(capacity, 3);