Subject: Re: Interfacing to C code
From: Erik Naggum <erik@naggum.no>
Date: 2000/05/05
Newsgroups: comp.lang.lisp
Message-ID: <3166512264635721@naggum.no>

* Jonathan <no@spam.com>
| Shouldn't it know from the definition that the C func wants the
| address and not the value?

  No.  Lisp function calls evaluate all arguments in order, then call
  the function with the values so evaluated.  However, most values are
  actually pointers to boxes -- integers are sort of a special case.
  Try passing a cons cell.  If you pre-allocate a structure to fill in
  with values, you don't need to affect the Lisp binding, but you need
  to know how Lisp stores its values.  This can be complicated.  If
  the values in that structure are only going to be used in the C
  world, you can allocate it there and return a magic value that the C
  world knows what means.  Should you need to access the values from
  the Lisp world, the FFI should be able to handle individual values
  automatically, while aggregates may need some extra work.
  
#:Erik