[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[MIT-Scheme-devel] FFI and structs
From: |
Matt Birkholz |
Subject: |
[MIT-Scheme-devel] FFI and structs |
Date: |
Tue, 11 Dec 2012 15:10:39 -0700 |
> From: "Peter Feigl" <address@hidden>
> Date: Tue, 11 Dec 2012 21:40:26 +0100
>
> Hello!
>
> [...] As you mention in the manual, there's no support for struct
> parameters or return values. Is there any easy way to fix this?
> Unfortunately quite a lot of C APIs use structs as parameters or
> return values :(
Quick and dirty: use less_sad instead.
extern struct sad sad_func (struct sad s);
struct sad *
less_sad (int member1, char *member2)
{
struct sad i, o, *p;
p = malloc_or_signal (sizeof struct sad);
i.member1 = member1;
i.member2 = member2;
o = sad_func (i)
p->member1 = o.member1;
p->member2 = o.member2;
return (p);
}
No doubt an immodest extension could generate something like that. I
was happy to wait until I had actually encountered such a sad API.
Luckily, the Gtks are mostly less sad already.
Yes, I know this is the same solution I suggested last time (March
2011) when you were bumming you could not access `extern variables'.
extern struct sad global_sadness;
struct sad *
get_global_sadness (void)
{
struct sad *p = malloc_or_signal (sizeof struct sad);
*p = global_sadness;
return (p);
}
No happy happy?