Add `procedure->pointer' to the FFI.
authorLudovic Courtès <ludo@gnu.org>
Fri, 3 Sep 2010 13:12:54 +0000 (15:12 +0200)
committerLudovic Courtès <ludo@gnu.org>
Fri, 3 Sep 2010 13:26:37 +0000 (15:26 +0200)
commit33186356668fe7697a8f2692660aaff69178d720
treeec54e0b939ee5abccd30b9e1a1c76970e921dbf4
parenta148c752ba7adf0d2005cc7bc5928a2dde467609
Add `procedure->pointer' to the FFI.

* libguile/foreign.c (make_cif): New procedure, with code formerly in
  `scm_make_foreign_function'.
  (scm_make_foreign_function): Use it.
  (invoke_closure, scm_procedure_to_pointer)[FFI_CLOSURES]: New
  functions.

* libguile/foreign.h (scm_procedure_to_pointer): New declaration.

* module/system/foreign.scm: Export `procedure->pointer' when available.

* test-suite/standalone/test-ffi (f-callback-1, f-callback-2): New
  procedures and related tests.

* test-suite/standalone/test-ffi-lib.c (test_ffi_callback_1,
  test_ffi_callback_2): New functions.

* test-suite/tests/foreign.test ("procedure->pointer"): New test prefix.

* doc/ref/api-foreign.texi (Dynamic FFI): Document `procedure->pointer'.
doc/ref/api-foreign.texi
libguile/foreign.c
libguile/foreign.h
module/system/foreign.scm
test-suite/standalone/test-ffi
test-suite/standalone/test-ffi-lib.c
test-suite/tests/foreign.test