[MLton] FFI types
Henry Cejtin
henry.cejtin@sbcglobal.net
Thu, 12 May 2005 23:24:48 -0500
Ah, you are quite right, I completely missed the fact that C code could
return an array by either having one passed in or by calling _export'd
routines to make one.
Re options and NULL, I agree that you want to use ML code to test if an
xxx option is NONE or SOME. My notion was to have a function in
MLton.Pointer of type
string option -> t
which consist of the code
fn NONE => null
| SOME str => ?cast-string-to-t? str
where ?cast-string-to-t? is something that give you a MLton.Pointer.t
pointing to the first character of its string argument (and similarly for
refs, arrays and vectors).
Using this, _export would expand any string option arguments to some glue
expression which called the above function on them and the actual _export
would use MLton.Pointer.t. This way it would all be invisible to the user
and would handle the convention of NULL being NONE and non-NULL being SOME.
For results, you would do the same thing in reverse.
My impression, definitely not from a real understanding of the code, is that
this would be rather easy and not a large change. Am I missing something?