Re: How to simulate C's function pointer in AppleScript?
Re: How to simulate C's function pointer in AppleScript?
- Subject: Re: How to simulate C's function pointer in AppleScript?
- From: "Mark J. Reed" <email@hidden>
- Date: Thu, 23 Oct 2008 08:59:17 -0400
The usual solution for faking closures/function pointers in an OOPL is
to use objects with a predetermined method name - the caller can
always declare a new class to get the functionality desired. Can you
pass a script object as a parameter to a handler in AppleScript?
On 10/23/08, André Berg <email@hidden> wrote:
>
> --- Original Nachricht ---
> Absender: Jay Louvion
> Datum: 23.10.2008 13:03 Uhr
>> Have you tried declaring it as global ?
>>
>> Best,
>>
>> j.
>
> Thank you for replying. :) I failed to mention that I had tried that
> already.
>
>
> --- Original Nachricht ---
> Absender: Philip Aker
> Datum: 23.10.2008 13:22 Uhr
>> On Oct 23, 2008, at 3:58 AM, André Berg wrote:
>>
>>> The question now is how can I correctly pass, from the top-level
>>> script, myHandlerToTime() in the statement property of the Timer
>>> script so that it gets used as the direct parameter to the run script
>>> command inside the Timer script?
>>
>> on *doHandlerToTime*()
>> display dialog "*beep*"
>> end *doHandlerToTime*
>>
>> script *Timer*
>> property *procedure* : missing value
>> on *timeit*()
>> run script *procedure*
>> end *timeit*
>> end script
>>
>> set *Timer*'s *procedure* to *doHandlerToTime*
>> *Timer*'s *timeit*()
>>
>> Passing parameters is a different story ;-)
>
> Ok, seems like this was the missing piece. Thank you very much. :)
> I didn't think of trying to pass the handler name as type and not in a
> string.
> So far so good...
>
> But as we all know, it's never easy, now is it?
> My handler of course has three parameters.
>
> I think I will give the user the possibility to specify either an
> AppleScript syntax string, or a script object that does the parameter
> setup and calling of the handler to time itself, so that I can just pass
> it to the "run script" command:
>
> -- either a script object
> *script* scriptToTime
> -- setup arguments for the function to time
> *on* handlerToTime("spam", "eggs")
> -- magic ...
> *end* handlerToTime
> *end* *script*
>
> -- or an AS syntax string
> *set* Timer's statement *to* "tell app \"Finger\" to count fingers"
>
> *script* Timer
> *property* statement : missing value
> -- start timer
> run script *my* statement
> -- end timer
> *end script
>
> *There might be a downside of a small overhead that I cannot exactly
> calculate
> this way, but the effect of being able to time handlers instead of only
> statements
> far outweighs that in my humble opinion and executing code inside one
> AppleScript
> component is always subject to rather large fluctuations in time
> compared to other
> languages.
>
>
> Btw, might be related to this question, the "run script" command has an
> optional
> parameter called "in" that is used to specify the scripting component
> that it should use as
> execution context, but in my tests I couldn't get it to work. The
> unicode text to specify
> is the name of a script object, right?
>
> Again thanks to you both for posting your replies :)
>
>
> André
>
--
Sent from Gmail for mobile | mobile.google.com
Mark J. Reed <email@hidden>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users
This email sent to email@hidden