C2hs and c 'struct' declarations

Hello c2hs! I'm having an issue when using get and set hooks. Take the following example c code: typedef struct { int x; int y; } point; This has easy bindings: {#pointer *point as Point#} getX :: Point -> IO CInt getX = {#get point->x#} setX :: Point -> CInt -> IO () setX p i = {#set point->x} p i But what if the header file doesn't typedef? struct point { int x; int y; }; It seems c2hs can't bind to these data structures, the straight forward way of replacing 'point' with 'struct point' isn't parsed. Any combination of parens or quotes to make it parse as a single token haven't worked - also I see nothing in the tutorial. Any advice? Thomas

I spoke too soon! The answer, as you probably already know, is a #c directive:
#c
typedef struct point point_t;
#endc
Thanks for the tool!
Thomas
On Sun, Sep 20, 2009 at 4:39 PM, Thomas DuBuisson
Hello c2hs!
I'm having an issue when using get and set hooks. Take the following example c code:
typedef struct { int x; int y; } point;
This has easy bindings:
{#pointer *point as Point#}
getX :: Point -> IO CInt getX = {#get point->x#}
setX :: Point -> CInt -> IO () setX p i = {#set point->x} p i
But what if the header file doesn't typedef?
struct point { int x; int y; };
It seems c2hs can't bind to these data structures, the straight forward way of replacing 'point' with 'struct point' isn't parsed. Any combination of parens or quotes to make it parse as a single token haven't worked - also I see nothing in the tutorial. Any advice?
Thomas
participants (2)
-
Duncan Coutts
-
Thomas DuBuisson