X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=cnotmuch%2Fdatabase.py;h=8313813ce85e67903b3ccc12809713e4718986e2;hb=d099b79fd1c4d1248a3221c9994be51bbff898e8;hp=82f1372c5c134ee6fea4e4ceb3da2053f33dc6a8;hpb=e026813bcb623bff70895a353aeef90364f66795;p=notmuch diff --git a/cnotmuch/database.py b/cnotmuch/database.py index 82f1372c..8313813c 100644 --- a/cnotmuch/database.py +++ b/cnotmuch/database.py @@ -268,6 +268,9 @@ class Messages(object): _get = nmlib.notmuch_messages_get _get.restype = c_void_p + _collect_tags = nmlib.notmuch_messages_collect_tags + _collect_tags.restype = c_void_p + def __init__(self, msgs_p, parent=None): """ msg_p is a pointer to an notmuch_messages_t Structure. If it is None, @@ -290,7 +293,26 @@ class Messages(object): #store parent, so we keep them alive as long as self is alive self._parent = parent logging.debug("Inited Messages derived from %s" %(str(parent))) - + + def collect_tags(self): + """ return the Tags() belonging to the messages + + Do note that collect_tags will iterate over the messages and + therefore will not allow further iterationsl + Raises NotmuchError(STATUS.NOT_INITIALIZED) if not inited + """ + if self._msgs is None: + raise NotmuchError(STATUS.NOT_INITIALIZED) + + # collect all tags (returns NULL on error) + tags_p = Messages._collect_tags (self._msgs) + #reset _msgs as we iterated over it and can do so only once + self._msgs = None + + if tags_p == None: + raise NotmuchError(STATUS.NULL_POINTER) + return Tags(tags_p, self) + def __iter__(self): """ Make Messages an iterator """ return self