- ((member style '(:out :in-out))
- (alien-types `(* ,declaration))
- (alien-parameters `(addr ,var))
- (alien-bindings
- `(,var ,declaration
- ,@(when (eq style :in-out)
- (list (to-alien-form expr type)))))
- (alien-values (from-alien-form var type)))
- (cleanup
- (alien-types declaration)
- (alien-bindings
- `(,var ,declaration ,(to-alien-form expr type)))
- (alien-parameters var)
- (cleanup-forms cleanup))
- (t
- (alien-types declaration)
- (alien-parameters (to-alien-form expr type)))))))
+ ((member style '(:out :in-out))
+ (alien-types `(* ,declaration))
+ (alien-parameters `(addr ,var))
+ (alien-bindings
+ `(,var ,declaration
+ ,@(when (eq style :in-out)
+ (list (to-alien-form expr type)))))
+ (return-values (from-alien-form var type)))
+ ((eq style :return)
+ (alien-types declaration)
+ (alien-bindings
+ `(,var ,declaration ,(to-alien-form expr type)))
+ (alien-parameters var)
+ (return-values (from-alien-form var type)))
+ (cleanup
+ (alien-types declaration)
+ (alien-bindings
+ `(,var ,declaration ,(to-alien-form expr type)))
+ (alien-parameters var)
+ (cleanup-forms cleanup))
+ (t
+ (alien-types declaration)
+ (alien-parameters (to-alien-form expr type)))))))