29 #ifndef HECTOR_POSE_ESTIMATION_QUEUE_H 30 #define HECTOR_POSE_ESTIMATION_QUEUE_H 32 #include <boost/array.hpp> 42 virtual bool empty()
const = 0;
43 virtual bool full()
const = 0;
44 virtual size_t size()
const = 0;
49 virtual void clear() = 0;
52 template <
class Update>
56 Queue_() : in_(0), out_(0), size_(0) {}
59 virtual bool empty()
const {
return size_ == 0; }
61 virtual size_t size()
const {
return size_; }
66 data_[inc(in_)] =
static_cast<Update
const &
>(update);
70 virtual const Update&
pop() {
71 if (
empty())
throw std::runtime_error(
"queue is empty");
73 return data_[inc(out_)];
76 virtual void clear() { out_ = in_ = size_ = 0; }
81 boost::array<Update, Queue::capacity_>
data_;
87 #endif // HECTOR_POSE_ESTIMATION_QUEUE_H
virtual void push(const MeasurementUpdate &update)
virtual const MeasurementUpdate & pop()=0
static size_t inc(size_t &index)
virtual size_t capacity() const =0
virtual bool empty() const =0
void update(const std::string &key, const XmlRpc::XmlRpcValue &v)
virtual bool full() const
virtual size_t capacity() const
static const size_t capacity_
virtual bool empty() const
virtual bool full() const =0
boost::array< Update, Queue::capacity_ > data_
virtual size_t size() const
virtual size_t size() const =0
virtual void push(const MeasurementUpdate &update)=0
virtual const Update & pop()