Question re. Call-by-value for foreign structs

Luís Oliveira luismbo at gmail.com
Fri Dec 7 17:11:10 UTC 2018


Have a look at
https://common-lisp.net/project/cffi/manual/html_node/Foreign-Structure-Types.html,
in particular:

"By default, convert-from-foreign
<https://common-lisp.net/project/cffi/manual/html_node/convert_002dfrom_002dforeign.html#convert_002dfrom_002dforeign>
(and also mem-ref
<https://common-lisp.net/project/cffi/manual/html_node/mem_002dref.html#mem_002dref>)
will make a plist with slot names as keys, and convert-to-foreign
<https://common-lisp.net/project/cffi/manual/html_node/convert_002dto_002dforeign.html#convert_002dto_002dforeign>
will translate such a plist to a foreign structure."

By default, you'd invoke my-log like this: (my-log (list :str "Foo" :count
4)). That section should give you pointers on how to do something both more
convenient and efficient, in case it matters.

HTH,
Luís

On Fri, Dec 7, 2018 at 2:12 PM paul tarvydas <paultarvydas at gmail.com> wrote:

> Using CFFI, do I need to specify translation methods when performing
> call-by-value to C?
>
> I am assuming (possibly incorrectly?) that cffi:defcstruct will create the
> translations for a C struct for me, then pass that struct by value to a Go
> foreign routine.
>
> Specifically, I am trying to call routines in Go from Lisp using a Lisp
> string.
>
> A Go string is a C struct { pointer-to-string , integer-length-of-string }
>
> Simple test code is in
> https://github.com/guitarvydas/lisp-go/blob/master/string-example/lisp-client.lisp
> .
>
> (see function "my-log", run "make" which should build and run the example,
> causing a NO-APPLICABLE-METHOD-ERROR).
>
> thanks
> pt
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cffi-devel/attachments/20181207/8fa1cfa4/attachment.html>


More information about the cffi-devel mailing list