From 17fc9efecbc9cb0c7e32664dbd0e2c863194cd7f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 26 Jul 2010 19:36:03 +0200 Subject: 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. --- libguile/foreign.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'libguile/foreign.c') diff --git a/libguile/foreign.c b/libguile/foreign.c index dc9367614..dd77a823c 100644 --- a/libguile/foreign.c +++ b/libguile/foreign.c @@ -162,6 +162,19 @@ SCM_DEFINE (scm_foreign_address, "foreign-address", 1, 0, 0, } #undef FUNC_NAME +SCM_DEFINE (scm_dereference_pointer, "dereference-pointer", 1, 0, 0, + (SCM foreign), + "Return the a foreign object representing the pointer " + "pointed to by @var{foreign}.") +#define FUNC_NAME s_scm_dereference_pointer +{ + SCM_VALIDATE_FOREIGN (1, foreign); + + return scm_take_foreign_pointer (* (void **) SCM_FOREIGN_POINTER (foreign), + NULL); +} +#undef FUNC_NAME + SCM_DEFINE (scm_foreign_to_bytevector, "foreign->bytevector", 2, 2, 0, (SCM foreign, SCM len, SCM offset, SCM uvec_type), "Return a bytevector aliasing the memory pointed to by\n" -- cgit v1.2.3