Add initial crypto functionality
[libcontrac.git] / src / dtk_list.c
1 /** \ingroup contrac
2 * @file
3 * @author David Llewellyn-Jones
4 * @version $(VERSION)
5 *
6 * @section LICENSE
7 *
8 *
9 *
10 * @brief
11 * @section DESCRIPTION
12 *
13 *
14 *
15 */
16
17 // Includes
18
19 #include <stdlib.h>
20 #include <string.h>
21 #include <stddef.h>
22 #include <stdint.h>
23
24 #include "contrac/contrac.h"
25 #include "contrac/utils.h"
26 #include "contrac/log.h"
27
28 #include "contrac/dtk_list.h"
29
30 // Defines
31
32 // Structures
33
34 struct _DtkListItem {
35 Dtk * dtk;
36 DtkListItem * next;
37 };
38
39 struct _DtkList {
40 DtkListItem * first;
41 DtkListItem * last;
42 };
43
44 // Function prototypes
45
46 // Function definitions
47
48 DtkList * dtk_list_new() {
49 DtkList * data;
50
51 data = calloc(sizeof(DtkList), 1);
52
53 return data;
54 }
55
56 void dtk_list_delete(DtkList * data) {
57 DtkListItem * item;
58 DtkListItem * next;
59
60 if (data) {
61 item = data->first;
62 while (item) {
63 next = item->next;
64 dtk_delete(item->dtk);
65 free(item);
66 item = next;
67 }
68
69 free(data);
70 }
71 }
72
73 void dtk_list_append(DtkList * data, Dtk * dtk) {
74 DtkListItem * item;
75
76 item = calloc(sizeof(DtkListItem), 1);
77 item->dtk = dtk;
78
79 if (data->last == NULL) {
80 data->first = item;
81 data->last = item;
82 }
83 else {
84 data->last->next = item;
85 data->last = item;
86 }
87 }
88
89 DtkListItem const * dtk_list_first(DtkList const * data) {
90 return data->first;
91 }
92
93 DtkListItem const * dtk_list_next(DtkListItem const * data) {
94 return data->next;
95 }
96
97 Dtk const * dtk_list_get_dtk(DtkListItem const * data) {
98 return data->dtk;
99 }
100
101