Basic constructor macro for vl-blockstmt structures.
(make-vl-blockstmt [:sequentialp <sequentialp>] [:name <name>] [:imports <imports>] [:paramdecls <paramdecls>] [:vardecls <vardecls>] [:loaditems <loaditems>] [:stmts <stmts>] [:atts <atts>])
This is the usual way to construct vl-blockstmt structures. It simply conses together a structure with the specified fields.
This macro generates a new vl-blockstmt structure from scratch. See also change-vl-blockstmt, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-vl-blockstmt (&rest args) (std::make-aggregate 'vl-blockstmt args '((:sequentialp) (:name) (:imports) (:paramdecls) (:vardecls) (:loaditems) (:stmts) (:atts)) 'make-vl-blockstmt nil))
Function:
(defun vl-blockstmt (sequentialp name imports paramdecls vardecls loaditems stmts atts) (declare (xargs :guard (and (booleanp sequentialp) (maybe-stringp name) (vl-importlist-p imports) (vl-paramdecllist-p paramdecls) (vl-vardecllist-p vardecls) (vl-blockitemlist-p loaditems) (vl-stmtlist-p stmts) (vl-atts-p atts)))) (declare (xargs :guard t)) (let ((__function__ 'vl-blockstmt)) (declare (ignorable __function__)) (b* ((sequentialp (mbe :logic (acl2::bool-fix sequentialp) :exec sequentialp)) (name (mbe :logic (maybe-string-fix name) :exec name)) (imports (mbe :logic (vl-importlist-fix imports) :exec imports)) (paramdecls (mbe :logic (vl-paramdecllist-fix paramdecls) :exec paramdecls)) (vardecls (mbe :logic (vl-vardecllist-fix vardecls) :exec vardecls)) (loaditems (mbe :logic (vl-blockitemlist-fix loaditems) :exec loaditems)) (stmts (mbe :logic (vl-stmtlist-fix stmts) :exec stmts)) (atts (mbe :logic (vl-atts-fix atts) :exec atts))) (cons :vl-blockstmt (std::prod-cons (std::prod-cons (std::prod-cons sequentialp name) (std::prod-cons imports paramdecls)) (std::prod-cons (std::prod-cons vardecls loaditems) (std::prod-cons stmts atts)))))))