- (let* ((alien-type (translate-type-spec type))
- (alien
- (alien::%heap-alien
- (alien::make-heap-alien-info
- :type (alien::parse-alien-type
- `(function ,alien-type system-area-pointer))
- :sap-form (system:foreign-symbol-address reader))))
- (translate-return-value
- (intern-return-value-translator type)))
- #'(lambda (object)
- (funcall
- translate-return-value
- (alien-funcall
- alien (proxy-location object)))))