[C2hs] help a newbie?

Manuel M T Chakravarty chak at cse.unsw.edu.au
Thu Feb 22 23:04:02 EST 2007


Duncan Coutts:
> On Tue, 2007-02-20 at 20:40 -0500, Eric Sessoms wrote:
> > I'm working on a problem that looks, to my eye, identical to the
> > example in section 2.10 of the documentation
> > http://www.cse.unsw.edu.au/~chak/haskell/c2hs/docu/c2hs-2.html#ss2.10
> > 
> > --- cut here ---
> > module Test where
> > 
> > #c
> > typedef struct {
> >   int dummy;
> > } fitsfile;
> > 
> > int ffclos(fitsfile *fptr, int *status);
> > #endc
> > 
> > {# pointer *fitsfile as FitsFile newtype #}
> > 
> > {# fun ffclos { `FitsFile', `Int' } -> `Int' #}
> > --- cut here --
> > 
> > But running c2hs I get an error message that I haven't been able to make use of:
> > 
> > Test.chs:13: (column 17) [ERROR]
> >   >>> Missing "in" marshaller!
> >   There is no default marshaller for this combination of Haskell and C type:
> >   Haskell type: FitsFile
> >   C type      : (FitsFile)
> 
> I'm not sure if c2hs is supposed to work out the default marshaler
> automatically, you'd have to ask Manuel, but it does work if you specify
> the marshaler explicitly:
> 
> {# fun ffclos { withFitsFile `FitsFile', `Int' } -> `Int' #}

You have to specify the marshaller explicitly.  It would be nice to get
default marshallers for types defined by pointer hooks, but that's
currently not implemented.

Manuel




More information about the C2hs mailing list