+#+openmcl
+(defmacro def-function (names args &key module returning)
+ (declare (ignore module))
+ (let* ((result-type (convert-from-uffi-type returning :return))
+ (foreign-name (if (atom names) names (car names)))
+ (lisp-name (if (atom names) (make-lisp-name names) (cadr names))))
+ #+darwinppc-target
+ (setf foreign-name (concatenate 'string "_" foreign-name))
+ (multiple-value-bind (params args) (process-function-args args)
+ `(defun ,lisp-name ,params
+ (ccl::external-call ,foreign-name ,@args ,result-type)))))