anchor.diff:      (destructuring-bind (name &key (base-type :int) define-constants)
           (ensure-list name)
         (c-section-header out "cenum" name)
  -      (format out "  CFFI_DEFCENUM_START(~S, ~S, ~S);~%"
  +      (format out "  CFFI_DEFCENUM_START(~S, ~S, ~A);~%"
                 (string name) (prin1-to-string base-type)
  -              (or documentation 'null))
  +              (docstring-to-c documentation))
         (dolist (enum enum-list)
           (destructuring-bind (lisp-name c-name &key documentation)
               enum
             (check-type lisp-name keyword)
  -          (format out "  CFFI_DEFCENUM_MEMBER(~S, ~A, ~S);~%"
  +          (format out "  CFFI_DEFCENUM_MEMBER(~S, ~A, ~A);~%"
                     (prin1-to-string lisp-name) c-name
  -                  (or documentation 'null))))
  +                  (docstring-to-c documentation))))
         (format out "  CFFI_DEFCENUM_END;~%")
         (when define-constants
           (define-constants-from-enum out enum-list)))))
  
positive.code: (define-grovel-syntax cstruct (struct-lisp-name struct-c-name &rest slots)
    (let ((documentation (when (stringp (car slots)) (pop slots))))
      (c-section-header out "cstruct" struct-lisp-name)
      (format out "  CFFI_DEFCSTRUCT_START(~S, ~A, ~S);~%"
              (string struct-lisp-name) struct-c-name
              (or documentation 'null))
      (dolist (slot slots)
        (destructuring-bind (slot-lisp-name slot-c-name &key type (count 1))
            slot
  
negative.code:     (destructuring-bind (name &key (base-type :int) define-constants)
          (ensure-list name)
        (c-section-header out "constantenum" name)
        (format out "  CFFI_DEFCENUM_START(~S, ~S, ~A);~%"
                (string name) (prin1-to-string base-type)
                (docstring-to-c documentation))
        (dolist (enum enum-list)
          (destructuring-bind (lisp-name c-name &key documentation optional)
              enum
            (check-type lisp-name keyword)
            (when optional
              (format out "#if defined(~A)~%" c-name))
            (format out "  CFFI_DEFCENUM_MEMBER(~S, ~A, ~A);~%"
                    (prin1-to-string lisp-name) c-name
                    (docstring-to-c documentation))
            (when optional
              (format out "#endif~%"))))
        (format out "  CFFI_DEFCENUM_END;~%")
  