summaryrefslogtreecommitdiff
path: root/include/kitchensink/internal/utils/kitringbuffer.h
blob: 153dfd403ca7421f9218da73e60c3b09a93ac143 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef KITRINGBUFFER_H
#define KITRINGBUFFER_H

#include "kitchensink/kitconfig.h"

typedef struct Kit_RingBuffer {
    int size;
    int len;
    int wpos;
    int rpos;
    char* data;
} Kit_RingBuffer;

KIT_LOCAL Kit_RingBuffer* Kit_CreateRingBuffer(unsigned int size);
KIT_LOCAL void Kit_DestroyRingBuffer(Kit_RingBuffer* rb);
KIT_LOCAL int Kit_WriteRingBuffer(Kit_RingBuffer *rb, const char* data, int len);
KIT_LOCAL int Kit_ReadRingBuffer(Kit_RingBuffer *rb, char* data, int len);
KIT_LOCAL int Kit_PeekRingBuffer(const Kit_RingBuffer *rb, char* data, int len);
KIT_LOCAL int Kit_AdvanceRingBuffer(Kit_RingBuffer *rb, int len);
KIT_LOCAL int Kit_GetRingBufferLength(const Kit_RingBuffer *rb);
KIT_LOCAL int Kit_GetRingBufferSize(const Kit_RingBuffer *rb);
KIT_LOCAL int Kit_GetRingBufferFree(const Kit_RingBuffer *rb);

#endif // KITRINGBUFFER_H