42 lines
1.4 KiB
C
42 lines
1.4 KiB
C
#ifndef __CIRC_BUF__
|
|
#define __CIRC_BUF__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define MIN(a, b) (((a) > (b)) ? (b) : (a))
|
|
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
|
|
|
typedef struct CIRC_BUF {
|
|
unsigned int Size;
|
|
unsigned int Header;
|
|
unsigned int Tailer;
|
|
unsigned char *Buffer;
|
|
} CircBuf_t;
|
|
|
|
unsigned long long IsPowerOf2 (unsigned long long Num);
|
|
unsigned long RoundUp_PowerOf2 (unsigned long Num);
|
|
unsigned long RoundDown_PowerOf2(unsigned long Num);
|
|
|
|
int CircBuf_Init(CircBuf_t *CBuf, unsigned char *Buff, unsigned int Size);
|
|
int CircBuf_Alloc (CircBuf_t *CBuf, unsigned int Size);
|
|
void CircBuf_Free (CircBuf_t *CBuf);
|
|
unsigned int CircBuf_Push (CircBuf_t *CBuf, unsigned char *data, unsigned int LenToPush);
|
|
unsigned int CircBuf_Pop (CircBuf_t *CBuf, unsigned char *data, unsigned int LenToPop);
|
|
unsigned int CircBuf_PopOneChar (CircBuf_t *CBuf, unsigned char *data);
|
|
unsigned char CircBuf_At(CircBuf_t *CBuf, unsigned int offset);
|
|
unsigned int CircBuf_Read(CircBuf_t *CBuf, unsigned char *data, unsigned int LenToRead);
|
|
void CircBuf_Drop(CircBuf_t *CBuf, unsigned int LenToDrop);
|
|
unsigned int CircBuf_GetAvalaibleSize (CircBuf_t *CBuf);
|
|
unsigned int CircBuf_GetUsedSize (CircBuf_t *CBuf);
|
|
unsigned int CircBuf_IsEmpty (CircBuf_t *CBuf);
|
|
unsigned int CircBuf_IsFull (CircBuf_t *CBuf);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|