summaryrefslogtreecommitdiff
path: root/libguile/foreign.c
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2011-01-30 22:47:35 +0100
committerLudovic Courtès <ludo@gnu.org>2011-01-30 23:29:30 +0100
commit6e0975603eb4e568def1a91f9b127a6a35bdbe44 (patch)
tree812e89fcf384ab9e76889d59dede9f02fe595c57 /libguile/foreign.c
parent690a0112e55823aa8b862daeddcf44cea97e7917 (diff)
downloadguile-6e0975603eb4e568def1a91f9b127a6a35bdbe44.tar.gz
Add `pointer?'.
* libguile/foreign.c (scm_pointer_p): New function. * libguile/foreign.h (scm_pointer_p): New declaration. * module/system/foreign.scm: Export `pointer?'. * test-suite/tests/foreign.test ("null pointer")["pointer?"]: New test. ("make-pointer")["pointer?"]: New test. * doc/ref/api-foreign.texi (Foreign Variables): Document `pointer?'.
Diffstat (limited to 'libguile/foreign.c')
-rw-r--r--libguile/foreign.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libguile/foreign.c b/libguile/foreign.c
index 2402ad1f6..52da23f6e 100644
--- a/libguile/foreign.c
+++ b/libguile/foreign.c
@@ -100,6 +100,16 @@ pointer_finalizer_trampoline (GC_PTR ptr, GC_PTR data)
finalizer (SCM_POINTER_VALUE (PTR2SCM (ptr)));
}
+SCM_DEFINE (scm_pointer_p, "pointer?", 1, 0, 0,
+ (SCM obj),
+ "Return @code{#t} if @var{obj} is a pointer object, "
+ "@code{#f} otherwise.\n")
+#define FUNC_NAME s_scm_pointer_p
+{
+ return scm_from_bool (SCM_POINTER_P (obj));
+}
+#undef FUNC_NAME
+
SCM_DEFINE (scm_make_pointer, "make-pointer", 1, 1, 0,
(SCM address, SCM finalizer),
"Return a foreign pointer object pointing to @var{address}. "