Basic constructor macro for uinteger-format structures.
(make-uinteger-format [:bits <bits>] [:traps <traps>])
This is the usual way to construct uinteger-format structures. It simply conses together a structure with the specified fields.
This macro generates a new uinteger-format structure from scratch. See also change-uinteger-format, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-uinteger-format (&rest args) (std::make-aggregate 'uinteger-format args '((:bits) (:traps)) 'make-uinteger-format nil))
Function:
(defun uinteger-format (bits traps) (declare (xargs :guard (uinteger-bit-role-listp bits))) (declare (xargs :guard (uinteger-bit-roles-wfp bits))) (let ((__function__ 'uinteger-format)) (declare (ignorable __function__)) (b* ((bits (mbe :logic (uinteger-bit-role-list-fix bits) :exec bits))) (let ((bits (mbe :logic (if (uinteger-bit-roles-wfp bits) bits (list (uinteger-bit-role-value 0))) :exec bits))) (list (cons 'bits bits) (cons 'traps traps))))))