27 #ifndef INCLUDED_ADTS_RING_BUF 28 #define INCLUDED_ADTS_RING_BUF 39 void clear() { size_ = 0; head = 0; tail = n-1; }
42 bool empty()
const {
return size_ == 0; }
47 size_t idx = (size_t)(head + ofs);
53 size_t idx = (size_t)(head + ofs);
85 head = (head + 1) % n;
87 tail = (tail + 1) % n;
96 head = (head + 1) % n;
116 {
return data[(
pos+idx) % n]; }
118 {
return data[
pos % n]; }
122 { ++
pos;
return (*
this); }
124 {
iterator tmp = *
this; ++*
this;
return tmp; }
126 {
return data == rhs.
data &&
pos == rhs.
pos; }
128 {
return !(*
this == rhs); }
130 {
return (
pos < rhs.
pos); }
132 {
pos += ofs;
return *
this; }
134 {
return (*
this += -ofs); }
136 {
iterator tmp = *
this;
return (tmp += ofs); }
138 {
iterator tmp = *
this;
return (tmp -= ofs); }
140 {
return (difference_type)(
pos - right.
pos); }
162 {
return data[(
pos+idx) % n]; }
164 {
return data[
pos % n]; }
168 { ++
pos;
return (*
this); }
172 {
return data == rhs.
data &&
pos == rhs.
pos; }
174 {
return !(*
this == rhs); }
176 {
return (
pos < rhs.
pos); }
178 {
pos += ofs;
return *
this; }
180 {
return (*
this += -ofs); }
182 {
iterator tmp = *
this;
return (tmp += ofs); }
184 {
iterator tmp = *
this;
return (tmp -= ofs); }
186 {
return (difference_type)(
pos - right.
pos); }
200 return const_iterator(data, head);
206 const_iterator
end()
const 208 return const_iterator(data, head+size_);
212 #endif // #ifndef INCLUDED_ADTS_RING_BUF size_t pos
Definition: ring_buf.h:190
const Status LOGIC
Definition: status.h:407
bool operator!=(const iterator &rhs) const
Definition: ring_buf.h:127
T * pointer
Definition: ring_buf.h:108
size_t size() const
Definition: ring_buf.h:41
const_iterator(const T *data_, size_t pos_)
Definition: ring_buf.h:159
T * operator->() const
Definition: ring_buf.h:119
const T & operator[](int idx) const
Definition: ring_buf.h:161
const T * operator->() const
Definition: ring_buf.h:165
T & operator*() const
Definition: ring_buf.h:117
bool operator!=(const const_iterator &rhs) const
Definition: ring_buf.h:173
ptrdiff_t difference_type
Definition: ring_buf.h:153
bool operator==(const const_iterator &rhs) const
Definition: ring_buf.h:171
const T & operator[](int ofs) const
Definition: ring_buf.h:44
bool operator<(const const_iterator &rhs) const
Definition: ring_buf.h:175
Definition: ring_buf.h:148
const_iterator begin() const
Definition: ring_buf.h:198
std::random_access_iterator_tag iterator_category
Definition: ring_buf.h:105
iterator & operator-=(difference_type ofs)
Definition: ring_buf.h:133
void clear()
Definition: ring_buf.h:39
T * data
Definition: ring_buf.h:143
const T * data
Definition: ring_buf.h:189
const T * pointer
Definition: ring_buf.h:154
iterator operator-(difference_type ofs) const
Definition: ring_buf.h:137
std::random_access_iterator_tag iterator_category
Definition: ring_buf.h:151
const_iterator end() const
Definition: ring_buf.h:206
void push_back(const T &item)
Definition: ring_buf.h:78
const_iterator operator++(int)
Definition: ring_buf.h:169
ptrdiff_t difference_type
Definition: ring_buf.h:107
#define ENSURE(expr)
ensure the expression <expr> evaluates to non-zero.
Definition: debug.h:290
iterator & operator+=(difference_type ofs)
Definition: ring_buf.h:131
RingBuf()
Definition: ring_buf.h:38
iterator begin()
Definition: ring_buf.h:194
T & reference
Definition: ring_buf.h:109
const T & reference
Definition: ring_buf.h:155
iterator operator+(difference_type ofs) const
Definition: ring_buf.h:135
iterator & operator-=(difference_type ofs)
Definition: ring_buf.h:179
size_t pos
Definition: ring_buf.h:144
difference_type operator-(const iterator right) const
Definition: ring_buf.h:185
const T & back() const
Definition: ring_buf.h:72
iterator end()
Definition: ring_buf.h:202
iterator(T *data_, size_t pos_)
Definition: ring_buf.h:113
T value_type
Definition: ring_buf.h:106
#define T(string_literal)
Definition: secure_crt.cpp:77
iterator operator+(difference_type ofs) const
Definition: ring_buf.h:181
iterator operator-(difference_type ofs) const
Definition: ring_buf.h:183
size_t size_
Definition: ring_buf.h:32
#define DEBUG_WARN_ERR(status)
display the error dialog with text corresponding to the given error code.
Definition: debug.h:339
T & operator[](int ofs)
Definition: ring_buf.h:50
const T & operator*() const
Definition: ring_buf.h:163
const_iterator()
Definition: ring_buf.h:157
difference_type operator-(const iterator right) const
Definition: ring_buf.h:139
const_iterator & operator++()
Definition: ring_buf.h:167
T value_type
Definition: ring_buf.h:152
iterator & operator++()
Definition: ring_buf.h:121
bool empty() const
Definition: ring_buf.h:42
iterator & operator+=(difference_type ofs)
Definition: ring_buf.h:177
Definition: ring_buf.h:102
T & operator[](int idx) const
Definition: ring_buf.h:115
size_t head
Definition: ring_buf.h:33
size_t tail
Definition: ring_buf.h:34
iterator operator++(int)
Definition: ring_buf.h:123
void pop_front()
Definition: ring_buf.h:91
bool operator==(const iterator &rhs) const
Definition: ring_buf.h:125
iterator()
Definition: ring_buf.h:111
T & front()
Definition: ring_buf.h:57
Definition: ring_buf.h:30
const T & front() const
Definition: ring_buf.h:62
bool operator<(const iterator &rhs) const
Definition: ring_buf.h:129
T & back()
Definition: ring_buf.h:67
T data[n]
Definition: ring_buf.h:35