]> gitweb.factorcode.org Git - factor.git/commitdiff
cocoa.messages: some support for runtime message sending.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 29 Mar 2013 21:17:09 +0000 (14:17 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 29 Mar 2013 21:18:57 +0000 (14:18 -0700)
basis/cocoa/messages/messages.factor

index f1e2402e848f8904913df45c1c1c130e89934c65..c093d54cc053a72f65b2bea65bd8178bdf315cac 100644 (file)
@@ -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> 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 )
     [