From: Sam S. <sd...@gn...> - 2008-02-08 02:46:37
|
> * Christopher Browne <pooebjar@tznvy.pbz> [2008-02-07 23:35:30 +0000]: > > int SP_multigroup_multicast (mailbox mbox, service service_type, int num_groups, > const char groups[][MAX_GROUP_NAME], > int16 mess_type, > int mess_len, const char *mess); > > How do I push a C array of C strings into this API? > > ;int SP_receive (mailbox mbox, service *service_type, char > sender[MAX_GROUP_NAME], > ; int max_groups, int *num_groups, char > groups[][MAX_GROUP_NAME], > ; int16 *mess_type, int *endian_mismatch, int > max_mess_len, char *mess); > > (ffi:def-call-out spread-receive > (:name "SP_receive") > (:language :stdc) > (:arguments > (mailbox ffi:int) > (service-type (ffi:c-ptr ffi:int) :out) > (sender (ffi:c-ptr ffi:char) :out) > (max-groups ffi:int) > (num-groups (ffi:c-ptr ffi:int) :out) > (groups (ffi:c-ptr (ffi:c-ptr ffi:char)) :out) > (msg-type (ffi:c-ptr ffi:sint16) :out) > (endian-mismatch (ffi:c-ptr ffi:int) :out) > (max-msg-len ffi:int) > (message (ffi:c-ptr ffi:char) :out)) > (:return-type ffi:int)) > > SP_receive is somewhat blowing up; does the above encoding of FFI have > anything obviously wrong about it? I think you want http://clisp.cons.org/impnotes/dffi.html#c-array for char groups[][MAX_GROUP_NAME]: (def-c-const MAX_GROUP_NAME) (groups (ffi:c-array c-string MAX_GROUP_NAME) :out) or maybe (groups (ffi:c-array-max c-string MAX_GROUP_NAME) :out) -- Sam Steingold (http://sds.podval.org/) on Fedora release 8 (Werewolf) http://mideasttruth.com http://truepeace.org http://pmw.org.il http://camera.org http://palestinefacts.org http://honestreporting.com Hard work has a future payoff. Laziness pays off NOW. |