Basic constructor macro for vl-namedb structures.
(make-vl-namedb [:names <names>] [:pmap <pmap>] [:pset <pset>])
This is the usual way to construct vl-namedb structures. It simply conses together a structure with the specified fields.
This macro generates a new vl-namedb structure from scratch. See also change-vl-namedb, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-vl-namedb (&rest args) (std::make-aggregate 'vl-namedb args '((:names) (:pmap) (:pset)) 'make-vl-namedb nil))
Function:
(defun vl-namedb (names pmap pset) (declare (xargs :guard (and (vl-namedb-nameset-p names) (vl-namedb-prefixmap-p pmap) (vl-namedb-nameset-p pset)))) (declare (xargs :guard (and (vl-namedb-pmap-okp names pmap) (vl-namedb-pset-okp pmap pset)))) (let ((__function__ 'vl-namedb)) (declare (ignorable __function__)) (b* ((names (mbe :logic (vl-namedb-nameset-fix names) :exec names)) (pmap (mbe :logic (vl-namedb-prefixmap-fix pmap) :exec pmap)) (pset (mbe :logic (vl-namedb-nameset-fix pset) :exec pset))) (let ((pmap (mbe :logic (vl-namedb-pmap-fix names pmap) :exec pmap)) (pset (mbe :logic (vl-namedb-pset-fix names pmap pset) :exec pset))) (cons :vl-namedb (std::prod-cons names (std::prod-cons pmap pset)))))))