Simplify the (system foreign) API.
[bpt/guile.git] / module / system / foreign.scm
index 692dd92..9966c64 100644 (file)
             uint16 int16
             uint32 int32
             uint64 int64
-            %null-pointer
 
             sizeof alignof
 
-            foreign-ref foreign-set!
+            %null-pointer
+            null-pointer?
+            make-pointer
+            foreign-address
+
             foreign->bytevector bytevector->foreign
             foreign-set-finalizer!
             make-foreign-function
 (load-extension (string-append "libguile-" (effective-version))
                 "scm_init_foreign")
 
+\f
+;;;
+;;; Pointers.
+;;;
+
+(define (null-pointer? pointer)
+  (= (foreign-address pointer) 0))
+
+
+\f
+;;;
+;;; Structures.
+;;;
+
 (define *writers*
   `((,float . ,bytevector-ieee-single-native-set!)
     (,double . ,bytevector-ieee-double-native-set!)