notmuch: New function to retrieve all tags from the database.
authorJan Janak <jan@ryngle.com>
Mon, 23 Nov 2009 00:10:54 +0000 (01:10 +0100)
committerCarl Worth <cworth@cworth.org>
Thu, 26 Nov 2009 15:01:52 +0000 (07:01 -0800)
commitc3c52e464b8b0e024a01feacfeb34cc4ce1f3d62
tree18903b3db44adf186a95fa2b63f645e2c40c9488
parent34c840a23e1db4c6cf4a836b441d027fc17e9706
notmuch: New function to retrieve all tags from the database.

This patch adds a new function called notmuch_database_get_all_tags
which can be used to obtain a list of all tags from the database
(in other words, the list contains all tags from all messages). The
function produces an alphabetically sorted list.

To add support for the new function, we rip the guts off of
notmuch_message_get_tags and put them in a new generic function
called _notmuch_convert_tags. The generic function takes a
Xapian::TermIterator as argument and uses the iterator to find tags.
This makes the function usable with different Xapian objects.

Function notmuch_message_get_tags is then reimplemented to call the
generic function with message->doc.termlist_begin() as argument.

Similarly, we implement notmuch_message_database_get_all_tags, the
function calls the generic function with db->xapian_db->allterms_begin()
as argument.

Finally, notmuch_database_get_all_tags is exported through
lib/notmuch.h

Signed-off-by: Jan Janak <jan@ryngle.com>
lib/database-private.h
lib/database.cc
lib/message.cc
lib/notmuch.h