Basic constructor macro for vl-blockscope structures.
(make-vl-blockscope [:imports <imports>] [:paramdecls <paramdecls>] [:vardecls <vardecls>] [:typedefs <typedefs>] [:scopetype <scopetype>] [: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) (:typedefs) (:scopetype) (:name)) 'make-vl-blockscope nil))
Function:
(defun vl-blockscope (imports paramdecls vardecls typedefs scopetype name) (declare (xargs :guard (and (vl-importlist-p imports) (vl-paramdecllist-p paramdecls) (vl-vardecllist-p vardecls) (vl-typedeflist-p typedefs) (vl-scopetype-p scopetype) (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)) (typedefs (mbe :logic (vl-typedeflist-fix typedefs) :exec typedefs)) (scopetype (mbe :logic (vl-scopetype-fix scopetype) :exec scopetype)) (name (mbe :logic (maybe-string-fix name) :exec name))) (cons :vl-blockscope (std::prod-cons (std::prod-cons imports (std::prod-cons paramdecls vardecls)) (std::prod-cons typedefs (std::prod-cons scopetype name)))))))