Add initial crypto functionality
[libcontrac.git] / src / dtk_list.c
diff --git a/src/dtk_list.c b/src/dtk_list.c
new file mode 100644 (file)
index 0000000..9ef41f7
--- /dev/null
@@ -0,0 +1,101 @@
+/** \ingroup contrac
+ * @file
+ * @author     David Llewellyn-Jones
+ * @version    $(VERSION)
+ *
+ * @section LICENSE
+ *
+ *
+ *
+ * @brief
+ * @section DESCRIPTION
+ *
+ *
+ *
+ */
+
+// Includes
+
+#include <stdlib.h>
+#include <string.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#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;
+}
+
+