Bare minimum implementation example. Probably you want to learn with this first.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main ()
{
char plain_array[64];
memset (plain_array, '=', sizeof (plain_array));
plain_array,
sizeof (char),
64,
0, 0);
puts ("To exit, just hit enter button without typing any letter");
while (1) {
fputs ("\r\nType something> ", stdout);
while (1) {
const char each_letter = (char)getchar ();
if (each_letter == '\n')
break;
else if (each_letter < 32 || each_letter > 126)
continue;
}
break;
char each_letter;
putchar (each_letter);
}
printf ("\r\n"
"\r\n"
"Ringbuffer: [%.*s]\r\n",
(int)sizeof (plain_array), plain_array);
}
puts ("\r\nBye!");
return EXIT_SUCCESS;
}
void ringbuffer_read(ringbuffer_context_t context, void *pointer_to_output)
Copy value from an element pointed by read index, to an intended variable.
void ringbuffer_destroy(ringbuffer_context_t *pointer_to_context)
Clean-up ringbuffer context then NULLify it.
struct ringbuffer_context * ringbuffer_context_t
Points to an allocated memory for ringbuffer module.
Definition: ringbuffer.h:52
ringbuffer_context_t ringbuffer_init(void *target_array, const unsigned int element_size, const unsigned int element_count, const unsigned int initial_read_index, const unsigned int initial_write_index)
Initiate a single instance of ringbuffer management.
void ringbuffer_write(ringbuffer_context_t context, const void *pointer_to_input)
Put value from a variable to an element which pointed by write index.
unsigned int ringbuffer_is_empty(const ringbuffer_context_t context)
Check if the ringbuffer is empty, which indicated by 'read index == write index'.