Add initial crypto functionality
[libcontrac.git] / src / rpi_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 #include "contrac/dtk_list.h"
28
29 #include "contrac/rpi_list.h"
30
31 // Defines
32
33 // Structures
34
35 struct _RpiListItem {
36 Rpi * rpi;
37 RpiListItem * next;
38 };
39
40 struct _RpiList {
41 RpiListItem * first;
42 RpiListItem * last;
43 };
44
45 // Function prototypes
46
47 // Function definitions
48
49 RpiList * rpi_list_new() {
50 RpiList * data;
51
52 data = calloc(sizeof(RpiList), 1);
53
54 return data;
55 }
56
57 void rpi_list_delete(RpiList * data) {
58 RpiListItem * item;
59 RpiListItem * next;
60
61 if (data) {
62 item = data->first;
63 while (item) {
64 next = item->next;
65 rpi_delete(item->rpi);
66 free(item);
67 item = next;
68 }
69
70 free(data);
71 }
72 }
73
74 void rpi_list_append(RpiList * data, Rpi * rpi) {
75 RpiListItem * item;
76
77 item = calloc(sizeof(RpiListItem), 1);
78 item->rpi = rpi;
79
80 if (data->last == NULL) {
81 data->first = item;
82 data->last = item;
83 }
84 else {
85 data->last->next = item;
86 data->last = item;
87 }
88 }
89
90 RpiListItem const * rpi_list_first(RpiList const * data) {
91 return data->first;
92 }
93
94 RpiListItem const * rpi_list_next(RpiListItem const * data) {
95 return data->next;
96 }
97
98 Rpi const * rpi_list_get_rpi(RpiListItem const * data) {
99 return data->rpi;
100 }
101
102