lib: Add an iterator over all messages in a thread

Previously, getting the list of all messages in a thread required
recursively traversing the thread's message hierarchy, which was both
difficult and resulted in messages being out of order.  This adds a
public function to retrieve an iterator over all of the messages in a
thread in oldest-first order.
This commit is contained in:
Austin Clements 2012-11-24 23:57:05 -05:00 committed by David Bremner
parent d6e3905df7
commit f29bcc59df
2 changed files with 13 additions and 6 deletions

View file

@ -719,20 +719,21 @@ int
notmuch_thread_get_total_messages (notmuch_thread_t *thread); notmuch_thread_get_total_messages (notmuch_thread_t *thread);
/* Get a notmuch_messages_t iterator for the top-level messages in /* Get a notmuch_messages_t iterator for the top-level messages in
* 'thread'. * 'thread' in oldest-first order.
* *
* This iterator will not necessarily iterate over all of the messages * This iterator will not necessarily iterate over all of the messages
* in the thread. It will only iterate over the messages in the thread * in the thread. It will only iterate over the messages in the thread
* which are not replies to other messages in the thread. * which are not replies to other messages in the thread.
*
* To iterate over all messages in the thread, the caller will need to
* iterate over the result of notmuch_message_get_replies for each
* top-level message (and do that recursively for the resulting
* messages, etc.).
*/ */
notmuch_messages_t * notmuch_messages_t *
notmuch_thread_get_toplevel_messages (notmuch_thread_t *thread); notmuch_thread_get_toplevel_messages (notmuch_thread_t *thread);
/* Get a notmuch_thread_t iterator for all messages in 'thread' in
* oldest-first order.
*/
notmuch_messages_t *
notmuch_thread_get_messages (notmuch_thread_t *thread);
/* Get the number of messages in 'thread' that matched the search. /* Get the number of messages in 'thread' that matched the search.
* *
* This count includes only the messages in this thread that were * This count includes only the messages in this thread that were

View file

@ -508,6 +508,12 @@ notmuch_thread_get_toplevel_messages (notmuch_thread_t *thread)
return _notmuch_messages_create (thread->toplevel_list); return _notmuch_messages_create (thread->toplevel_list);
} }
notmuch_messages_t *
notmuch_thread_get_messages (notmuch_thread_t *thread)
{
return _notmuch_messages_create (thread->message_list);
}
const char * const char *
notmuch_thread_get_thread_id (notmuch_thread_t *thread) notmuch_thread_get_thread_id (notmuch_thread_t *thread)
{ {