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