aboutsummaryrefslogtreecommitdiff
path: root/src/list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/list.c')
-rw-r--r--src/list.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/list.c b/src/list.c
new file mode 100644
index 0000000..561b308
--- /dev/null
+++ b/src/list.c
@@ -0,0 +1,34 @@
+#include <stdlib.h>
+#include "list.h"
+
+/*
+ * Creates a new list.
+ */
+List* List_Create(void)
+{
+ List* list = malloc(sizeof(List));
+
+ list->next = NULL; /* nwxt element is empty */
+ list->current = list; /* points to itself */
+ list->first = list; /* first element is itself */
+ list->data = NULL; /* data is empty */
+ list->size = 0;
+
+ return list;
+}
+
+/*
+ * Adds a new element to the list.
+ */
+void List_Add(List* list, /* list where to add new element */
+ void* data, /* data to add */
+ int size_of) /* size of the data */
+{
+ void* dest = malloc(size_of); /* allocates memory like data parameter */
+
+ memcpy(dest, data, size_of); /* copies data inside dest */
+ list->data = dest;
+
+ list->next = malloc(sizeof(List));
+ list->size ++;
+}