X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=bindings%2Fruby%2Fthread.c;h=7cb2a3dcc6ebeacdd5c4c37b726a53056c436a5c;hp=5534fe3f38334323fa14b13976f75e91e52dc1ae;hb=HEAD;hpb=c7893408bbe6904ae7da97aa203587af4ec2fac7 diff --git a/bindings/ruby/thread.c b/bindings/ruby/thread.c index 5534fe3f..b20ed893 100644 --- a/bindings/ruby/thread.c +++ b/bindings/ruby/thread.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,7 +13,7 @@ * 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 */ @@ -21,18 +21,14 @@ #include "defs.h" /* - * call-seq: THREAD.destroy => nil + * call-seq: THREAD.destroy! => nil * * Destroys the thread, freeing all resources allocated for it. */ VALUE -notmuch_rb_thread_destroy(VALUE self) +notmuch_rb_thread_destroy (VALUE self) { - notmuch_thread_t *thread; - - Data_Get_Struct(self, notmuch_thread_t, thread); - - notmuch_thread_destroy(thread); + notmuch_rb_object_destroy (self, ¬much_rb_thread_type); return Qnil; } @@ -43,16 +39,16 @@ notmuch_rb_thread_destroy(VALUE self) * Returns the thread id */ VALUE -notmuch_rb_thread_get_thread_id(VALUE self) +notmuch_rb_thread_get_thread_id (VALUE self) { const char *tid; notmuch_thread_t *thread; - Data_Get_Struct(self, notmuch_thread_t, thread); + Data_Get_Notmuch_Thread (self, thread); - tid = notmuch_thread_get_thread_id(thread); + tid = notmuch_thread_get_thread_id (thread); - return rb_str_new2(tid); + return rb_str_new2 (tid); } /* @@ -61,13 +57,13 @@ notmuch_rb_thread_get_thread_id(VALUE self) * Returns the number of total messages */ VALUE -notmuch_rb_thread_get_total_messages(VALUE self) +notmuch_rb_thread_get_total_messages (VALUE self) { notmuch_thread_t *thread; - Data_Get_Struct(self, notmuch_thread_t, thread); + Data_Get_Notmuch_Thread (self, thread); - return INT2FIX(notmuch_thread_get_total_messages(thread)); + return INT2FIX (notmuch_thread_get_total_messages (thread)); } /* @@ -76,18 +72,38 @@ notmuch_rb_thread_get_total_messages(VALUE self) * Get a Notmuch::Messages iterator for the top level messages in thread. */ VALUE -notmuch_rb_thread_get_toplevel_messages(VALUE self) +notmuch_rb_thread_get_toplevel_messages (VALUE self) +{ + notmuch_messages_t *messages; + notmuch_thread_t *thread; + + Data_Get_Notmuch_Thread (self, thread); + + messages = notmuch_thread_get_toplevel_messages (thread); + if (!messages) + rb_raise (notmuch_rb_eMemoryError, "Out of memory"); + + return Data_Wrap_Notmuch_Object (notmuch_rb_cMessages, ¬much_rb_messages_type, messages); +} + +/* + * call-seq: THREAD.messages => MESSAGES + * + * Get a Notmuch::Messages iterator for the all messages in thread. + */ +VALUE +notmuch_rb_thread_get_messages (VALUE self) { notmuch_messages_t *messages; notmuch_thread_t *thread; - Data_Get_Struct(self, notmuch_thread_t, thread); + Data_Get_Notmuch_Thread (self, thread); - messages = notmuch_thread_get_toplevel_messages(thread); + messages = notmuch_thread_get_messages (thread); if (!messages) - rb_raise(notmuch_rb_eMemoryError, "Out of memory"); + rb_raise (notmuch_rb_eMemoryError, "Out of memory"); - return Data_Wrap_Struct(notmuch_rb_cMessages, NULL, NULL, messages); + return Data_Wrap_Notmuch_Object (notmuch_rb_cMessages, ¬much_rb_messages_type, messages); } /* @@ -96,13 +112,13 @@ notmuch_rb_thread_get_toplevel_messages(VALUE self) * Get the number of messages in thread that matched the search */ VALUE -notmuch_rb_thread_get_matched_messages(VALUE self) +notmuch_rb_thread_get_matched_messages (VALUE self) { notmuch_thread_t *thread; - Data_Get_Struct(self, notmuch_thread_t, thread); + Data_Get_Notmuch_Thread (self, thread); - return INT2FIX(notmuch_thread_get_matched_messages(thread)); + return INT2FIX (notmuch_thread_get_matched_messages (thread)); } /* @@ -111,16 +127,16 @@ notmuch_rb_thread_get_matched_messages(VALUE self) * Get a comma-separated list of the names of the authors. */ VALUE -notmuch_rb_thread_get_authors(VALUE self) +notmuch_rb_thread_get_authors (VALUE self) { const char *authors; notmuch_thread_t *thread; - Data_Get_Struct(self, notmuch_thread_t, thread); + Data_Get_Notmuch_Thread (self, thread); - authors = notmuch_thread_get_authors(thread); + authors = notmuch_thread_get_authors (thread); - return rb_str_new2(authors); + return rb_str_new2 (authors); } /* @@ -129,16 +145,16 @@ notmuch_rb_thread_get_authors(VALUE self) * Returns the subject of the thread */ VALUE -notmuch_rb_thread_get_subject(VALUE self) +notmuch_rb_thread_get_subject (VALUE self) { const char *subject; notmuch_thread_t *thread; - Data_Get_Struct(self, notmuch_thread_t, thread); + Data_Get_Notmuch_Thread (self, thread); - subject = notmuch_thread_get_subject(thread); + subject = notmuch_thread_get_subject (thread); - return rb_str_new2(subject); + return rb_str_new2 (subject); } /* @@ -147,13 +163,13 @@ notmuch_rb_thread_get_subject(VALUE self) * Get the date of the oldest message in thread. */ VALUE -notmuch_rb_thread_get_oldest_date(VALUE self) +notmuch_rb_thread_get_oldest_date (VALUE self) { notmuch_thread_t *thread; - Data_Get_Struct(self, notmuch_thread_t, thread); + Data_Get_Notmuch_Thread (self, thread); - return UINT2NUM(notmuch_thread_get_oldest_date(thread)); + return UINT2NUM (notmuch_thread_get_oldest_date (thread)); } /* @@ -162,13 +178,13 @@ notmuch_rb_thread_get_oldest_date(VALUE self) * Get the date of the newest message in thread. */ VALUE -notmuch_rb_thread_get_newest_date(VALUE self) +notmuch_rb_thread_get_newest_date (VALUE self) { notmuch_thread_t *thread; - Data_Get_Struct(self, notmuch_thread_t, thread); + Data_Get_Notmuch_Thread (self, thread); - return UINT2NUM(notmuch_thread_get_newest_date(thread)); + return UINT2NUM (notmuch_thread_get_newest_date (thread)); } /* @@ -177,16 +193,16 @@ notmuch_rb_thread_get_newest_date(VALUE self) * Get a Notmuch::Tags iterator for the tags of the thread */ VALUE -notmuch_rb_thread_get_tags(VALUE self) +notmuch_rb_thread_get_tags (VALUE self) { notmuch_thread_t *thread; notmuch_tags_t *tags; - Data_Get_Struct(self, notmuch_thread_t, thread); + Data_Get_Notmuch_Thread (self, thread); - tags = notmuch_thread_get_tags(thread); + tags = notmuch_thread_get_tags (thread); if (!tags) - rb_raise(notmuch_rb_eMemoryError, "Out of memory"); + rb_raise (notmuch_rb_eMemoryError, "Out of memory"); - return Data_Wrap_Struct(notmuch_rb_cTags, NULL, NULL, tags); + return notmuch_rb_tags_get (tags); }