X-Git-Url: https://www.flypig.org.uk/git/?p=libcontrac.git;a=blobdiff_plain;f=src%2Frpi_list.c;fp=src%2Frpi_list.c;h=fb482bac519cef5e1e60bc5eae812523cfe48e62;hp=0000000000000000000000000000000000000000;hb=8515bbba069347de07a452586d7e49a2e8bdf151;hpb=79942abab927241b65a29a8a30d71b8efe6b6d94 diff --git a/src/rpi_list.c b/src/rpi_list.c new file mode 100644 index 0000000..fb482ba --- /dev/null +++ b/src/rpi_list.c @@ -0,0 +1,102 @@ +/** \ingroup contrac + * @file + * @author David Llewellyn-Jones + * @version $(VERSION) + * + * @section LICENSE + * + * + * + * @brief + * @section DESCRIPTION + * + * + * + */ + +// Includes + +#include +#include +#include +#include + +#include "contrac/contrac.h" +#include "contrac/utils.h" +#include "contrac/log.h" +#include "contrac/dtk_list.h" + +#include "contrac/rpi_list.h" + +// Defines + +// Structures + +struct _RpiListItem { + Rpi * rpi; + RpiListItem * next; +}; + +struct _RpiList { + RpiListItem * first; + RpiListItem * last; +}; + +// Function prototypes + +// Function definitions + +RpiList * rpi_list_new() { + RpiList * data; + + data = calloc(sizeof(RpiList), 1); + + return data; +} + +void rpi_list_delete(RpiList * data) { + RpiListItem * item; + RpiListItem * next; + + if (data) { + item = data->first; + while (item) { + next = item->next; + rpi_delete(item->rpi); + free(item); + item = next; + } + + free(data); + } +} + +void rpi_list_append(RpiList * data, Rpi * rpi) { + RpiListItem * item; + + item = calloc(sizeof(RpiListItem), 1); + item->rpi = rpi; + + if (data->last == NULL) { + data->first = item; + data->last = item; + } + else { + data->last->next = item; + data->last = item; + } +} + +RpiListItem const * rpi_list_first(RpiList const * data) { + return data->first; +} + +RpiListItem const * rpi_list_next(RpiListItem const * data) { + return data->next; +} + +Rpi const * rpi_list_get_rpi(RpiListItem const * data) { + return data->rpi; +} + +