X-Git-Url: https://www.flypig.org.uk/git/?p=libcontrac.git;a=blobdiff_plain;f=src%2Fdtk_list.c;fp=src%2Fdtk_list.c;h=9ef41f73bcd9eea887509cbc06a5dcb865a1d8da;hp=0000000000000000000000000000000000000000;hb=8515bbba069347de07a452586d7e49a2e8bdf151;hpb=79942abab927241b65a29a8a30d71b8efe6b6d94 diff --git a/src/dtk_list.c b/src/dtk_list.c new file mode 100644 index 0000000..9ef41f7 --- /dev/null +++ b/src/dtk_list.c @@ -0,0 +1,101 @@ +/** \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" + +// Defines + +// Structures + +struct _DtkListItem { + Dtk * dtk; + DtkListItem * next; +}; + +struct _DtkList { + DtkListItem * first; + DtkListItem * last; +}; + +// Function prototypes + +// Function definitions + +DtkList * dtk_list_new() { + DtkList * data; + + data = calloc(sizeof(DtkList), 1); + + return data; +} + +void dtk_list_delete(DtkList * data) { + DtkListItem * item; + DtkListItem * next; + + if (data) { + item = data->first; + while (item) { + next = item->next; + dtk_delete(item->dtk); + free(item); + item = next; + } + + free(data); + } +} + +void dtk_list_append(DtkList * data, Dtk * dtk) { + DtkListItem * item; + + item = calloc(sizeof(DtkListItem), 1); + item->dtk = dtk; + + if (data->last == NULL) { + data->first = item; + data->last = item; + } + else { + data->last->next = item; + data->last = item; + } +} + +DtkListItem const * dtk_list_first(DtkList const * data) { + return data->first; +} + +DtkListItem const * dtk_list_next(DtkListItem const * data) { + return data->next; +} + +Dtk const * dtk_list_get_dtk(DtkListItem const * data) { + return data->dtk; +} + +