/* 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, ¬much_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));
}
/*
* 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;
}
* 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 Data_Wrap_Notmuch_Object (notmuch_rb_cFileNames, ¬much_rb_filenames_type, fnames);
}
/*
* 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 Data_Wrap_Notmuch_Object (notmuch_rb_cFileNames, ¬much_rb_filenames_type, fnames);
}