#include <stdio.h>
#include "ringbuffer.h"
-#define maxvalues 52
+#define maxvalues 60
int main()
{
}
for (int i = 0; i < maxvalues; i++) {
- printf("Value: %d\n", getValue(&buffer));
+ printf("Head: %d, Tail %d, Count: %d, Value: %d\n", buffer.head, buffer.tail, buffer.count, getValue(&buffer));
}
freeRingbuffer(&buffer);
void addValue(ringbuffer *buf, int value)
{
- if (buf->count >= buf->max)
+ if (buf->count >= buf->max) {
buf->count = buf->max;
+ buf->tail++;
+ }
+
+ if (buf->tail >= buf->max)
+ buf->tail = 0;
if (buf->head >= buf->max)
buf->head = 0;
int getValue(ringbuffer *buf)
{
- if (buf->count < 0)
- return -1;
if (buf->tail >= buf->max)
buf->tail = 0;
int value = buf->position[buf->tail];
buf->tail++;
+
buf->count--;
+ if (buf->count < 1)
+ return -1;
return value;
}