[Haskell-cafe] c2hs seems to ignore the types I give it when
generating foreign import declarations
Manuel M T Chakravarty
chak at cse.unsw.edu.au
Sun Dec 11 20:17:18 EST 2005
Cale Gibbard:
> On 11/12/05, Manuel M T Chakravarty <chak at cse.unsw.edu.au> wrote:
> > You need to tell c2hs to what Haskell type a C pointer type maps before
> > it can generate the right signature for the import declaration. This is
> > done using a pointer hook:
> >
> > http://www.cse.unsw.edu.au/~chak/haskell/c2hs/docu/c2hs-3.html#ss3.10
> >
> > In your case, you would usually do
> >
> > {#pointer *Display as Display newtype#}
> >
> > However, when you use this form, c2hs will generate the newtype
> > declaration for you that you import from `Graphics.X11.Xlib.Types' (and
> > you would have to cast between your version of `Display' and that of
> > `Xlib').
>
> I wanted to use the existing types so as to have compatibility with
> any other libraries which might use them. It would be a shame if every
> Haskell binding to an X library had different, incompatible versions
> of the X types, and thus they couldn't be used together.
The darcs version of c2hs
darcs get --partial http://www.cse.unsw.edu.au/~chak/repos/c2hs/
now permits the use of a `nocode' keyword at the end of a pointer hook.
This suppresses the generation of the type declaration, so you can do
{#pointer *Display as Display newtype nocode#}
to get what you want.
Let me know if there are any problems.
Manuel
More information about the Haskell-Cafe
mailing list