#!+sb-doc
"Parse the list structure TYPE as an alien type specifier and return
the resultant ALIEN-TYPE structure."
(%parse-alien-type type env))
(defun %parse-alien-type (type env)
#!+sb-doc
"Parse the list structure TYPE as an alien type specifier and return
the resultant ALIEN-TYPE structure."
(%parse-alien-type type env))
(defun %parse-alien-type (type env)
(flet ((aux-defn-matches (x)
(and (eq (first x) kind) (eq (second x) name))))
(when (find-if #'aux-defn-matches *new-auxiliary-types*)
(flet ((aux-defn-matches (x)
(and (eq (first x) kind) (eq (second x) name))))
(when (find-if #'aux-defn-matches *new-auxiliary-types*)
kind ; Kind of from mapping, :vector or :alist.
offset) ; Offset to add to value for :vector from mapping.
kind ; Kind of from mapping, :vector or :alist.
offset) ; Offset to add to value for :vector from mapping.
(parse-alien-record-type :union name fields env))
(defun parse-alien-record-type (kind name fields env)
(parse-alien-record-type :union name fields env))
(defun parse-alien-record-type (kind name fields env)
(cond (fields
(let* ((old (and name (auxiliary-alien-type kind name env)))
(old-fields (and old (alien-record-type-fields old))))
(cond (fields
(let* ((old (and name (auxiliary-alien-type kind name env)))
(old-fields (and old (alien-record-type-fields old))))