Source
(defun create-lisp-call-list (args)
(mapcar (lambda (arg)
(let ((name (car arg)))
(cond ((member :out arg) name)
((member :flag arg) (create-flag-call arg))
((member :const arg) (fourth arg))
((member :class arg)
(let* ((class-desc (second (member :class arg)))
(slot-val `(slot-value ,name
',(if (listp class-desc)
(second class-desc)
class-desc))))
(if (or (member :pointer arg)
(member :string arg))
`(if (or (not ,name) (not ,slot-val))
(null-pointer) ,slot-val)
slot-val)))
(t (if (or (member :pointer arg)
(member :string arg))
`(if (not ,name) (null-pointer) ,name)
name)))))
args))
Source Context