Along these lines, I also am a little foggy on unions. This: http://docs.racket-lang.org/foreign/C_Union_Types.html
says, "Unions are always treated like structs." But I have no idea what that phrase means. I don't get the impression that unions have tags like structs can have. Or can they? Maybe any pointer can be tagged? For example: (define _wl_argument (_union _int32 _uint32 _wl_fixed _string/utf-8 (_cpointer/null 'wl_object) _uint32 _wl_array-pointer _int32)) Now suppose I need to pass an array of _wl_argument. Does it even make sense to use a tag in the _cpointer? (define _wl_argument-pointer (_cpointer 'wl_argument)) (define-wl-client wl_proxy_marshal_array_constructor (_fun #:save-errno 'posix _wl_proxy-pointer _uint32 _wl_argument-pointer _wl_interface-pointer -> _wl_proxy-pointer/null )) So as I said, I'm just a little foggy on some of the concepts, but I do think the FFI is very nice. Maybe I'm just trying to use stronger typing than actually exists in the ffi. I've started reading Eli Barzilay/Dmitry Orlovsky "Foreign Interface for PLT Scheme". -- Anthony Carrico
signature.asc
Description: OpenPGP digital signature
____________________ Racket Users list: http://lists.racket-lang.org/users