I'm not sure whether to classify this as a bug in HaskellDirect or a
limitation of the expressiveness of IDL. The problem arises when trying
to pass an array of strings (a la argv in main()) to an external
function. During the marshall, the outermost array of pointers gets
allocated, but the inner arrays of strings don't. Example:
module Init {
typedef [string] char * str;
void init([in] int argc, [in,size_is(argc)] str * argv);
};
This correctly defines an 'init' function with the following type:
init :: [String] -> IO ()
But, like I said, the inner arrays don't get allocated.
(HaskellDirect 0.13)
Michael Hobbs
P.S. If you're interested in seeing an example that *really* exposes the
limits of IDL, let me know; I've got a doozy.