1 ! Copyright (C) 2006, 2010 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: compiler io kernel cocoa.runtime cocoa.subclassing
4 cocoa.messages cocoa.types sequences words vocabs parser
5 core-foundation.bundles namespaces assocs hashtables
6 compiler.units lexer init macros quotations fry alien.c-types
10 : (remember-send) ( selector variable -- )
11 [ dupd ?set-at ] change-global ;
15 : remember-send ( selector -- )
16 sent-messages (remember-send) ;
18 SYNTAX: -> scan [ remember-send ] [ suffix! ] bi \ send suffix! ;
20 SYMBOL: super-sent-messages
22 : remember-super-send ( selector -- )
23 super-sent-messages (remember-send) ;
25 SYNTAX: SUPER-> scan dup remember-super-send suffix! \ super-send suffix! ;
29 frameworks [ V{ } clone ] initialize
31 [ frameworks get [ load-framework ] each ] "cocoa" add-startup-hook
33 SYNTAX: FRAMEWORK: scan [ load-framework ] [ frameworks get push ] bi ;
35 SYNTAX: IMPORT: scan [ ] import-objc-class ;
37 MACRO: objc-class-case ( alist -- quot )
38 "isKindOfClass:" remember-send
41 [ first2 [ '[ dup _ execute "isKindOfClass:" send c-bool> ] ] dip 2array ]
45 "Importing Cocoa classes..." print
47 "cocoa.classes" create-vocab drop
65 "NSNotificationCenter"
74 "NSPropertyListSerialization"
85 ] with-compilation-unit