On 13/set/2005, at 04:29, Rayiner Hashem wrote:
A while ago, somebody pointed out that structures with array members don't compile properly on Verrazano. In looking at the issue, I realized that arrays are something of a special case in C-FFI, as they are morally type-specifiers in defcstruct declarations, but do not have underlying types. Therefore, I propose a new C-FFI declaration:
(defcarray <foreign-type-name> <base-type> <length>)
I have implemented something like this in uffi-compat. I think it'd be much cleaner to simply have an array type:
(:array type &rest dims)
Then you could do (defctype my-int-array (:array :int 5 12)) or something like that.
An explicit nil for the <length> argument would be equivalent to: (define-foreign-type int-array () ':pointer)
Hmm, is this really necessary?
Anyway, this is certainly doable, and pretty easy too. Most of what's necessary to do this is already in uffi-compat. I'll look into this when refactoring the type system. I really need to resort my TODO list, *sigh* :-)