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