// Tags returns the tags for the current message, returning a *Tags which can // be used to iterate over all tags using `Tags.Next(Tag)` func (m *Message) Tags() *Tags { ctags := C.notmuch_message_get_tags(m.toC()) tags := &Tags{ cptr: unsafe.Pointer(ctags), parent: (*cStruct)(m), } setGcClose(tags) return tags }
/* Get the tags for 'message', returning a notmuch_tags_t object which * can be used to iterate over all tags. * * The tags object is owned by the message and as such, will only be * valid for as long as the message is valid, (which is until the * query from which it derived is destroyed). * * Typical usage might be: * * notmuch_message_t *message; * notmuch_tags_t *tags; * const char *tag; * * message = notmuch_database_find_message (database, message_id); * * for (tags = notmuch_message_get_tags (message); * notmuch_tags_valid (tags); * notmuch_result_move_to_next (tags)) * { * tag = notmuch_tags_get (tags); * .... * } * * notmuch_message_destroy (message); * * Note that there's no explicit destructor needed for the * notmuch_tags_t object. (For consistency, we do provide a * notmuch_tags_destroy function, but there's no good reason to call * it if the message is about to be destroyed). */ func (self *Message) GetTags() *Tags { if self.message == nil { return nil } tags := C.notmuch_message_get_tags(self.message) if tags == nil { return nil } return &Tags{tags: tags} }