event_detector 1.0.0
Loading...
Searching...
No Matches
DifferenceBasedBuffer.hpp
1
25#pragma once
26
27#include <deque>
28#include <utility>
29
37template <typename T, typename C>
38using StampedDeque = std::deque<std::pair<C, T>>;
39
56template <typename T, typename C = int, typename D = C>
57class DifferenceBasedBuffer : public StampedDeque<T, C> {
58 public:
65 DifferenceBasedBuffer(const D& diff = D(0, 0));
66
70 void setDifference(const D& diff);
71
80 void push_back(const T& val, const C& stamp = C());
81
90 void push_front(const T& val, const C& stamp = C());
91
101 void insert(typename StampedDeque<T, C>::const_iterator position, const T& val, const C& stamp = C());
102
110 T& operator[](const int n);
111
119 const T& operator[](const int n) const;
120
128 T& at(const int n);
129
137 const T& at(const int n) const;
138
146 std::pair<C, T>& get(const int n);
147
155 const std::pair<C, T>& get(const int n) const;
156
162 T& front();
163
169 const T& front() const;
170
176 T& back();
177
183 const T& back() const;
184
185 protected:
191 void update(const C& stamp);
192
200};
201
202#include "event_detector/DifferenceBasedBuffer.tpp"
Ring-buffer-like container for keeping only values within a fixed range of a secondary index paramete...
void push_front(const T &val, const C &stamp=C())
Adds new element to the front.
const T & operator[](const int n) const
Accesses specified element.
void setDifference(const D &diff)
Sets new difference. Will affect subsequent calls to update().
T & back()
Accesses last element.
T & operator[](const int n)
Accesses specified element.
std::pair< C, T > & get(const int n)
Accesses specified element including stamp.
void update(const C &stamp)
Removes all elements with stamps outside of (stamp - diff_, stamp].
const std::pair< C, T > & get(const int n) const
Accesses specified element including stamp.
DifferenceBasedBuffer(const D &diff=D(0, 0))
Constructs a new DifferenceBasedBuffer object.
const T & at(const int n) const
Accesses specified element.
const T & front() const
Accesses first element.
T & at(const int n)
Accesses specified element.
void push_back(const T &val, const C &stamp=C())
Adds new element to the end.
const T & back() const
Accesses last element.
void insert(typename StampedDeque< T, C >::const_iterator position, const T &val, const C &stamp=C())
Adds new element at position.
T & front()
Accesses first element.