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