anchor.diff:      (:unsigned-long    'unsigned-long)
       (:float            'single-float)
       (:double           'double-float)
  -    (:pointer          '(* t))
  +    (:pointer          'system-area-pointer)
       (:void             'void)))
   
   (defun %foreign-type-size (type-keyword)
  
positive.code:               (progn ,@body)
             (foreign-free ,var)))))
  
  ;;;# Dereferencing
  
  (defun %mem-ref (ptr type &optional (offset 0))
  
negative.code: 
  ;;;# Basic Pointer Operations
  
  (declaim (inline pointerp))
  (defun pointerp (ptr)
    "Return true if PTR is a foreign pointer."
    (sys:system-area-pointer-p ptr))
  
  (declaim (inline null-ptr))
  (defun null-ptr ()
    "Construct and return a null pointer."
    (sys:int-sap 0))
  
  (declaim (inline null-ptr-p))
  (defun null-ptr-p (ptr)
    "Return true if PTR is a null pointer."
    (zerop (sys:sap-int ptr)))
  
  (defmacro with-foreign-ptr ((var size &optional size-var) &body body)
    "Bind VAR to SIZE bytes of foreign memory during BODY.  The
  