JT wrote:
i'm trying to create a binding for berkeley db dll and quickly ran into some 
problems, how do i translate statement below.

int DB->open(DB *db, DB_TXN *txnid, const char *file,
    const char *database, DBTYPE type, u_int32_t flags, int mode);

my normal approach would be,

extern (C) {
        int function(DB* db, DB_TXN* txnid, char* file, char* database, DBTYPE 
type, u_int32_t flags, int mode) DB->open;
}

but real problem is 'DB->open', can anoybody suggest a workaround for this. DB 
is just a simple struct (struct DB;)

The function name is not 'DB->open'. That's something used in the comments. Nearly all functions in Berkeley DB are declared as function pointers used as struct fields. So what you'll want is something like this:

extern(C):

struct DB
{
int function(DB* db, DB_TXN* txnid, char* file, char* database, DBTYPE type, u_int32_t flags, int mode) open;
}

Along with all of the rest of the DB function pointers and the numerous inner structs declared in the C headers.

Reply via email to