Basic constructor macro for chase-position structures.
(make-chase-position [:path <path>] [:phase <phase>] [:rsh <rsh>] [:mask <mask>])
This is the usual way to construct chase-position structures. It simply conses together a structure with the specified fields.
This macro generates a new chase-position structure from scratch. See also change-chase-position, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-chase-position (&rest args) (std::make-aggregate 'chase-position args '((:path) (:phase) (:rsh) (:mask)) 'make-chase-position nil))
Function:
(defun chase-position (path phase rsh mask) (declare (xargs :guard (and (path-p path) (integerp phase) (natp rsh) (4vmask-p mask)))) (declare (xargs :guard t)) (let ((__function__ 'chase-position)) (declare (ignorable __function__)) (b* ((path (mbe :logic (path-fix path) :exec path)) (phase (mbe :logic (ifix phase) :exec phase)) (rsh (mbe :logic (nfix rsh) :exec rsh)) (mask (mbe :logic (4vmask-fix mask) :exec mask))) (list (cons 'path path) (cons 'phase phase) (cons 'rsh rsh) (cons 'mask mask)))))