mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 01:14:53 +01:00
ruby: db: reorganize initializer
In order to make it more extensible. No functional changes. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
This commit is contained in:
parent
239fdbbbf0
commit
95a4bf3817
3 changed files with 32 additions and 26 deletions
|
@ -58,37 +58,49 @@ notmuch_rb_database_initialize (int argc, VALUE *argv, VALUE self)
|
|||
notmuch_database_t *database;
|
||||
notmuch_status_t ret;
|
||||
|
||||
path = NULL;
|
||||
create = 0;
|
||||
mode = NOTMUCH_DATABASE_MODE_READ_ONLY;
|
||||
|
||||
/* Check arguments */
|
||||
rb_scan_args (argc, argv, "02", &pathv, &hashv);
|
||||
|
||||
if (!NIL_P (pathv)) {
|
||||
SafeStringValue (pathv);
|
||||
path = RSTRING_PTR (pathv);
|
||||
} else {
|
||||
path = NULL;
|
||||
}
|
||||
|
||||
if (!NIL_P (hashv)) {
|
||||
Check_Type (hashv, T_HASH);
|
||||
create = RTEST (rb_hash_aref (hashv, ID2SYM (ID_db_create)));
|
||||
modev = rb_hash_aref (hashv, ID2SYM (ID_db_mode));
|
||||
if (NIL_P (modev))
|
||||
mode = NOTMUCH_DATABASE_MODE_READ_ONLY;
|
||||
else if (!FIXNUM_P (modev))
|
||||
rb_raise (rb_eTypeError, ":mode isn't a Fixnum");
|
||||
else {
|
||||
mode = FIX2INT (modev);
|
||||
switch (mode) {
|
||||
case NOTMUCH_DATABASE_MODE_READ_ONLY:
|
||||
case NOTMUCH_DATABASE_MODE_READ_WRITE:
|
||||
break;
|
||||
default:
|
||||
rb_raise ( rb_eTypeError, "Invalid mode");
|
||||
VALUE rmode, rcreate;
|
||||
VALUE kwargs[2];
|
||||
static ID keyword_ids[2];
|
||||
|
||||
if (!keyword_ids[0]) {
|
||||
keyword_ids[0] = rb_intern_const ("mode");
|
||||
keyword_ids[1] = rb_intern_const ("create");
|
||||
}
|
||||
|
||||
rb_get_kwargs (hashv, keyword_ids, 0, 2, kwargs);
|
||||
|
||||
rmode = kwargs[0];
|
||||
rcreate = kwargs[1];
|
||||
|
||||
if (rmode != Qundef) {
|
||||
if (!FIXNUM_P (rmode))
|
||||
rb_raise (rb_eTypeError, ":mode isn't a Fixnum");
|
||||
else {
|
||||
mode = FIX2INT (rmode);
|
||||
switch (mode) {
|
||||
case NOTMUCH_DATABASE_MODE_READ_ONLY:
|
||||
case NOTMUCH_DATABASE_MODE_READ_WRITE:
|
||||
break;
|
||||
default:
|
||||
rb_raise ( rb_eTypeError, "Invalid mode");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
create = 0;
|
||||
mode = NOTMUCH_DATABASE_MODE_READ_ONLY;
|
||||
if (rcreate != Qundef)
|
||||
create = RTEST (rcreate);
|
||||
}
|
||||
|
||||
rb_check_typeddata (self, ¬much_rb_database_type);
|
||||
|
|
|
@ -47,8 +47,6 @@ extern VALUE notmuch_rb_eUnbalancedFreezeThawError;
|
|||
extern VALUE notmuch_rb_eUnbalancedAtomicError;
|
||||
|
||||
extern ID ID_call;
|
||||
extern ID ID_db_create;
|
||||
extern ID ID_db_mode;
|
||||
|
||||
/* RSTRING_PTR() is new in ruby-1.9 */
|
||||
#if !defined(RSTRING_PTR)
|
||||
|
|
|
@ -41,8 +41,6 @@ VALUE notmuch_rb_eUnbalancedFreezeThawError;
|
|||
VALUE notmuch_rb_eUnbalancedAtomicError;
|
||||
|
||||
ID ID_call;
|
||||
ID ID_db_create;
|
||||
ID ID_db_mode;
|
||||
|
||||
const rb_data_type_t notmuch_rb_object_type = {
|
||||
.wrap_struct_name = "notmuch_object",
|
||||
|
@ -95,8 +93,6 @@ Init_notmuch (void)
|
|||
VALUE mod;
|
||||
|
||||
ID_call = rb_intern ("call");
|
||||
ID_db_create = rb_intern ("create");
|
||||
ID_db_mode = rb_intern ("mode");
|
||||
|
||||
mod = rb_define_module ("Notmuch");
|
||||
|
||||
|
|
Loading…
Reference in a new issue