The FFI spec says (at http://www.cse.unsw.edu.au/~chak/haskell/ffi/ffi/ffise3.html#x6-120003.2)
:
The argument types at[i] produced by fatype must be marshallable
foreign types; that is, each ati is either (1) a basic foreign type or
(2) a type synonym or renamed datatype of a marshallable foreign type.
Moreover, the result type rt produced by frtype must be a marshallable
foreign result type; that is, it is either a marshallable foreign
type, the type (), or a type matching Prelude.IO t, where t is a
marshallable foreign type or ().
Earlier it defines the basic foreign types:
The following types constitute the set of basic foreign types:
* Char, Int, Double, Float, and Bool as exported by the Haskell
98 Prelude as well as
* Int8, Int16, Int32, Int64, Word8, Word16, Word32, Word64, Ptr
a, FunPtr a, and StablePtr a, for any type a, as exported by Foreign
(Section 5.1).
So, that list of types, or any type synonym.
-Ross
On Feb 10, 2009, at 3:56 PM, Maurí cio wrote:
Yes, I can. Thanks. Just forget my idea, with
this I can provide all those types in a library.
I'm confused. When is it possible to use a type
as a parameter to a foreign function call? My
first guess was that I had to provide an instance
for class Storable, but after I tried writing
a complex-like type that way GHC told me my type
was unaceptable. So I thought only types allowed
by the compiler (including forall a. Ptr a) could
be used that way.
What is the rule? I've read all of FFI report
and found nothing. Did I miss something? How can
I make a type of mine acceptable? Why are
Data.Int acceptable, and how could I know that?
Thanks,
Maurício
I think you can use Data.Word and Data.Int types for this, that is.
(...)
After reading an ISO draft for standard C, I found
a few types that could be usefull when binding to
libraries (these are from <stdint.h>):
int8_t, uint8_t, int16_t, uint16_t, int32_t,
uint32_t, int64_t, uint64_t
(...)
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe