diff options
author | Carl Worth <cworth@cworth.org> | 2010-11-11 00:07:24 -0800 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2010-11-11 03:40:19 -0800 |
commit | 1d02dd64afe245a2b5a8461feeba975e61f0c233 (patch) | |
tree | 53ac99ecf481c27709e2d0f26b9c7d8d6d246b02 /lib/notmuch-private.h | |
parent | d87db8843266caf6b11c1f2f1874328830b23878 (diff) |
lib: Add new, public notmuch_message_get_filenames
This augments the existing notmuch_message_get_filename by allowing
the caller access to all filenames in the case of multiple files for a
single message.
To support this, we split the iterator (notmuch_filenames_t) away from
the list storage (notmuch_filename_list_t) where previously these were
a single object (notmuch_filenames_t). Then, whenever the user asks
for a file or filename, the message object lazily creates a complete
notmuch_filename_list_t and then:
For notmuch_message_get_filename, returns the first filename
in the list.
For notmuch_message_get_filenames, creates and returns a new
iterator for the filename list.
Diffstat (limited to 'lib/notmuch-private.h')
-rw-r--r-- | lib/notmuch-private.h | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h index 6a9d5ddd..37ccbb31 100644 --- a/lib/notmuch-private.h +++ b/lib/notmuch-private.h @@ -450,15 +450,35 @@ _notmuch_tags_prepare_iterator (notmuch_tags_t *tags); /* filenames.c */ -notmuch_filenames_t * -_notmuch_filenames_create (const void *ctx); +typedef struct _notmuch_filename_node { + char *filename; + struct _notmuch_filename_node *next; +} notmuch_filename_node_t; + +typedef struct _notmuch_filename_list { + notmuch_filename_node_t *head; + notmuch_filename_node_t **tail; +} notmuch_filename_list_t; +notmuch_filename_list_t * +_notmuch_filename_list_create (const void *ctx); + +/* Add 'filename' to 'list'. + * + * The list will create its own talloced copy of 'filename'. + */ void -_notmuch_filenames_add_filename (notmuch_filenames_t *filenames, - const char *filename); +_notmuch_filename_list_add_filename (notmuch_filename_list_t *list, + const char *filename); void -_notmuch_filenames_move_to_first (notmuch_filenames_t *filenames); +_notmuch_filename_list_destroy (notmuch_filename_list_t *list); + +/* The notmuch_filenames_t is an iterator object for a + * notmuch_filename_list_t */ +notmuch_filenames_t * +_notmuch_filenames_create (const void *ctx, + notmuch_filename_list_t *list); #pragma GCC visibility pop |