/*
+ * Acess2 Kernel
+ *
+ * adt.c
+ * - Complex data type code
*/
#include <acess.h>
#include <adt.h>
+
// === CODE ===
// --- Ring Buffers ---
tRingBuffer *RingBuffer_Create(size_t Space)
{
int endData = Buffer->Space - Buffer->Start;
memcpy(Dest, &Buffer->Data[Buffer->Start], endData);
- memcpy(Dest + endData, &Buffer->Data, Length - endData);
+ memcpy((Uint8*)Dest + endData, &Buffer->Data, Length - endData);
}
else
{
memcpy(Dest, &Buffer->Data[Buffer->Start], Length);
}
+ Buffer->Start += Length;
+ if( Buffer->Start > Buffer->Space )
+ Buffer->Start -= Buffer->Space;
Buffer->Length -= Length;
return Length;
}
-size_t RingBuffer_Write(tRingBuffer *Buffer, void *Source, size_t Length)
+size_t RingBuffer_Write(tRingBuffer *Buffer, const void *Source, size_t Length)
{
size_t bufEnd = Buffer->Start + Buffer->Length;
size_t endSpace = Buffer->Space - bufEnd;
if(endSpace < Length)
{
memcpy( &Buffer->Data[bufEnd], Source, endSpace );
- memcpy( Buffer->Data, Source + endSpace, Length - endSpace );
+ memcpy( Buffer->Data, (Uint8*)Source + endSpace, Length - endSpace );
Buffer->Length = Length - endSpace;
}
else