X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=bindings%2Fruby%2Fthreads.c;h=ed403a8f1f3db30e88d8fd030991ae1b62b1c9e6;hp=cee6afbe018f1abd26d07eafe6e2b8440b8277c8;hb=HEAD;hpb=06bf04500ba282052d38adf428219968ae62bb54 diff --git a/bindings/ruby/threads.c b/bindings/ruby/threads.c index cee6afbe..50280260 100644 --- a/bindings/ruby/threads.c +++ b/bindings/ruby/threads.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,37 +13,42 @@ * 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: THREADS.destroy! => nil + * + * Destroys the threads, freeing all resources allocated for it. + */ +VALUE +notmuch_rb_threads_destroy (VALUE self) +{ + notmuch_rb_object_destroy (self, ¬much_rb_threads_type); + + return Qnil; +} + /* call-seq: THREADS.each {|item| block } => THREADS * * Calls +block+ once for each thread in +self+, passing that element as a * parameter. */ VALUE -notmuch_rb_threads_each(VALUE self) +notmuch_rb_threads_each (VALUE self) { - notmuch_rb_thread_t *thread; - notmuch_rb_threads_t *threads; - VALUE threadv; + notmuch_thread_t *thread; + notmuch_threads_t *threads; - Data_Get_Struct(self, notmuch_rb_threads_t, threads); - if (!threads->nm_threads) - return self; + Data_Get_Notmuch_Threads (self, threads); - for (; notmuch_threads_valid(threads->nm_threads); - notmuch_threads_move_to_next(threads->nm_threads)) - { - threadv = Data_Make_Struct(notmuch_rb_cThread, notmuch_rb_thread_t, - notmuch_rb_thread_mark, notmuch_rb_thread_free, thread); - thread->nm_thread = notmuch_threads_get(threads->nm_threads); - thread->threads = self; - rb_yield(threadv); + for (; notmuch_threads_valid (threads); notmuch_threads_move_to_next (threads)) { + thread = notmuch_threads_get (threads); + rb_yield (Data_Wrap_Notmuch_Object (notmuch_rb_cThread, ¬much_rb_thread_type, thread)); } return self;