summary refs log tree commit diff
path: root/imap.h
diff options
context:
space:
mode:
Diffstat (limited to 'imap.h')
-rw-r--r--imap.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/imap.h b/imap.h
index f3ca668..3a30d5a 100644
--- a/imap.h
+++ b/imap.h
@@ -125,6 +125,16 @@ static inline void listPush(struct List *list, struct Data data) {
 	list->ptr[list->len++] = data;
 }
 
+static inline void listFlatten(struct List *flat, struct List nested) {
+	for (size_t i = 0; i < nested.len; ++i) {
+		if (nested.ptr[i].type == List) {
+			listFlatten(flat, nested.ptr[i].list);
+		} else {
+			listPush(flat, nested.ptr[i]);
+		}
+	}
+}
+
 static inline void dataFree(struct Data data);
 
 static inline void listFree(struct List list) {