1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-24 04:15:36 +02:00

Add dereference-pointer' to (system foreign)'.

* libguile/foreign.c (scm_dereference_pointer): New function.

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

* module/system/foreign.scm (dereference-pointer): Likewise.

* test-suite/tests/foreign.test
  ("foreign<->bytevector")["dereference-pointer"]: New test.
This commit is contained in:
Ludovic Courtès 2010-07-26 19:36:03 +02:00
parent d4149a510e
commit 17fc9efecb
4 changed files with 25 additions and 0 deletions

View file

@ -63,6 +63,16 @@
(= (foreign-address
(make-pointer (bytevector-uint-ref bv 0 (native-endianness)
(sizeof '*))))
(fold-right (lambda (byte address)
(+ byte (* 256 address)))
0
bytes))))
(pass-if "dereference-pointer"
(let* ((bytes (iota (sizeof '*)))
(bv (u8-list->bytevector bytes)))
(= (foreign-address
(dereference-pointer (bytevector->foreign bv)))
(fold-right (lambda (byte address)
(+ byte (* 256 address)))
0