Basic constructor macro for vl-funtemplate structures.
(make-vl-funtemplate [:name <name>] [:inputs <inputs>] [:locals <locals>] [:out <out>] [:assigns <assigns>])
This is the usual way to construct vl-funtemplate structures. It simply conses together a structure with the specified fields.
This macro generates a new vl-funtemplate structure from scratch. See also change-vl-funtemplate, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-vl-funtemplate (&rest args) (std::make-aggregate 'vl-funtemplate args '((:name) (:inputs) (:locals) (:out) (:assigns)) 'make-vl-funtemplate nil))
Function:
(defun vl-funtemplate (name inputs locals out assigns) (declare (xargs :guard (and (stringp name) (vl-vardecllist-p inputs) (vl-vardecllist-p locals) (vl-vardecl-p out) (vl-assignlist-p assigns)))) (declare (xargs :guard t)) (let ((__function__ 'vl-funtemplate)) (declare (ignorable __function__)) (b* ((name (mbe :logic (str-fix name) :exec name)) (inputs (mbe :logic (vl-vardecllist-fix inputs) :exec inputs)) (locals (mbe :logic (vl-vardecllist-fix locals) :exec locals)) (out (mbe :logic (vl-vardecl-fix out) :exec out)) (assigns (mbe :logic (vl-assignlist-fix assigns) :exec assigns))) (cons :vl-funtemplate (std::prod-cons (std::prod-cons name inputs) (std::prod-cons locals (std::prod-cons out assigns)))))))