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