]> gitweb.factorcode.org Git - factor.git/blob - basis/cocoa/cocoa.factor
cocoa: maybe this is cleaner...
[factor.git] / basis / cocoa / cocoa.factor
1 ! Copyright (C) 2006, 2009 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 ;
7 FROM: cocoa.messages => selector ;
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-token dup remember-send suffix! \ send suffix! ;
19
20 SYNTAX: SEL:
21     scan-token
22     [ remember-send ]
23     [ <selector> suffix! \ selector suffix! ] bi ;
24
25 SYNTAX: SEND:
26     scan-token
27     [ remember-send ]
28     [ <selector> suffix! \ selector suffix! ]
29     [ suffix! \ lookup-sender suffix! ] tri ;
30
31 SYMBOL: super-sent-messages
32
33 : remember-super-send ( selector -- )
34     super-sent-messages (remember-send) ;
35
36 SYNTAX: SUPER-> scan-token dup remember-super-send suffix! \ super-send suffix! ;
37
38 SYMBOL: frameworks
39
40 frameworks [ V{ } clone ] initialize
41
42 [ frameworks get [ load-framework ] each ] "cocoa" add-startup-hook
43
44 SYNTAX: FRAMEWORK: scan-token [ load-framework ] [ frameworks get push ] bi ;
45
46 SYNTAX: IMPORT: scan-token [ ] import-objc-class ;
47
48 "Importing Cocoa classes..." print
49
50 "cocoa.classes" create-vocab drop
51
52 [
53     {
54         "NSAlert"
55         "NSApplication"
56         "NSArray"
57         "NSAutoreleasePool"
58         "NSBitmapImageRep"
59         "NSBundle"
60         "NSColorSpace"
61         "NSData"
62         "NSDictionary"
63         "NSError"
64         "NSEvent"
65         "NSException"
66         "NSMenu"
67         "NSMenuItem"
68         "NSMutableDictionary"
69         "NSNib"
70         "NSNotification"
71         "NSNotificationCenter"
72         "NSNumber"
73         "NSObject"
74         "NSOpenGLContext"
75         "NSOpenGLPixelFormat"
76         "NSOpenGLView"
77         "NSOpenPanel"
78         "NSPanel"
79         "NSPasteboard"
80         "NSPropertyListSerialization"
81         "NSResponder"
82         "NSSavePanel"
83         "NSScreen"
84         "NSString"
85         "NSView"
86         "NSWindow"
87         "NSWorkspace"
88     } [
89         [ ] import-objc-class
90     ] each
91 ] with-compilation-unit