]> gitweb.factorcode.org Git - factor.git/blob - basis/cocoa/cocoa.factor
macros: macro body is now defined in its own subword, for compile-time stack effect...
[factor.git] / basis / cocoa / cocoa.factor
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
7 arrays combinators ;
8 IN: cocoa
9
10 : (remember-send) ( selector variable -- )
11     [ dupd ?set-at ] change-global ;
12
13 SYMBOL: sent-messages
14
15 : remember-send ( selector -- )
16     sent-messages (remember-send) ;
17
18 SYNTAX: -> scan [ remember-send ] [ suffix! ] bi \ send suffix! ;
19
20 SYMBOL: super-sent-messages
21
22 : remember-super-send ( selector -- )
23     super-sent-messages (remember-send) ;
24
25 SYNTAX: SUPER-> scan dup remember-super-send suffix! \ super-send suffix! ;
26
27 SYMBOL: frameworks
28
29 frameworks [ V{ } clone ] initialize
30
31 [ frameworks get [ load-framework ] each ] "cocoa" add-startup-hook
32
33 SYNTAX: FRAMEWORK: scan [ load-framework ] [ frameworks get push ] bi ;
34
35 SYNTAX: IMPORT: scan [ ] import-objc-class ;
36
37 MACRO: objc-class-case ( alist -- quot )
38     "isKindOfClass:" remember-send
39     [
40         dup callable?
41         [ first2 [ '[ dup _ execute "isKindOfClass:" send c-bool> ] ] dip 2array ]
42         unless
43     ] map '[ _ cond ] ;
44
45 "Importing Cocoa classes..." print
46
47 "cocoa.classes" create-vocab drop
48
49 [
50     {
51         "NSApplication"
52         "NSArray"
53         "NSAutoreleasePool"
54         "NSBundle"
55         "NSData"
56         "NSDictionary"
57         "NSError"
58         "NSEvent"
59         "NSException"
60         "NSMenu"
61         "NSMenuItem"
62         "NSMutableDictionary"
63         "NSNib"
64         "NSNotification"
65         "NSNotificationCenter"
66         "NSNumber"
67         "NSObject"
68         "NSOpenGLContext"
69         "NSOpenGLPixelFormat"
70         "NSOpenGLView"
71         "NSOpenPanel"
72         "NSPanel"
73         "NSPasteboard"
74         "NSPropertyListSerialization"
75         "NSResponder"
76         "NSSavePanel"
77         "NSScreen"
78         "NSString"
79         "NSView"
80         "NSWindow"
81         "NSWorkspace"
82     } [
83         [ ] import-objc-class
84     ] each
85 ] with-compilation-unit