1 /* The Ruby interface to the notmuch mail library 2 * 3 * Copyright © 2010, 2011 Ali Polatel 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see https://www.gnu.org/licenses/ . 17 * 18 * Author: Ali Polatel <alip@exherbo.org> 19 */ 20 21 #include "defs.h" 22 23 /* 24 * call-seq: TAGS.destroy! => nil 25 * 26 * Destroys the tags, freeing all resources allocated for it. 27 */ 28 VALUE notmuch_rb_tags_destroy(VALUE self)29notmuch_rb_tags_destroy (VALUE self) 30 { 31 notmuch_rb_object_destroy (self, ¬much_rb_tags_type); 32 33 return Qnil; 34 } 35 36 /* 37 * call-seq: TAGS.each {|item| block } => TAGS 38 * 39 * Calls +block+ once for each element in +self+, passing that element as a 40 * parameter. 41 */ 42 VALUE notmuch_rb_tags_each(VALUE self)43notmuch_rb_tags_each (VALUE self) 44 { 45 const char *tag; 46 notmuch_tags_t *tags; 47 48 Data_Get_Notmuch_Tags (self, tags); 49 50 for (; notmuch_tags_valid (tags); notmuch_tags_move_to_next (tags)) { 51 tag = notmuch_tags_get (tags); 52 rb_yield (rb_str_new2 (tag)); 53 } 54 55 return self; 56 } 57