summaryrefslogtreecommitdiff
path: root/src/desktop_vec.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/desktop_vec.h')
-rw-r--r--src/desktop_vec.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/desktop_vec.h b/src/desktop_vec.h
new file mode 100644
index 0000000..9c15ad9
--- /dev/null
+++ b/src/desktop_vec.h
@@ -0,0 +1,36 @@
+#ifndef DESKTOP_VEC_H
+#define DESKTOP_VEC_H
+
+#include <stddef.h>
+#include <stdio.h>
+
+struct desktop_entry {
+ char *id;
+ char *name;
+ char *path;
+};
+
+struct desktop_vec {
+ size_t count;
+ size_t size;
+ struct desktop_entry *buf;
+};
+
+[[nodiscard("memory leaked")]]
+struct desktop_vec desktop_vec_create(void);
+void desktop_vec_destroy(struct desktop_vec *restrict vec);
+void desktop_vec_add(
+ struct desktop_vec *restrict vec,
+ const char *restrict id,
+ const char *restrict name,
+ const char *restrict path);
+void desktop_vec_add_file(struct desktop_vec *desktop, const char *id, const char *path);
+
+void desktop_vec_sort(struct desktop_vec *restrict vec);
+struct desktop_entry *desktop_vec_find(struct desktop_vec *restrict vec, const char *name);
+
+struct desktop_vec desktop_vec_load(FILE *file);
+void desktop_vec_save(struct desktop_vec *restrict vec, FILE *restrict file);
+
+
+#endif /* DESKTOP_VEC_H */