]> gitweb.factorcode.org Git - factor.git/blob - extra/gdbm/ffi/ffi.factor
gdbm: more user-friendly initial configuration
[factor.git] / extra / gdbm / ffi / ffi.factor
1 ! Copyright (C) 2010 Dmitry Shubin.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.libraries alien.syntax classes.struct
4 combinators system ;
5 IN: gdbm.ffi
6
7 << "libgdbm" os {
8     { [ unix?   ] [ "libgdbm.so"    ] }
9     { [ winnt?  ] [ "gdbm.dll"      ] }
10     { [ macosx? ] [ "libgdbm.dylib" ] }
11 } cond cdecl add-library >>
12
13 LIBRARY: libgdbm
14
15 C-GLOBAL: c-string gdbm_version
16
17 ENUM: gdbm-role reader writer wrcreat newdb ;
18
19 CONSTANT: GDBM_SYNC   HEX: 20
20 CONSTANT: GDBM_NOLOCK HEX: 40
21
22 CONSTANT: GDBM_INSERT  0
23 CONSTANT: GDBM_REPLACE 1
24
25 CONSTANT: GDBM_CACHESIZE    1
26 CONSTANT: GDBM_SYNCMODE     3
27 CONSTANT: GDBM_CENTFREE     4
28 CONSTANT: GDBM_COALESCEBLKS 5
29
30 STRUCT: datum { dptr char* } { dsize int } ;
31
32 C-TYPE: _GDBM_FILE
33 TYPEDEF: _GDBM_FILE* GDBM_FILE
34
35 CALLBACK: void fatal_func_cb ;
36 FUNCTION: GDBM_FILE gdbm_open ( c-string name, int block_size, int read_write, int mode, fatal_func_cb fatal_func ) ;
37 FUNCTION-ALIAS: gdbm-close void gdbm_close ( GDBM_FILE dbf ) ;
38 FUNCTION: int gdbm_store ( GDBM_FILE dbf, datum key, datum content, int flag ) ;
39 FUNCTION: datum gdbm_fetch ( GDBM_FILE dbf, datum key ) ;
40 FUNCTION: int gdbm_delete ( GDBM_FILE dbf, datum key ) ;
41 FUNCTION: datum gdbm_firstkey ( GDBM_FILE dbf ) ;
42 FUNCTION: datum gdbm_nextkey ( GDBM_FILE dbf, datum key ) ;
43 FUNCTION: int gdbm_reorganize ( GDBM_FILE dbf ) ;
44 FUNCTION: void gdbm_sync ( GDBM_FILE dbf ) ;
45 FUNCTION: int gdbm_exists ( GDBM_FILE dbf, datum key ) ;
46 FUNCTION: int gdbm_setopt ( GDBM_FILE dbf, int option, int* value, int size ) ;
47 FUNCTION: int gdbm_fdesc ( GDBM_FILE dbf ) ;
48
49 ENUM: gdbm-error
50     gdbm-no-error
51     gdbm-malloc-error
52     gdbm-block-size-error
53     gdbm-file-open-error
54     gdbm-file-write-error
55     gdbm-file-seek-error
56     gdbm-file-read-error
57     gdbm-bad-magic-number
58     gdbm-empty-database
59     gdbm-cant-be-reader
60     gdbm-cant-be-writer
61     gdbm-reader-cant-delete
62     gdbm-reader-cant-store
63     gdbm-reader-cant-reorganize
64     gdbm-unknown-update
65     gdbm-item-not-found
66     gdbm-reorganize-failed
67     gdbm-cannot-replace
68     gdbm-illegal-data
69     gdbm-option-already-set
70     gdbm-illegal-option ;
71
72 C-GLOBAL: gdbm-error gdbm_errno
73
74 FUNCTION: c-string gdbm_strerror ( gdbm-error errno ) ;