mit-scheme-devel
[Top][All Lists]
Advanced

[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?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]