From 2446a59744df465374df040705ff6bf633534538 Mon Sep 17 00:00:00 2001 From: Dmitry Shubin Date: Mon, 28 Jun 2010 03:50:06 +0400 Subject: [PATCH] gdbm: move enums to main vocab --- extra/gdbm/ffi/ffi.factor | 29 ++--------------------------- extra/gdbm/gdbm-tests.factor | 2 +- extra/gdbm/gdbm.factor | 35 +++++++++++++++++++++++++++++++---- 3 files changed, 34 insertions(+), 32 deletions(-) diff --git a/extra/gdbm/ffi/ffi.factor b/extra/gdbm/ffi/ffi.factor index 307f749cb4..f2c866769e 100644 --- a/extra/gdbm/ffi/ffi.factor +++ b/extra/gdbm/ffi/ffi.factor @@ -14,8 +14,6 @@ LIBRARY: libgdbm C-GLOBAL: c-string gdbm_version -ENUM: gdbm-role reader writer wrcreat newdb ; - CONSTANT: GDBM_SYNC HEX: 20 CONSTANT: GDBM_NOLOCK HEX: 40 @@ -46,29 +44,6 @@ FUNCTION: int gdbm_exists ( GDBM_FILE dbf, datum key ) ; FUNCTION: int gdbm_setopt ( GDBM_FILE dbf, int option, int* value, int size ) ; FUNCTION: int gdbm_fdesc ( GDBM_FILE dbf ) ; -ENUM: gdbm-error - gdbm-no-error - gdbm-malloc-error - gdbm-block-size-error - gdbm-file-open-error - gdbm-file-write-error - gdbm-file-seek-error - gdbm-file-read-error - gdbm-bad-magic-number - gdbm-empty-database - gdbm-cant-be-reader - gdbm-cant-be-writer - gdbm-reader-cant-delete - gdbm-reader-cant-store - gdbm-reader-cant-reorganize - gdbm-unknown-update - gdbm-item-not-found - gdbm-reorganize-failed - gdbm-cannot-replace - gdbm-illegal-data - gdbm-option-already-set - gdbm-illegal-option ; +C-GLOBAL: int gdbm_errno -C-GLOBAL: gdbm-error gdbm_errno - -FUNCTION: c-string gdbm_strerror ( gdbm-error errno ) ; +FUNCTION: c-string gdbm_strerror ( int errno ) ; diff --git a/extra/gdbm/gdbm-tests.factor b/extra/gdbm/gdbm-tests.factor index b720dfc0f7..9d233c8949 100644 --- a/extra/gdbm/gdbm-tests.factor +++ b/extra/gdbm/gdbm-tests.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2010 Dmitry Shubin. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors arrays continuations gdbm gdbm.ffi io.directories +USING: accessors arrays continuations gdbm io.directories io.files.temp kernel sequences sets tools.test ; IN: gdbm.tests diff --git a/extra/gdbm/gdbm.factor b/extra/gdbm/gdbm.factor index 6223a6b79e..54980cb309 100644 --- a/extra/gdbm/gdbm.factor +++ b/extra/gdbm/gdbm.factor @@ -1,10 +1,13 @@ ! Copyright (C) 2010 Dmitry Shubin. ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.c-types alien.data alien.destructors -alien.enums classes.struct combinators destructors gdbm.ffi io.backend -kernel libc locals math namespaces sequences serialize strings ; +alien.enums alien.syntax classes.struct combinators destructors +gdbm.ffi io.backend kernel libc locals math namespaces sequences +serialize strings ; IN: gdbm +ENUM: gdbm-role reader writer wrcreat newdb ; + TUPLE: gdbm { name string } { block-size integer } @@ -15,10 +18,33 @@ TUPLE: gdbm : ( -- gdbm ) gdbm new ; +ENUM: gdbm-error + gdbm-no-error + gdbm-malloc-error + gdbm-block-size-error + gdbm-file-open-error + gdbm-file-write-error + gdbm-file-seek-error + gdbm-file-read-error + gdbm-bad-magic-number + gdbm-empty-database + gdbm-cant-be-reader + gdbm-cant-be-writer + gdbm-reader-cant-delete + gdbm-reader-cant-store + gdbm-reader-cant-reorganize + gdbm-unknown-update + gdbm-item-not-found + gdbm-reorganize-failed + gdbm-cannot-replace + gdbm-illegal-data + gdbm-option-already-set + gdbm-illegal-option ; + enum throw ; : check-error ( ret -- ) 0 = [ gdbm-throw ] unless ; @@ -69,7 +95,8 @@ PRIVATE> : gdbm-info ( -- str ) gdbm_version ; -: gdbm-error-message ( error -- msg ) gdbm_strerror ; +: gdbm-error-message ( error -- msg ) + enum>number gdbm_strerror ; : replace ( key content -- ) GDBM_REPLACE gdbm-store ; : insert ( key content -- ) GDBM_INSERT gdbm-store ;