These functions return iterators which are inconsistent with the usage
model for this type. It should be accessed using the peek, push, and pop
methods and not iterators. If you need a class with iterators which is
oriented around accessing individual elements at a time, the
CircularQueue type is likely a better choice.
Change-Id: I9f37eab12e490b63d870d378a91f601dad353f25
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/38998
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
public:
using value_type = T;
- using iterator = typename std::vector<T>::iterator;
- using const_iterator = typename std::vector<T>::const_iterator;
explicit CircleBuf(size_t size) : buffer(size), maxSize(size) {}
size_t size() const { return used; }
size_t capacity() const { return maxSize; }
- iterator begin() { return buffer.begin() + start % maxSize; }
- const_iterator begin() const { return buffer.begin() + start % maxSize; }
- iterator end() { return buffer.begin() + (start + used) % maxSize; }
- const_iterator
- end() const
- {
- return buffer.begin() + (start + used) % maxSize;
- }
-
/**
* Throw away any data in the buffer.
*/