3 * - Abstract Data Types
12 typedef struct sRingBuffer
14 size_t Start; //!< Start of data in ring buffer
15 size_t Length; //!< Number of data bytes in buffer
16 size_t Space; //!< Allocated space in buffer
17 char Data[]; //!< Buffer
21 * \brief Create a ring buffer \a Space bytes large
22 * \param Space Ammount of space to allocate within the buffer
23 * \return Pointer to the buffer structure
25 extern tRingBuffer *RingBuffer_Create(size_t Space);
27 * \brief Read at most \a Length bytes from the buffer
28 * \param Dest Destinaton buffer
29 * \param Buffer Source ring buffer
30 * \param Length Requested number of bytes
31 * \return Number of bytes read
33 extern size_t RingBuffer_Read(void *Dest, tRingBuffer *Buffer, size_t Length);
35 * \brief Write at most \a Length bytes to the buffer
36 * \param Buffer Destination ring buffer
37 * \param Source Source buffer
38 * \param Length Provided number of bytes
39 * \return Number of bytes written
41 extern size_t RingBuffer_Write(tRingBuffer *Buffer, void *Source, size_t Length);