#50
authorFedor Yudanov <fedwiz@academ.org>
Fri, 22 Mar 2013 06:00:45 +0000 (13:00 +0700)
committerFedor Yudanov <fedwiz@academ.org>
Fri, 22 Mar 2013 06:00:45 +0000 (13:00 +0700)
rubejdb/Makefile
rubejdb/src/rubejdb.c

index 218e1eb..304184e 100644 (file)
@@ -3,6 +3,7 @@ all: doc build
 
 build:
        ruby extconf.rb
+       make -C ./build
 
 build-dbg:
 
index d4e696d..c0e2360 100644 (file)
@@ -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