22 #ifndef _RTML_CIRCULARBUFFER_H_ 23 #define _RTML_CIRCULARBUFFER_H_ 72 top = (size_t)(
top + 1) % (N + 1);
152 template <
typename T,
size_t N>
155 template <
typename T,
size_t N>
163 bool p = top == bottom;
168 DEBUGV3(
"push-> %d (%d,%d) r:%d\n", length(), bottom, top, p);
170 return (p) ? OVERFLOW : OK;
173 template <
typename T,
size_t N>
175 bool c = length() > 0;
177 event = array[bottom];
181 DEBUGV3(
"pull-> %d (%d,%d) r:%d e:%d\n", length(), bottom, top, c,
184 return c ? OK : EMPTY;
187 template <
typename T,
size_t N>
189 bool c = length() > 0;
191 if (((
int)top) - 1 >= 0) {
192 event = array[--top];
199 DEBUGV3(
"pop-> %d (%d,%d) r:%d e:%d\n", length(), bottom, top, c,
202 return c ? OK : EMPTY;
205 template <
typename T,
size_t N>
208 event = array[index];
210 return index < N + 1 ? ((length() > 0) ? OK : EMPTY) : OUT_OF_BOUND;
213 template <
typename T,
size_t N>
218 ts = array[bottom].getTime();
224 return (top >= bottom) ? top - bottom : (N + 1) - (bottom - top);
229 for (
unsigned int idx = 0; idx < N + 1; idx++)
235 #endif //_RTML_CIRCULARBUFFER_H_ error_t state(size_t &, size_t &, timespanw &) const
Definition: circularbuffer.h:215
bool writer
Definition: circularbuffer.h:66
size_t & operator++()
Definition: circularbuffer.h:71
void debug() const
Definition: circularbuffer.h:227
Definition: circularbuffer.h:107
size_t operator++(int)
Definition: circularbuffer.h:79
timeabs timespanw
Definition: time_compat.h:94
RTML_buffer()
Definition: circularbuffer.h:153
Definition: circularbuffer.h:43
error_t
Definition: circularbuffer.h:107
Definition: circularbuffer.h:107
T event_t
Definition: circularbuffer.h:105
Definition: circularbuffer.h:107
size_t top
Definition: circularbuffer.h:56
size_t & operator--()
Definition: circularbuffer.h:88
#define DEBUGV3(...)
Definition: debug_compat.h:84
Definition: circularbuffer.h:107
T array[N+1]
Definition: circularbuffer.h:51
const size_t size
Definition: circularbuffer.h:103
error_t push(const event_t &)
Definition: circularbuffer.h:157
size_t operator--(int)
Definition: circularbuffer.h:96
error_t pop(event_t &)
Definition: circularbuffer.h:188
size_t length() const
Definition: circularbuffer.h:223
error_t read(event_t &, size_t) const
Definition: circularbuffer.h:207
#define DEBUGV3_APPEND(...)
Definition: debug_compat.h:86
size_t bottom
Definition: circularbuffer.h:61
error_t pull(event_t &)
Definition: circularbuffer.h:174