1 #ifndef XSENS_MONOLITHIC 26 #ifndef XSENS_FIFOQUEUE_H 27 #define XSENS_FIFOQUEUE_H 40 template <
class T,
bool E=true>
63 m_deleteOnOverwrite = delOnOverwrite;
132 return (m_currentCount == 0);
162 return m_list[(m_first + m_currentCount - 1) % m_maxCount];
168 return m_list[(m_first + m_currentCount - 1) % m_maxCount];
174 if (m_currentCount == m_maxCount)
176 if (m_deleteOnOverwrite)
180 m_first = (m_first+1) % m_maxCount;
184 m_list[(m_first + m_currentCount++) % m_maxCount] = x;
191 m_first = (m_first+1) % m_maxCount;
204 if (index >= m_currentCount)
205 return m_list[(m_first + m_currentCount - 1) % m_maxCount];
207 return m_list[(m_first + index) % m_maxCount];
213 if (index >= m_currentCount)
214 return m_list[(m_first + m_currentCount - 1) % m_maxCount];
216 return m_list[(m_first + index) % m_maxCount];
225 void remove(
size_t index)
227 if (index >= m_currentCount)
235 m_list[(m_first + i) %
m_maxCount] = m_list[(1 + m_first + i) % m_maxCount];
332 return (m_currentCount == 0);
362 return m_list[(m_first + m_currentCount - 1) % m_maxCount];
368 return m_list[(m_first + m_currentCount - 1) % m_maxCount];
374 if (m_currentCount == m_maxCount)
377 m_first = (m_first+1) % m_maxCount;
381 m_list[(m_first + m_currentCount++) % m_maxCount] = x;
388 m_first = (m_first+m_maxCount-1)%m_maxCount;
389 if (m_currentCount == 0)
392 if (m_currentCount < m_maxCount)
399 if (m_currentCount > 0)
401 m_first = (m_first+1) % m_maxCount;
409 if (m_currentCount > 0)
416 if (index >= m_currentCount)
417 return m_list[(m_first + m_currentCount - 1) % m_maxCount];
419 return m_list[(m_first + index) % m_maxCount];
425 if (index >= m_currentCount)
426 return m_list[(m_first + m_currentCount - 1) % m_maxCount];
428 return m_list[(m_first + index) % m_maxCount];
437 void remove(
size_t index)
439 if (index >= m_currentCount)
447 m_list[(m_first + i) %
m_maxCount] = m_list[(1 + m_first + i) % m_maxCount];
454 #endif // XSENS_FIFOQUEUE_H value_type & front()
Return the oldest element in the queue.
Definition: xsens_fifoqueue.h:348
const value_type & back() const
Return the newest element in the queue.
Definition: xsens_fifoqueue.h:166
void resize(const size_t size)
Resize the queue, note that this function clears the queue.
Definition: xsens_fifoqueue.h:317
void clear(void)
Definition: xsens_fifoqueue.h:219
size_t m_currentCount
Definition: xsens_fifoqueue.h:253
size_t m_currentCount
Definition: xsens_fifoqueue.h:44
void popBack(void)
Remove the element at the back of the queue.
Definition: xsens_fifoqueue.h:407
const value_type & front() const
Return the oldest element in the queue.
Definition: xsens_fifoqueue.h:154
void eraseAndClear(void)
Definition: xsens_fifoqueue.h:284
T * m_list
Definition: xsens_fifoqueue.h:48
size_type length() const
Return the number of elements currnetly in the queue.
Definition: xsens_fifoqueue.h:142
const value_type & operator[](size_t index) const
Return the index'th oldest item from the queue.
Definition: xsens_fifoqueue.h:202
void push(const value_type &x)
Insert x at the back of the queue.
Definition: xsens_fifoqueue.h:172
value_type & back()
Return the newest element in the queue.
Definition: xsens_fifoqueue.h:360
FifoQueue(size_type size=16, bool delOnOverwrite=true)
Create an empty queue with capacity size.
Definition: xsens_fifoqueue.h:54
FifoQueueBasic(size_type size=16)
Create an empty queue with capacity 'size'.
Definition: xsens_fifoqueue.h:262
void push(const value_type &x)
Insert x at the back of the queue.
Definition: xsens_fifoqueue.h:372
size_t m_first
Definition: xsens_fifoqueue.h:254
const value_type & back() const
Return the newest element in the queue.
Definition: xsens_fifoqueue.h:366
void clear(void)
Definition: xsens_fifoqueue.h:431
void eraseAndClear(void)
Definition: xsens_fifoqueue.h:79
size_t size_type
The type of a 'size' value.
Definition: xsens_fifoqueue.h:51
size_t m_maxCount
Definition: xsens_fifoqueue.h:43
A FIFO queue with limited length (cyclic).
Definition: xsens_fifoqueue.h:41
size_t m_first
Definition: xsens_fifoqueue.h:45
void push_front(const value_type &x)
Insert x at the front of the queue (LIFO operation).
Definition: xsens_fifoqueue.h:386
T value_type
The type of the value stored in this queue.
Definition: xsens_fifoqueue.h:50
size_t m_maxCount
Definition: xsens_fifoqueue.h:252
void resize(const size_t size)
Resize the queue, note that this function clears the queue.
Definition: xsens_fifoqueue.h:115
FifoQueueBasic< T > & operator=(const FifoQueueBasic< T > &q)
The assignment operator.
Definition: xsens_fifoqueue.h:300
size_type length() const
Return the number of elements currently in the queue.
Definition: xsens_fifoqueue.h:342
size_type size() const
Return the maximum number of elements in the queue.
Definition: xsens_fifoqueue.h:136
const value_type & front() const
Return the oldest element in the queue.
Definition: xsens_fifoqueue.h:354
void popBack(void)
Remove the element at the back of the queue.
Definition: xsens_fifoqueue.h:196
size_t size_type
The type of a 'size' value.
Definition: xsens_fifoqueue.h:259
T * m_list
Definition: xsens_fifoqueue.h:256
A FIFO queue with limited length (cyclic).
Definition: xsens_fifoqueue.h:250
FifoQueue(const FifoQueue< T, E2 > &q)
The copy constructor.
Definition: xsens_fifoqueue.h:68
void pop(void)
Remove the element at the front of the queue.
Definition: xsens_fifoqueue.h:189
~FifoQueue()
The destructor.
Definition: xsens_fifoqueue.h:88
bool m_deleteOnOverwrite
Definition: xsens_fifoqueue.h:46
FifoQueueBasic(const FifoQueueBasic< T > &q)
The copy constructor.
Definition: xsens_fifoqueue.h:274
The namespace of all Xsens software since 2006.
Definition: cmt1.cpp:62
size_type size() const
Return the maximum number of elements in the queue.
Definition: xsens_fifoqueue.h:336
value_type & back()
Return the newest element in the queue.
Definition: xsens_fifoqueue.h:160
FifoQueue< T, E > & operator=(const FifoQueue< T, E2 > &q)
The assignment operator.
Definition: xsens_fifoqueue.h:98
void pop(void)
Remove the element at the front of the queue.
Definition: xsens_fifoqueue.h:397
value_type & front()
Return the oldest element in the queue.
Definition: xsens_fifoqueue.h:148
bool empty() const
Return true if the queue is empty.
Definition: xsens_fifoqueue.h:330
~FifoQueueBasic()
The destructor.
Definition: xsens_fifoqueue.h:293
bool empty() const
Return true if the queue is empty.
Definition: xsens_fifoqueue.h:130
T value_type
The type of the value stored in this queue.
Definition: xsens_fifoqueue.h:258