]> gitweb.factorcode.org Git - factor.git/commitdiff
gdbm: better option setters
authorDmitry Shubin <dmitry.sh@gmail.com>
Sat, 26 Jun 2010 19:00:00 +0000 (23:00 +0400)
committerDmitry Shubin <dmitry.sh@gmail.com>
Sat, 26 Jun 2010 21:28:58 +0000 (01:28 +0400)
extra/gdbm/gdbm.factor

index bc3ac33d8b94ff1b8a79c0b5922382339feb1527..6145211e4b310df741fabcb51bd480bdba43527a 100644 (file)
@@ -44,13 +44,16 @@ DESTRUCTOR: gdbm-close
         gdbm_store check-error
     ] with-destructors ;
 
-:: (gdbm-setopt) ( option value -- )
+:: (setopt) ( value option -- )
     [
         int heap-size dup malloc &free :> ( size ptr )
         value ptr 0 int set-alien-value
         dbf option ptr size gdbm_setopt check-error
     ] with-destructors ;
 
+: setopt ( value option -- )
+    [ GDBM_CACHESIZE = [ >c-bool ] unless ] keep (setopt) ;
+
 PRIVATE>
 
 
@@ -86,8 +89,10 @@ ALIAS: gdbm-error-message gdbm_strerror
     [ dbf swap object>datum gdbm_exists c-bool> ]
     with-destructors ;
 
-: gdbm-setopt ( option value -- )
-    over GDBM_CACHESIZE = [ >c-bool ] unless (gdbm-setopt) ;
+: gdbm-set-cache-size ( size -- ) GDBM_CACHESIZE setopt ;
+: gdbm-set-sync-mode ( ? -- ) GDBM_SYNCMODE setopt ;
+: gdbm-set-block-pool ( ? -- ) GDBM_CENTFREE setopt ;
+: gdbm-set-block-merging ( ? -- ) GDBM_COALESCEBLKS setopt ;
 
 : gdbm-fdesc ( -- desc ) dbf gdbm_fdesc ;