]> gitweb.factorcode.org Git - factor.git/blob - basis/cocoa/cocoa.factor
cocoa: add ?-> to remember messages being used at runtime.
[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 IN: cocoa
8
9 : (remember-send) ( selector variable -- )
10     [ dupd ?set-at ] change-global ;
11
12 SYMBOL: sent-messages
13
14 : remember-send ( selector -- )
15     sent-messages (remember-send) ;
16
17 SYNTAX: -> scan-token dup remember-send suffix! \ send suffix! ;
18
19 SYNTAX: ?-> scan-token [ remember-send ] [ <selector> drop ] bi ;
20
21 SYMBOL: super-sent-messages
22
23 : remember-super-send ( selector -- )
24     super-sent-messages (remember-send) ;
25
26 SYNTAX: SUPER-> scan-token dup remember-super-send suffix! \ super-send suffix! ;
27
28 SYMBOL: frameworks
29
30 frameworks [ V{ } clone ] initialize
31
32 [ frameworks get [ load-framework ] each ] "cocoa" add-startup-hook
33
34 SYNTAX: FRAMEWORK: scan-token [ load-framework ] [ frameworks get push ] bi ;
35
36 SYNTAX: IMPORT: scan-token [ ] import-objc-class ;
37
38 "Importing Cocoa classes..." print
39
40 "cocoa.classes" create-vocab drop
41
42 [
43     {
44         "NSAlert"
45         "NSApplication"
46         "NSArray"
47         "NSAutoreleasePool"
48         "NSBitmapImageRep"
49         "NSBundle"
50         "NSColorSpace"
51         "NSData"
52         "NSDictionary"
53         "NSError"
54         "NSEvent"
55         "NSException"
56         "NSMenu"
57         "NSMenuItem"
58         "NSMutableDictionary"
59         "NSNib"
60         "NSNotification"
61         "NSNotificationCenter"
62         "NSNumber"
63         "NSObject"
64         "NSOpenGLContext"
65         "NSOpenGLPixelFormat"
66         "NSOpenGLView"
67         "NSOpenPanel"
68         "NSPanel"
69         "NSPasteboard"
70         "NSPropertyListSerialization"
71         "NSResponder"
72         "NSSavePanel"
73         "NSScreen"
74         "NSString"
75         "NSView"
76         "NSWindow"
77         "NSWorkspace"
78     } [
79         [ ] import-objc-class
80     ] each
81 ] with-compilation-unit