From 4720a1aad3a728e1d4558b33a324e86107b8c90b Mon Sep 17 00:00:00 2001 From: Dmitry Shubin Date: Sun, 27 Jun 2010 01:29:47 +0400 Subject: [PATCH] gdbm: more user-friendly initial configuration --- extra/gdbm/ffi/ffi.factor | 6 ++---- extra/gdbm/gdbm.factor | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/extra/gdbm/ffi/ffi.factor b/extra/gdbm/ffi/ffi.factor index a6abc86e54..307f749cb4 100644 --- a/extra/gdbm/ffi/ffi.factor +++ b/extra/gdbm/ffi/ffi.factor @@ -14,10 +14,8 @@ LIBRARY: libgdbm C-GLOBAL: c-string gdbm_version -CONSTANT: GDBM_READER 0 -CONSTANT: GDBM_WRITER 1 -CONSTANT: GDBM_WRCREAT 2 -CONSTANT: GDBM_NEWDB 3 +ENUM: gdbm-role reader writer wrcreat newdb ; + CONSTANT: GDBM_SYNC HEX: 20 CONSTANT: GDBM_NOLOCK HEX: 40 diff --git a/extra/gdbm/gdbm.factor b/extra/gdbm/gdbm.factor index 6145211e4b..4c035b4faa 100644 --- a/extra/gdbm/gdbm.factor +++ b/extra/gdbm/gdbm.factor @@ -1,15 +1,17 @@ ! Copyright (C) 2010 Dmitry Shubin. ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.c-types alien.data alien.destructors -classes.struct combinators destructors gdbm.ffi io.backend kernel libc -literals locals math namespaces sequences serialize strings ; +alien.enums classes.struct combinators destructors gdbm.ffi io.backend +kernel libc locals math namespaces sequences serialize strings ; IN: gdbm TUPLE: gdbm - { name string } + { name string } { block-size integer } - { flags integer initial: $ GDBM_WRCREAT } - { mode integer initial: OCT: 644 } ; + { role initial: wrcreat } + { sync boolean } + { nolock boolean } + { mode integer initial: OCT: 644 } ; > enum>number ] + [ sync>> GDBM_SYNC 0 ? ] + [ nolock>> GDBM_NOLOCK 0 ? ] + tri bitor bitor ; + : gdbm-open ( gdbm -- dbf ) { [ name>> normalize-path ] - [ block-size>> ] [ flags>> ] [ mode>> ] + [ block-size>> ] [ get-flag ] [ mode>> ] } cleave f gdbm_open [ gdbm-throw ] unless* ; DESTRUCTOR: gdbm-close