--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_sdbm.h>
+
+module Bindings.APR.SDBM where
+#strict_import
+import Bindings.APR
+import Bindings.APR.ErrNo
+import Bindings.APR.File.Info
+import Bindings.APR.Pools
+
+#opaque_t apr_sdbm_t
+
+#starttype apr_sdbm_datum_t
+# field dptr , Ptr CChar
+# field dsize, CInt
+#stoptype
+
+#globalarray APR_SDBM_DIRFEXT, CChar
+#globalarray APR_SDBM_PAGFEXT, CChar
+
+#num APR_SDBM_INSERT
+#num APR_SDBM_REPLACE
+#num APR_SDBM_INSERTDUP
+
+#ccall apr_sdbm_open , Ptr (Ptr <apr_sdbm_t>) -> Ptr CChar -> <apr_int32_t> -> <apr_fileperms_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_sdbm_close , Ptr <apr_sdbm_t> -> IO <apr_status_t>
+#ccall apr_sdbm_lock , Ptr <apr_sdbm_t> -> CInt -> IO <apr_status_t>
+#ccall apr_sdbm_unlock , Ptr <apr_sdbm_t> -> IO <apr_status_t>
+#cinline apr_sdbm_fetch , Ptr <apr_sdbm_t> -> Ptr <apr_sdbm_datum_t> -> Ptr <apr_sdbm_datum_t> -> IO <apr_status_t>
+#cinline apr_sdbm_store , Ptr <apr_sdbm_t> -> Ptr <apr_sdbm_datum_t> -> Ptr <apr_sdbm_datum_t> -> CInt -> IO <apr_status_t>
+#cinline apr_sdbm_delete , Ptr <apr_sdbm_t> -> Ptr <apr_sdbm_datum_t> -> IO <apr_status_t>
+#ccall apr_sdbm_firstkey, Ptr <apr_sdbm_t> -> Ptr <apr_sdbm_datum_t> -> IO <apr_status_t>
+#ccall apr_sdbm_nextkey , Ptr <apr_sdbm_t> -> Ptr <apr_sdbm_datum_t> -> IO <apr_status_t>
+#ccall apr_sdbm_rdonly , Ptr <apr_sdbm_t> -> IO CInt
--- /dev/null
+#include <bindings.cmacros.h>
+#include <apr_sdbm.h>
+
+BC_GLOBALARRAY(APR_SDBM_DIRFEXT, char)
+BC_GLOBALARRAY(APR_SDBM_PAGFEXT, char)
+
+apr_status_t inline_apr_sdbm_fetch(apr_sdbm_t* db,
+ apr_sdbm_datum_t* value,
+ apr_sdbm_datum_t* key) {
+ return apr_sdbm_fetch(db, value, *key);
+}
+
+apr_status_t inline_apr_sdbm_store(apr_sdbm_t* db,
+ apr_sdbm_datum_t* key,
+ apr_sdbm_datum_t* value,
+ int opt) {
+ return apr_sdbm_store(db, *key, *value, opt);
+}
+
+apr_status_t inline_apr_sdbm_delete(apr_sdbm_t* db,
+ const apr_sdbm_datum_t* key) {
+ return apr_sdbm_delete(db, *key);
+}