diff options
author | Ludovic Courtès <ludo@gnu.org> | 2011-01-30 22:47:35 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2011-01-30 23:29:30 +0100 |
commit | 6e0975603eb4e568def1a91f9b127a6a35bdbe44 (patch) | |
tree | 812e89fcf384ab9e76889d59dede9f02fe595c57 /libguile/foreign.c | |
parent | 690a0112e55823aa8b862daeddcf44cea97e7917 (diff) | |
download | guile-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.c | 10 |
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}. " |