NeoMutt  2021-02-05-666-ge300cd
Teaching an old dog new tricks
Go to the documentation of this file.
24 #ifndef MUTT_LIB_LIST_H
25 #define MUTT_LIB_LIST_H
27 #include <stddef.h>
28 #include <stdbool.h>
29 #include "queue.h"
34 struct ListNode
35 {
36  char *data;
37  STAILQ_ENTRY(ListNode) entries;
38 };
39 STAILQ_HEAD(ListHead, ListNode);
45 typedef void (*list_free_t)(void **ptr);
47 void mutt_list_clear(struct ListHead *h);
48 bool mutt_list_compare(const struct ListHead *ah, const struct ListHead *bh);
49 struct ListNode *mutt_list_find(const struct ListHead *h, const char *data);
50 void mutt_list_free(struct ListHead *h);
51 void mutt_list_free_type(struct ListHead *h, list_free_t fn);
52 struct ListNode *mutt_list_insert_after(struct ListHead *h, struct ListNode *n, char *s);
53 struct ListNode *mutt_list_insert_head(struct ListHead *h, char *s);
54 struct ListNode *mutt_list_insert_tail(struct ListHead *h, char *s);
55 bool mutt_list_match(const char *s, struct ListHead *h);
56 size_t mutt_list_str_split(struct ListHead *head, const char *src, char sep);
58 #endif /* MUTT_LIB_LIST_H */
STAILQ_ENTRY(ListNode) entries
Linked list.
STAILQ_HEAD(ListHead, ListNode)
void mutt_list_clear(struct ListHead *h)
Free a list, but NOT its strings.
Definition: list.c:167
struct ListNode * mutt_list_insert_after(struct ListHead *h, struct ListNode *n, char *s)
Insert a string after a given ListNode.
Definition: list.c:84
struct ListNode * mutt_list_find(const struct ListHead *h, const char *data)
Find a string in a List.
Definition: list.c:102
size_t mutt_list_str_split(struct ListHead *head, const char *src, char sep)
Split a string into a list using a separator char.
Definition: list.c:247
struct ListNode * mutt_list_insert_tail(struct ListHead *h, char *s)
Append a string to the end of a List.
Definition: list.c:64
bool mutt_list_compare(const struct ListHead *ah, const struct ListHead *bh)
Compare two string lists.
Definition: list.c:218
bool mutt_list_match(const char *s, struct ListHead *h)
Is the string in the list (see notes)
Definition: list.c:195
struct ListNode * mutt_list_insert_head(struct ListHead *h, char *s)
Insert a string at the beginning of a List.
Definition: list.c:45
void mutt_list_free_type(struct ListHead *h, list_free_t fn)
Free a List of type.
Definition: list.c:144
char * data
Definition: list.h:36
A List node for strings.
Definition: list.h:34
void mutt_list_free(struct ListHead *h)
Free a List AND its strings.
Definition: list.c:122
void(* list_free_t)(void **ptr)
Prototype for a function to free List data.
Definition: list.h:45