97 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Factor
		
	
	
! Copyright (C) 2006, 2009 Slava Pestov
 | 
						|
! See http://factorcode.org/license.txt for BSD license.
 | 
						|
USING: assocs cocoa.messages compiler.units core-foundation.bundles
 | 
						|
hashtables init io kernel lexer namespaces sequences vocabs ;
 | 
						|
IN: cocoa
 | 
						|
 | 
						|
SYMBOL: sent-messages
 | 
						|
 | 
						|
sent-messages [ H{ } clone ] initialize
 | 
						|
 | 
						|
: remember-send ( selector -- )
 | 
						|
    dup sent-messages get set-at ;
 | 
						|
 | 
						|
SYNTAX: ->
 | 
						|
    scan-token dup remember-send
 | 
						|
    [ lookup-method suffix! ] [ suffix! ] bi \ send suffix! ;
 | 
						|
 | 
						|
SYNTAX: ?->
 | 
						|
    dup last cache-stubs
 | 
						|
    scan-token dup remember-send
 | 
						|
    suffix! \ send suffix! ;
 | 
						|
 | 
						|
SYNTAX: SEL:
 | 
						|
    scan-token dup remember-send
 | 
						|
    <selector> suffix! \ cocoa.messages:selector suffix! ;
 | 
						|
 | 
						|
SYMBOL: super-sent-messages
 | 
						|
 | 
						|
super-sent-messages [ H{ } clone ] initialize
 | 
						|
 | 
						|
: remember-super-send ( selector -- )
 | 
						|
    dup super-sent-messages get set-at ;
 | 
						|
 | 
						|
SYNTAX: SUPER->
 | 
						|
    scan-token dup remember-super-send
 | 
						|
    [ lookup-method suffix! ] [ suffix! ] bi \ super-send suffix! ;
 | 
						|
 | 
						|
SYMBOL: frameworks
 | 
						|
 | 
						|
frameworks [ V{ } clone ] initialize
 | 
						|
 | 
						|
[ frameworks get [ load-framework ] each ] "cocoa" add-startup-hook
 | 
						|
 | 
						|
SYNTAX: FRAMEWORK: scan-token [ load-framework ] [ frameworks get push ] bi ;
 | 
						|
 | 
						|
SYNTAX: IMPORT: scan-token [ ] import-objc-class ;
 | 
						|
 | 
						|
"Importing Cocoa classes..." print
 | 
						|
 | 
						|
"cocoa.classes" create-vocab drop
 | 
						|
 | 
						|
[
 | 
						|
    {
 | 
						|
        "NSAlert"
 | 
						|
        "NSAppleScript"
 | 
						|
        "NSApplication"
 | 
						|
        "NSArray"
 | 
						|
        "NSAutoreleasePool"
 | 
						|
        "NSBitmapImageRep"
 | 
						|
        "NSBundle"
 | 
						|
        "NSButton"
 | 
						|
        "NSColorSpace"
 | 
						|
        "NSCustomTouchBarItem"
 | 
						|
        "NSData"
 | 
						|
        "NSDictionary"
 | 
						|
        "NSError"
 | 
						|
        "NSEvent"
 | 
						|
        "NSException"
 | 
						|
        "NSMenu"
 | 
						|
        "NSMenuItem"
 | 
						|
        "NSMutableDictionary"
 | 
						|
        "NSNib"
 | 
						|
        "NSNotification"
 | 
						|
        "NSNotificationCenter"
 | 
						|
        "NSNumber"
 | 
						|
        "NSObject"
 | 
						|
        "NSOpenGLContext"
 | 
						|
        "NSOpenGLPixelFormat"
 | 
						|
        "NSOpenGLView"
 | 
						|
        "NSOpenPanel"
 | 
						|
        "NSPanel"
 | 
						|
        "NSPasteboard"
 | 
						|
        "NSPropertyListSerialization"
 | 
						|
        "NSResponder"
 | 
						|
        "NSSavePanel"
 | 
						|
        "NSScreen"
 | 
						|
        "NSString"
 | 
						|
        "NSTouchBar"
 | 
						|
        "NSTouchBarItem"
 | 
						|
        "NSView"
 | 
						|
        "NSWindow"
 | 
						|
        "NSWorkspace"
 | 
						|
    } [
 | 
						|
        [ ] import-objc-class
 | 
						|
    ] each
 | 
						|
] with-compilation-unit
 |