Page MenuHomec4science

ring-buffer.c
No OneTemporary

File Metadata

Created
Thu, Feb 20, 11:08

ring-buffer.c

#include "ring-buffer.h"
//adds a value into the buffer, if BUFFER_CAPACITY is not reached
void pushIntoBuffer(RingBuffer *ringBuffer, int data)
{
if(ringBuffer->numVals >= BUFFER_CAPACITY)
{
return;
}
ringBuffer->data[ringBuffer->writeIndex] = data;
++(ringBuffer->writeIndex);
++(ringBuffer->numVals);
ringBuffer->writeIndex &= BUFFER_MASK;
}
//gets a value from the buffer and removes it, if the buffer is not empty
long popFromBuffer(RingBuffer *ringBuffer)
{
//check if buffer empty
if(ringBuffer->numVals <= 0)
{
return ringBuffer->lastPoppedVal;
}
int data = ringBuffer->data[ringBuffer->readIndex];
ringBuffer->lastPoppedVal = data;
++(ringBuffer->readIndex);
--(ringBuffer->numVals);
ringBuffer->readIndex &= BUFFER_MASK;
return data;
}
void initBuffer(RingBuffer *ringBuffer)
{
ringBuffer->numVals = 0;
ringBuffer->readIndex = 0;
ringBuffer->writeIndex = 0;
ringBuffer->lastPoppedVal = 0;
}

Event Timeline