// // Created by CFIF on 20.04.2022. // #ifndef XfcArray_H #define XfcArray_H #include "stdint.h" #include "stdbool.h" typedef struct { uint8_t *data; uint16_t begin; uint16_t end; uint16_t limit; } tXfcArray; #define XfcArrayCreateStatic(NAME, LENGTH) \ uint8_t NAME##_Data[LENGTH]; \ XfcArray NAME = { .data = NAME##_Data, .begin= 0, .end = 0, .limit = sizeof(NAME##_Data)}; void XfcArrayInit(tXfcArray *array, uint8_t *memAlloc, uint16_t limit); #define XfcArrayInitStatic(ENV, MEM) XfcArrayInit(ENV,MEM,sizeof(MEM)) void XfcArrayClear(tXfcArray *array); bool XfcArrayNotFull(tXfcArray *array); uint16_t XfcArrayGetDataSize(tXfcArray *array); uint8_t *XfcGetTail(tXfcArray *array); bool XfcArrayAddByte(tXfcArray *array, uint8_t value); uint16_t XfcArrayAddBytes(tXfcArray *array, uint8_t *bytes, uint16_t length); uint16_t XfcArrayAddLength(tXfcArray *array, uint16_t length); uint16_t XfcArrayGetSpace(tXfcArray *array); uint16_t XfcArrayGetBytesFront(tXfcArray *array, uint8_t *bytes, uint16_t length); void XfcArrayRemoveBytesFront(tXfcArray *env, uint16_t count); #endif //XfcArray_H