]> git.notmuchmail.org Git - notmuch/blobdiff - bindings/ruby/directory.c
emacs: Add new option notmuch-search-hide-excluded
[notmuch] / bindings / ruby / directory.c
index 46fe11cf570699f3a0e3fe33310c4336254be4e7..f267d82f16976ee7fec41779c11d332ab7ac35ad 100644 (file)
@@ -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
  * 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 <alip@exherbo.org>
  */
 
 #include "defs.h"
 
+/*
+ * call-seq: DIR.destroy! => nil
+ *
+ * Destroys the directory, freeing all resources allocated for it.
+ */
+VALUE
+notmuch_rb_directory_destroy (VALUE self)
+{
+    notmuch_rb_object_destroy (self, &notmuch_rb_directory_type);
+
+    return Qnil;
+}
+
 /*
  * call-seq: DIR.mtime => fixnum
  *
  * stored.
  */
 VALUE
-notmuch_rb_directory_get_mtime(VALUE self)
+notmuch_rb_directory_get_mtime (VALUE self)
 {
-    notmuch_rb_directory_t *dir;
+    notmuch_directory_t *dir;
 
-    Data_Get_Struct(self, notmuch_rb_directory_t, dir);
+    Data_Get_Notmuch_Directory (self, dir);
 
-    return UINT2NUM(notmuch_directory_get_mtime(dir->nm_dir));
+    return UINT2NUM (notmuch_directory_get_mtime (dir));
 }
 
 /*
@@ -42,18 +55,19 @@ notmuch_rb_directory_get_mtime(VALUE self)
  * Store an mtime within the database for the directory object.
  */
 VALUE
-notmuch_rb_directory_set_mtime(VALUE self, VALUE mtimev)
+notmuch_rb_directory_set_mtime (VALUE self, VALUE mtimev)
 {
     notmuch_status_t ret;
-    notmuch_rb_directory_t *dir;
+    notmuch_directory_t *dir;
+
+    Data_Get_Notmuch_Directory (self, dir);
 
-    Data_Get_Struct(self, notmuch_rb_directory_t, dir);
+    if (!FIXNUM_P (mtimev))
+       rb_raise (rb_eTypeError, "First argument not a fixnum");
 
-    if (!FIXNUM_P(mtimev))
-        rb_raise(rb_eTypeError, "First argument not a fixnum");
+    ret = notmuch_directory_set_mtime (dir, FIX2UINT (mtimev));
+    notmuch_rb_status_raise (ret);
 
-    ret = notmuch_directory_set_mtime(dir->nm_dir, FIX2UINT(mtimev));
-    notmuch_rb_status_raise(ret);
     return Qtrue;
 }
 
@@ -64,20 +78,16 @@ notmuch_rb_directory_set_mtime(VALUE self, VALUE mtimev)
  * filenames of messages in the database within the given directory.
  */
 VALUE
-notmuch_rb_directory_get_child_files(VALUE self)
+notmuch_rb_directory_get_child_files (VALUE self)
 {
-    notmuch_rb_directory_t *dir;
-    notmuch_rb_filenames_t *flist;
-    VALUE flistv;
+    notmuch_directory_t *dir;
+    notmuch_filenames_t *fnames;
 
-    Data_Get_Struct(self, notmuch_rb_directory_t, dir);
+    Data_Get_Notmuch_Directory (self, dir);
 
-    flistv = Data_Make_Struct(notmuch_rb_cFileNames, notmuch_rb_filenames_t,
-            notmuch_rb_filenames_mark, notmuch_rb_filenames_free, flist);
-    flist->dir = self;
-    flist->nm_flist = notmuch_directory_get_child_files(dir->nm_dir);
+    fnames = notmuch_directory_get_child_files (dir);
 
-    return flistv;
+    return notmuch_rb_filenames_get (fnames);
 }
 
 /*
@@ -87,18 +97,14 @@ notmuch_rb_directory_get_child_files(VALUE self)
  * directories in the database within the given directory.
  */
 VALUE
-notmuch_rb_directory_get_child_directories(VALUE self)
+notmuch_rb_directory_get_child_directories (VALUE self)
 {
-    notmuch_rb_directory_t *dir;
-    notmuch_rb_filenames_t *flist;
-    VALUE flistv;
+    notmuch_directory_t *dir;
+    notmuch_filenames_t *fnames;
 
-    Data_Get_Struct(self, notmuch_rb_directory_t, dir);
+    Data_Get_Notmuch_Directory (self, dir);
 
-    flistv = Data_Make_Struct(notmuch_rb_cFileNames, notmuch_rb_filenames_t,
-            notmuch_rb_filenames_mark, notmuch_rb_filenames_free, flist);
-    flist->dir = self;
-    flist->nm_flist = notmuch_directory_get_child_directories(dir->nm_dir);
+    fnames = notmuch_directory_get_child_directories (dir);
 
-    return flistv;
+    return notmuch_rb_filenames_get (fnames);
 }