[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] C unions and structs, how to access them ?

From: Pupeno
Subject: [Chicken-users] C unions and structs, how to access them ?
Date: Sun, 30 Oct 2005 17:11:47 -0300
User-agent: KMail/1.8.3

In the FFIs I am making I am encountering the need to access the members of 
unions and structs. Untill now all I did was manage them as pointers and 
apply functions to them, but that is changing, for example, I have this 

XNextEvent(display, event_return)
      Display *display;
      XEvent *event_return;

to which I pass the display I made and an XEvent that will be over-writtend, 
that is, on event_return I'll have the real return of the function.
I started by making an XEvent type[3]:

(define-foreign-type x-event c-pointer)

which is in fact an union of structs, but I am, untill now, handling it as 

So, when I try to wrap XNextEvent I end up with two procedures:

(define x-next-event-raw
   (foreign-lambda void "XNextEvent" display x-event))

(define (x-next-event d)
   (let ((e (foreign-value "malloc(sizeof(XEvent))" c-pointer)))
      (x-next-event-raw d e)

Is that the right way to do it ? If not, how should I do it ?

Now, the real question: How do I access XEvent's members and XEvent's members' 
members ?

Thank you.
Pupeno <address@hidden> (

[1] I know there's an xlib egg, but it doesn't have a clear license, all it 
says is "All rights reserved" and I don't like that.

Attachment: pgpF9S60gHCMw.pgp
Description: PGP signature

reply via email to

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