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