[MLton] bool and MLton FFI

Wesley W. Terpstra wesley@terpstra.ca
Fri, 23 Jun 2006 16:58:36 +0200


On Jun 23, 2006, at 4:33 PM, skaller wrote:
> On Fri, 2006-06-23 at 14:27 +0200, Wesley W. Terpstra wrote:
>> I disagree here. We should start encouraging users to use _import
>> like this:
>> 	_import "foo" : C_Int.t * C_Long.t * Int32.t-> C_Bool.t
>> for the function:
>> 	extern bool foo(int x, long y, int32_t z);
>> Otherwise their code won't be portable.
>
> This is naive. No realistic libraries provide functions like that.

That is untrue. Lots do. Especially small-scale user libraries which  
are exactly the situation where you want to use the FFI directly.

> Real library API's look like:
> 	GLint GLgetStatus(GLint);

There is some typedef for GLint; obviously, that's what you would use.
ie: map 'typedef int GLint' to 'type GLint = C_Int.int'

> 	#if _WIN32
> 	#type GLint = int
> 	#endif

I'm going to assume by the above you mean something like:
	#ifdef X
	typedef int GLint;
	#else
	typedef long GLint;
	#endif

In this case, use the mlnlffigen. We aren't responsible for parsing C  
header files in the FFI.