diff options
Diffstat (limited to 'imap.h')
-rw-r--r-- | imap.h | 10 |
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) { |