Function: CREATE-LISP-CALL-LIST

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