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