anchor.diff:          (c-export out reader-name))
         (c-write out defclass-form)
         (c-write out make-defun-form))))
  -
  -;;; FIXME: document this function and its usage above properly.
  -(defun make-from-pointer-function-name (type-name)
  -  (symbolicate '#:make- type-name '#:-from-pointer))
   
   (define-grovel-syntax cstruct (struct-lisp-name struct-c-name &rest slots)
     (let ((documentation (when (stringp (car slots)) (pop slots))))
  
positive.code:         (c-format out ")")))
      (c-format out ")~%")))
  
  (define-grovel-syntax cstruct-and-class-item (&rest arguments)
    (process-grovel-form out (cons 'cstruct arguments))
    (destructuring-bind (struct-lisp-name struct-c-name &rest slots)
  
negative.code:            (make-function-name
              (make-from-pointer-function-name struct-lisp-name))
             (make-defun-form
              ;; this function is then used as a constructor for this class.
              `(defun ,make-function-name (pointer)
                 (cffi:with-foreign-slots
                     (,slot-names pointer ,struct-lisp-name)
  