From 886cf4df0771c32719f344b405de127ab4384cf5 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Fri, 29 Mar 2013 14:17:09 -0700 Subject: [PATCH] cocoa.messages: some support for runtime message sending. --- basis/cocoa/messages/messages.factor | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor index f1e2402e84..c093d54cc0 100644 --- a/basis/cocoa/messages/messages.factor +++ b/basis/cocoa/messages/messages.factor @@ -55,8 +55,17 @@ objc-methods [ H{ } clone ] initialize ERROR: no-objc-method name ; +: ?lookup-method ( selector -- method/f ) + objc-methods get at ; + : lookup-method ( selector -- method ) - dup objc-methods get at [ ] [ no-objc-method ] ?if ; + dup ?lookup-method [ ] [ no-objc-method ] ?if ; + +: selector/sender ( selector method -- alien word ) + [ selector ] [ message-senders get at ] bi* ; + +: when-method ( receiver selector quot: ( receiver selector method -- ) -- ) + [ dup ?lookup-method ] dip [ selector/sender ] prepose [ 2drop ] if* ; inline MEMO: make-prepare-send ( selector method super? -- quot ) [