Basic constructor macro for mach-o-header structures.
(make-mach-o-header [:magic <magic>] [:cputype <cputype>] [:cpusubtype <cpusubtype>] [:filetype <filetype>] [:ncmds <ncmds>] [:sizeofcmds <sizeofcmds>] [:flags <flags>] [:reserved <reserved>])
This is the usual way to construct mach-o-header structures. It simply conses together a structure with the specified fields.
This macro generates a new mach-o-header structure from scratch. See also change-mach-o-header, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-mach-o-header (&rest args) (std::make-aggregate 'mach-o-header args '((:magic . 0) (:cputype . 0) (:cpusubtype . 0) (:filetype . 0) (:ncmds . 0) (:sizeofcmds . 0) (:flags . 0) (:reserved quote nil)) 'make-mach-o-header nil))
Function:
(defun mach-o-header (magic cputype cpusubtype filetype ncmds sizeofcmds flags reserved) (declare (xargs :guard (and (natp magic) (natp cputype) (natp cpusubtype) (natp filetype) (natp ncmds) (natp sizeofcmds) (natp flags) (acl2::maybe-natp reserved)))) (declare (xargs :guard t)) (let ((__function__ 'mach-o-header)) (declare (ignorable __function__)) (b* ((magic (mbe :logic (nfix magic) :exec magic)) (cputype (mbe :logic (nfix cputype) :exec cputype)) (cpusubtype (mbe :logic (nfix cpusubtype) :exec cpusubtype)) (filetype (mbe :logic (nfix filetype) :exec filetype)) (ncmds (mbe :logic (nfix ncmds) :exec ncmds)) (sizeofcmds (mbe :logic (nfix sizeofcmds) :exec sizeofcmds)) (flags (mbe :logic (nfix flags) :exec flags)) (reserved (mbe :logic (acl2::maybe-natp-fix reserved) :exec reserved))) (list (cons 'magic magic) (cons 'cputype cputype) (cons 'cpusubtype cpusubtype) (cons 'filetype filetype) (cons 'ncmds ncmds) (cons 'sizeofcmds sizeofcmds) (cons 'flags flags) (cons 'reserved reserved)))))