anchor.diff:  	(prog1
   	    (funcall form field fn gn)
   	  (incf gn)))))
  +
  +(defun structure-slot-form (field name fn)
  +  "A form for getting or setting the foreign slot value."
  +  (if (field-count field nil)		; aggregate slot
  +      `(object
  +	(cffi:foreign-slot-value object ',name ',(first field))
  +	,(second field) ,fn)
  +      ;; simple slot
  +      `(cffi:foreign-slot-value object ',name ',(first field))))
   
   (defmacro defcstruct (name-and-options &body fields)
     "A macro to define the struct to CFFI and to libffi simultaneously.
  
positive.code: 		    fields
  		    (lambda (field fn gn)
  		      (declare (ignore gn))
  		      (list
  		       `(object
  			 (cffi:foreign-slot-value object ',name ',(first field))
  			 ,(second field) ,fn))))))
  	     (get ',name 'setf-foreign-object-components)
  	     (lambda (value object &optional (index 0))
  	       (declare (ignore index))
  
negative.code:   "This structure has been defined for call-by-value."
    (member name *libffi-struct-defs*))
  
  (defun field-count (field &optional (default 1))
    (getf field :count default))
  
  (defun name-from-name-and-options (name-and-options)
    (if (listp name-and-options)
  