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