-! Copyright (C) 2006, 2009 Slava Pestov
+! Copyright (C) 2006, 2010 Slava Pestov
! See http://factorcode.org/license.txt for BSD license.
USING: compiler io kernel cocoa.runtime cocoa.subclassing
cocoa.messages cocoa.types sequences words vocabs parser
core-foundation.bundles namespaces assocs hashtables
-compiler.units lexer init ;
+compiler.units lexer init macros quotations fry alien.c-types
+arrays combinators ;
IN: cocoa
: (remember-send) ( selector variable -- )
: remember-send ( selector -- )
sent-messages (remember-send) ;
-SYNTAX: -> scan dup remember-send suffix! \ send suffix! ;
+SYNTAX: -> scan [ remember-send ] [ suffix! ] bi \ send suffix! ;
SYMBOL: super-sent-messages
SYNTAX: IMPORT: scan [ ] import-objc-class ;
+MACRO: objc-class-case ( alist -- quot )
+ "isKindOfClass:" remember-send
+ [
+ dup callable?
+ [ first2 [ '[ dup _ execute "isKindOfClass:" send c-bool> ] ] dip 2array ]
+ unless
+ ] map '[ _ cond ] ;
+
"Importing Cocoa classes..." print
"cocoa.classes" create-vocab drop