unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* FFI questions
@ 2020-05-15 13:47 Jan Synacek
  2020-05-15 20:09 ` Taylan Kammer
  0 siblings, 1 reply; 5+ messages in thread
From: Jan Synacek @ 2020-05-15 13:47 UTC (permalink / raw)
  To: guile-user

Hello,

Currently I have something like this:

(define libxcb (dynamic-link "libxcb"))

...

(define c-change-window-attributes
  (pointer->procedure void
     (dynamic-func "xcb_change_window_attributes" libxcb)
     (list '* uint32 uint32 '*)))

(define (change-window-attributes conn win mask vals)
   (c-change-window-attributes conn win mask (bytevector->pointer vals)))

The last argument to xcb_change_window_attributes is 'const void *' and I
need to pass a u32 vector to it. As it is right now, it segfaults when I
try passing #u32(something) to 'change-window-attributes'. Is it possible
to make it accept a u32 vector using just Scheme or do I have to work
around it on the C level?


My second question is about FFI and structs. Is it possible to access C
struct members from Scheme by name? If not, how do I generally approach the
problem? I've checked how guile-xcb does it and it seems to be building
hash tables with field names as keys. But that basically requires me to
"redefine" all the C structs that I would be interested in at the Scheme
level.

Regards,
-- 
Jan Synacek
Software Engineer, Red Hat


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-05-17 10:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-15 13:47 FFI questions Jan Synacek
2020-05-15 20:09 ` Taylan Kammer
2020-05-15 23:52   ` Matt Wette
2020-05-15 23:59     ` Matt Wette
2020-05-17 10:06   ` Jan Synacek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).