Basic constructor macro for designor-sub structures.
(make-designor-sub [:index <index>]
[:range? <range?>])
This is the usual way to construct designor-sub structures. It simply conses together a structure with the specified fields.
This macro generates a new designor-sub structure from scratch. See also change-designor-sub, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-designor-sub (&rest args) (std::make-aggregate 'designor-sub args '((:index) (:range?)) 'make-designor-sub nil))
Function:
(defun designor-sub (index range?) (declare (xargs :guard (and (const-exprp index) (const-expr-optionp range?)))) (declare (xargs :guard t)) (b* ((index (mbe :logic (const-expr-fix index) :exec index)) (range? (mbe :logic (const-expr-option-fix range?) :exec range?))) (cons :sub (cons index range?))))