summaryrefslogtreecommitdiff
path: root/src/administration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration.cpp')
-rw-r--r--src/administration.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/administration.cpp b/src/administration.cpp
new file mode 100644
index 0000000..94b1910
--- /dev/null
+++ b/src/administration.cpp
@@ -0,0 +1,45 @@
+#include "administration.hpp"
+#include <stdio.h>
+administration g_administration;
+
+void init_administration_obj()
+{
+ list_init(&g_administration.contacts);
+}
+
+void destroy_administration_obj()
+{
+ list_destroy(&g_administration.contacts);
+}
+
+bool create_contact(contact data)
+{
+ contact* new_contact = (contact*)malloc(sizeof(contact));
+ memcpy((void*)new_contact, (void*)&data, sizeof(contact));
+ list_append(&g_administration.contacts, new_contact);
+
+ g_administration.next_id++;
+
+ return true;
+}
+
+bool update_contact(contact data)
+{
+ list_iterator_start(&g_administration.contacts);
+ while (list_iterator_hasnext(&g_administration.contacts)) {
+ contact* c = (contact *)list_iterator_next(&g_administration.contacts);
+
+ if (strcmp(c->id, data.id) == 0) {
+ memcpy(c, &data, sizeof(data));
+ return true;
+ }
+ }
+ list_iterator_stop(&g_administration.contacts);
+
+ return false;
+}
+
+void remove_contact(int index)
+{
+ list_delete_at(&g_administration.contacts, index);
+} \ No newline at end of file