




 
1.4.3.1  Special method argument and result conversion
For certain types of argument, there is more than one useful conversion from the FLI value to a Lisp value. To control this, the argument specification can include an 
arg-style
, which describes how the argument should be converted. If the 
arg-style
 is specified as 
:foreign 
then the argument is converted using normal FLI rules, but by default certain types are converted differently:
Special argument conversion for 
define-objc-method
| 
 Argument type | 
Special argument behavior | 
| 
ns-rect | 
The argument is a vector. | 
| 
ns-point | 
The argument is a vector. | 
| 
ns-size | 
The argument is a vector. | 
| 
ns-range | 
The argument is a cons. | 
| 
objc-bool | 
The argument is 
nilor
t. | 
| 
objc-object-pointer | 
Depending on the Objective-C class, allows automatic conversion to a string or array. | 
| 
objc-c-string | 
The argument is a string. | 
Likewise, result conversion can be controlled by the 
result-style 
specification. If this is :
foreign
 then the value is assumed to be suitable for conversion to the 
result-type
 using the normal FLI rules, but if 
result-style
 is :
lisp
 then additional conversions are performed for specific values of 
result-type
:
Special result conversion for 
define-objc-method
| 
 Result type | 
Special result types supported | 
| 
ns-rect | 
The result can be a vector. | 
| 
ns-point | 
The result can be a vector. | 
| 
ns-size | 
The result can be a vector. | 
| 
ns-range | 
The result can be a cons. | 
| 
objc-bool | 
The result can be 
nilor
t. | 
| 
objc-object-pointer | 
The result can be a string or an array. | 
| 
objc-class | 
The result can be a string naming a class. | 
LispWorks Objective-C and Cocoa Interface User Guide and Reference Manual - 4 Apr 2005





