- (with-gensyms (col tname ttype tttl tdata tdefsubp i)
- `(progn
- (dolist (,i ',types)
- (setf (get ,i 'zone-parse) ',func))
- (defun ,func (,name ,data ,ttl ,col ,zname ,defsubp)
- (declare (ignorable ,zname ,defsubp))
- (flet ((,list (&key ((:name ,tname) ,name)
- ((:type ,ttype) ,type)
- ((:data ,tdata) ,data)
- ((:ttl ,tttl) ,ttl)
- ((:defsubp ,tdefsubp) nil))
- (collect (make-zone-record :name ,tname
- :type ,ttype
- :data ,tdata
- :ttl ,tttl
- :defsubp ,tdefsubp)
- ,col)))
- ,@body))
- ',type))))
+ (with-parsed-body (body decls doc) body
+ (with-gensyms (col tname ttype tttl tdata tdefsubp i)
+ `(progn
+ (dolist (,i ',types)
+ (setf (get ,i 'zone-parse) ',func))
+ (defun ,func (,name ,data ,ttl ,col ,zname ,defsubp)
+ ,@doc
+ ,@decls
+ (declare (ignorable ,zname ,defsubp))
+ (flet ((,list (&key ((:name ,tname) ,name)
+ ((:type ,ttype) ,type)
+ ((:data ,tdata) ,data)
+ ((:ttl ,tttl) ,ttl)
+ ((:defsubp ,tdefsubp) nil))
+ (collect (make-zone-record :name ,tname
+ :type ,ttype
+ :data ,tdata
+ :ttl ,tttl
+ :defsubp ,tdefsubp)
+ ,col)))
+ ,@body))
+ ',type)))))