[Openmcl-devel] How to access Objective-C propperties

Alexander Repenning ralex at cs.colorado.edu
Tue Dec 28 14:11:00 PST 2010


objc:objc-message-send-stret does the trick!  Thanks

alex


On Dec 28, 2010, at 1:40 PM, R. Matthew Emerson wrote:

> 
> On Dec 28, 2010, at 2:55 PM, Alexander Repenning wrote:
> 
>> I am having a problem with accessing certain (10.6 and later) objective-C properties which I try to access via objc:objc-message-send
>> 
>> something like this works: (objc:objc-message-send some-event "magnification" #>CGFloat)
>> 
>> 
>> 
>> but when I specify an NSPoint return type things fall apart:
>> 
>> (objc:objc-message-send touch-return "normalizedPosition" #>NSPoint)
>> 
>> 
>> Error: (TOUCH-RETURN :<SEL> (OBJC:@SELECTOR "normalizedPosition")) should be an even-length list of alternating foreign types and values
>>> While executing: X8664::EXPAND-FF-CALL, in process Listener(6).
>> 
>> 
>> I have tried to replace  #>NSPoint with :id which does return something that Lisp does not like:
>> 
>> Error: Invalid memory operation.
>>> While executing: CCL::%SAFE-GET-PTR, in process Listener(6).
> 
> 
> Objective-C methods that return structs have to be called differently from methods that return scalars.  The details of why this is so are complicated and probably not that interesting.
> 
> Something like this (warning, typed in mail) is probably what you want.
> 
> (rlet ((pt #>NSPoint))
>  (objc:objc-message-send-stret pt touch-return "normalizedPosition" #>NSPoint))
> 
> Note that you pass an additional first argument, which is a pointer to some memory into which the returned struct will be stored.
> 
> 

Prof. Alexander Repenning

University of Colorado
Computer Science Department
Boulder, CO 80309-430

vCard: http://www.cs.colorado.edu/~ralex/AlexanderRepenning.vcf


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.clozure.com/pipermail/openmcl-devel/attachments/20101228/bb199e52/attachment.htm>


More information about the Openmcl-devel mailing list