Basic constructor macro for decl-decl structures.
(make-decl-decl [:extension <extension>] [:specs <specs>] [:init <init>] [:attrib <attrib>])
This is the usual way to construct decl-decl structures. It simply conses together a structure with the specified fields.
This macro generates a new decl-decl structure from scratch. See also change-decl-decl, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-decl-decl (&rest args) (std::make-aggregate 'decl-decl args '((:extension) (:specs) (:init) (:attrib)) 'make-decl-decl nil))
Function:
(defun decl-decl (extension specs init attrib) (declare (xargs :guard (and (booleanp extension) (declspec-listp specs) (initdeclor-listp init) (attrib-spec-listp attrib)))) (declare (xargs :guard t)) (let ((__function__ 'decl-decl)) (declare (ignorable __function__)) (b* ((extension (mbe :logic (bool-fix extension) :exec extension)) (specs (mbe :logic (declspec-list-fix specs) :exec specs)) (init (mbe :logic (initdeclor-list-fix init) :exec init)) (attrib (mbe :logic (attrib-spec-list-fix attrib) :exec attrib))) (cons :decl (list extension specs init attrib)))))