[C2hs] help a newbie?

Manuel M T Chakravarty chak at cse.unsw.edu.au
Sun Feb 25 20:07:28 EST 2007


Eric Sessoms:
> Followup: is there any way to specify a default marshaller?  For
> example, is there a way to specify in one place "always use
> withFitsFile* to marshal a FitsFile" (or similar)?

That would be useful, but like with default marshallers for pointer
hooks, it is not currently implemented.

Manuel

> On 2/22/07, Duncan Coutts <duncan.coutts at worc.ox.ac.uk> wrote:
> > 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' #}
> >
> > Duncan
> >
> >
> 
> 



More information about the C2hs mailing list