Thanks for the bug report. I've checked in a fix for 1), but
for 2), I suggest instead of doing
void pj_set_finder( const char *(*)(const char *) );
you express this as
typedef [string]char* (*StringTrans) ([in,string]char* arg1);
void pj_set_finder([in]StringTrans arg);
as HDirect doesn't currently handle 'const' qualifiers as well as it
could.
--sigbjorn
- Original Message -
From: "Mike Thomas" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Cc: "Sigbjorn Finne" <[EMAIL PROTECTED]>
Sent: Wednesday, November 07, 2001 15:42
Subject: HDirect (CVS version) - some bugs
> Hi there.
>
> Attached is a small zip file containing some idl and header files which
are
> meant to define an interface to Frank Warmerdam's map projection library.
>
> The problems can be reproduced by unzipping, going to the top level
> directory and running "make". I am using Windows NT GHC 5.02 and CVS
> version of HDirect.
>
> 1. The C stub code ("Proj.c") generated for structures defined in the idl
> with lower-case leading characters has upper case leading characters eg:
> projXY in the IDL is converted to ProjXY. I have worked around this by
> including a header file ("nameconvert.h") with macros which change the
names
> back to those used in the library headers, but this is messy.
>
> 2. The Haskell code ("Proj.hs") contains some strange definitions to do
with
> a datatype "IHC_TAG_0", which causes the errors below when compiled. The
> datatype is associated with a function which takes another function as an
> argument:
>
> void pj_set_finder( const char *(*)(const char *) );
>
> Cheers
>
> Mike Thomas
>
> --- IHC_TAG_0 error messages
>
> ghc -c -package lang -package com -fglasgow-exts -fvia-C Proj.hs -o
> proj_hs.o
>
> Proj.hs:338:
> Couldn't match
> `PrelMaybe.Maybe (PrelBase.Char -> PrelIOBase.IO PrelBase.Char)'
> against
> `IHC_TAG_0'
> Expected type: PrelMaybe.Maybe
>(PrelBase.Char -> PrelIOBase.IO PrelBase.Char)
> Inferred type: IHC_TAG_0
> In the third argument of `HDirect.marshallref', namely `arg10'
> In a 'do' expression pattern binding:
> arg10 <- HDirect.marshallref (HDirect.allocBytes (PrelReal.toInt
> sizeofI
> HC_TAG_0))
> (HDirect.writeunique
> (HDirect.allocBytes (P
> relReal.toInt sizeofIHC_TAG_0))
> writeIHC_TAG_0)
> arg10
> make: *** [proj_hs.o] Error 1
>
___
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs