From: Austin Clements Date: Sun, 25 Nov 2012 04:57:07 +0000 (-0500) Subject: ruby: Add bindings for notmuch_thread_get_messages X-Git-Tag: 0.16_rc1~202 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=c4f96d09312532d378c51b2a0e0128108fba4a2c;p=notmuch.git ruby: Add bindings for notmuch_thread_get_messages --- diff --git a/bindings/ruby/defs.h b/bindings/ruby/defs.h index fe81b3f9..5b44585a 100644 --- a/bindings/ruby/defs.h +++ b/bindings/ruby/defs.h @@ -261,6 +261,9 @@ notmuch_rb_thread_get_total_messages (VALUE self); VALUE notmuch_rb_thread_get_toplevel_messages (VALUE self); +VALUE +notmuch_rb_thread_get_messages (VALUE self); + VALUE notmuch_rb_thread_get_matched_messages (VALUE self); diff --git a/bindings/ruby/init.c b/bindings/ruby/init.c index f4931d34..663271d4 100644 --- a/bindings/ruby/init.c +++ b/bindings/ruby/init.c @@ -306,6 +306,7 @@ Init_notmuch (void) rb_define_method (notmuch_rb_cThread, "thread_id", notmuch_rb_thread_get_thread_id, 0); /* in thread.c */ rb_define_method (notmuch_rb_cThread, "total_messages", notmuch_rb_thread_get_total_messages, 0); /* in thread.c */ rb_define_method (notmuch_rb_cThread, "toplevel_messages", notmuch_rb_thread_get_toplevel_messages, 0); /* in thread.c */ + rb_define_method (notmuch_rb_cThread, "messages", notmuch_rb_thread_get_messages, 0); /* in thread.c */ rb_define_method (notmuch_rb_cThread, "matched_messages", notmuch_rb_thread_get_matched_messages, 0); /* in thread.c */ rb_define_method (notmuch_rb_cThread, "authors", notmuch_rb_thread_get_authors, 0); /* in thread.c */ rb_define_method (notmuch_rb_cThread, "subject", notmuch_rb_thread_get_subject, 0); /* in thread.c */ diff --git a/bindings/ruby/thread.c b/bindings/ruby/thread.c index efe5aaf7..56616d9f 100644 --- a/bindings/ruby/thread.c +++ b/bindings/ruby/thread.c @@ -91,6 +91,26 @@ notmuch_rb_thread_get_toplevel_messages (VALUE self) return Data_Wrap_Struct (notmuch_rb_cMessages, NULL, NULL, 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_Notmuch_Thread (self, thread); + + messages = notmuch_thread_get_messages (thread); + if (!messages) + rb_raise (notmuch_rb_eMemoryError, "Out of memory"); + + return Data_Wrap_Struct (notmuch_rb_cMessages, NULL, NULL, messages); +} + /* * call-seq: THREAD.matched_messages => fixnum *