From: Fedor Yudanov Date: Fri, 22 Mar 2013 06:00:45 +0000 (+0700) Subject: #50 X-Git-Tag: v1.2.12~296^2~56 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cc30a088109b1b328745eed7075ee49e733a05bc;p=platform%2Fupstream%2Fejdb.git #50 --- diff --git a/rubejdb/Makefile b/rubejdb/Makefile index 218e1eb..304184e 100644 --- a/rubejdb/Makefile +++ b/rubejdb/Makefile @@ -3,6 +3,7 @@ all: doc build build: ruby extconf.rb + make -C ./build build-dbg: diff --git a/rubejdb/src/rubejdb.c b/rubejdb/src/rubejdb.c index d4e696d..c0e2360 100644 --- a/rubejdb/src/rubejdb.c +++ b/rubejdb/src/rubejdb.c @@ -27,41 +27,32 @@ EJDB* getEJDB(VALUE self) { return rejdb->ejdb; } - -Init_rubejdb() { - VALUE ejdbClass = rb_define_class("EJDB", rb_cObject); - rb_define_alloc_func(ejdbClass, EJDB_alloc); - rb_define_private_method(ejdbClass, "initialize", RUBY_METHOD_FUNC(EJDB_init), 0); - rb_define_method(ejdbClass, "open", EJDB_open, 2); - rb_define_method(ejdbClass, "is_open", EJDB_is_open, 2); +void EJDB_free(RUBEJDB* rejdb) { + if (!rejdb->ejdb) { + ejdbdel(rejdb->ejdb); + } + ruby_xfree(rejdb); } VALUE EJDB_alloc(VALUE klass) { return Data_Wrap_Struct(klass, NULL, EJDB_free, ruby_xmalloc(sizeof(RUBEJDB))); } -VALUE EJDB_alloc(VALUE klass) { +VALUE EJDB_init(VALUE self) { RUBEJDB* rejdb; Data_Get_Struct(self, RUBEJDB, rejdb); rejdb->ejdb = ejdbnew(); if (!rejdb->ejdb) { - rb_raise("Failed to init ejdb!"); + rb_raise(rb_eRuntimeError, "Failed to init ejdb!"); } } -void EJDB_free(RUBEJDB* rejdb) { - if (!rejdb->ejdb) { - ejdbdel(rejdb->ejdb); - } - ruby_xfree(rejdb); -} - VALUE EJDB_open(VALUE self, VALUE path, VALUE mode) { Check_Type(path, T_STRING); - Check_Type(mode, T_STRING); + Check_Type(mode, T_FIXNUM); EJDB* ejdb = getEJDB(self); - if (!ejdbopen(ejdb, StringValuePtr(path), StringValuePtr(mode))) { + if (!ejdbopen(ejdb, StringValuePtr(path), FIX2INT(mode))) { return set_ejdb_error(ejdb); } return Qnil; @@ -70,4 +61,13 @@ VALUE EJDB_open(VALUE self, VALUE path, VALUE mode) { VALUE EJDB_is_open(VALUE self) { EJDB* ejdb = getEJDB(self); return ejdb && ejdbisopen(ejdb) ? Qtrue : Qfalse; +} + + +Init_rubejdb() { + VALUE ejdbClass = rb_define_class("EJDB", rb_cObject); + rb_define_alloc_func(ejdbClass, EJDB_alloc); + rb_define_private_method(ejdbClass, "initialize", RUBY_METHOD_FUNC(EJDB_init), 0); + rb_define_method(ejdbClass, "open", RUBY_METHOD_FUNC(EJDB_open), 2); + rb_define_method(ejdbClass, "is_open", RUBY_METHOD_FUNC(EJDB_is_open), 0); } \ No newline at end of file