X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=bindings%2Fruby%2Ftags.c;h=db8b4cfc86f0b3eaa818ce0d7876862158826862;hb=32819f74d3ac2eee25cf234d988688cc82ecbc0a;hp=d0a5054ad002940a86263332f33f68bd14f8117c;hpb=06bf04500ba282052d38adf428219968ae62bb54;p=notmuch diff --git a/bindings/ruby/tags.c b/bindings/ruby/tags.c index d0a5054a..db8b4cfc 100644 --- a/bindings/ruby/tags.c +++ b/bindings/ruby/tags.c @@ -1,6 +1,6 @@ /* The Ruby interface to the notmuch mail library * - * Copyright © 2010 Ali Polatel + * Copyright © 2010, 2011 Ali Polatel * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -13,13 +13,31 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/ . + * along with this program. If not, see https://www.gnu.org/licenses/ . * * Author: Ali Polatel */ #include "defs.h" +/* + * call-seq: TAGS.destroy! => nil + * + * Destroys the tags, freeing all resources allocated for it. + */ +VALUE +notmuch_rb_tags_destroy (VALUE self) +{ + notmuch_tags_t *tags; + + Data_Get_Notmuch_Tags (self, tags); + + notmuch_tags_destroy (tags); + DATA_PTR (self) = NULL; + + return Qnil; +} + /* * call-seq: TAGS.each {|item| block } => TAGS * @@ -27,19 +45,16 @@ * parameter. */ VALUE -notmuch_rb_tags_each(VALUE self) +notmuch_rb_tags_each (VALUE self) { const char *tag; - notmuch_rb_tags_t *tags; + notmuch_tags_t *tags; - Data_Get_Struct(self, notmuch_rb_tags_t, tags); - if (!tags->nm_tags) - return self; + Data_Get_Notmuch_Tags (self, tags); - for (; notmuch_tags_valid(tags->nm_tags); - notmuch_tags_move_to_next(tags->nm_tags)) { - tag = notmuch_tags_get(tags->nm_tags); - rb_yield(tag ? rb_str_new2(tag) : Qnil); + for (; notmuch_tags_valid (tags); notmuch_tags_move_to_next (tags)) { + tag = notmuch_tags_get (tags); + rb_yield (rb_str_new2 (tag)); } return self;