split objective c bindings into files
parent
6031ec0d76
commit
bbf871e28a
|
|
@ -1,6 +1,6 @@
|
|||
! Copyright (C) 2006 Slava Pestov
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: objective-c
|
||||
USING: alien arrays compiler kernel lists namespaces parser
|
||||
sequences words ;
|
||||
|
||||
TYPEDEF: void* SEL
|
||||
|
||||
|
|
@ -12,21 +12,6 @@ FUNCTION: bool sel_isMapped ( SEL aSelector ) ;
|
|||
|
||||
FUNCTION: SEL sel_registerName ( char* str ) ;
|
||||
|
||||
TUPLE: selector name object ;
|
||||
|
||||
C: selector ( name -- sel ) [ set-selector-name ] keep ;
|
||||
|
||||
: selector-valid? ( selector -- ? )
|
||||
selector-object dup [ expired? not ] when ;
|
||||
|
||||
: selector ( selector -- alien )
|
||||
dup selector-valid? [
|
||||
selector-object
|
||||
] [
|
||||
dup selector-name sel_registerName
|
||||
dup rot set-selector-object
|
||||
] if ;
|
||||
|
||||
BEGIN-STRUCT: objc-class
|
||||
FIELD: void* isa
|
||||
FIELD: void* super-class
|
||||
|
|
@ -40,12 +25,7 @@ BEGIN-STRUCT: objc-class
|
|||
FIELD: void* protocols
|
||||
END-STRUCT
|
||||
|
||||
FUNCTION: int objc_getClassList ( void* buffer, int bufferLen ) ; compiled
|
||||
|
||||
: objc-classes ( -- seq )
|
||||
f 0 objc_getClassList
|
||||
[ "void*" <c-array> dup ] keep objc_getClassList
|
||||
[ swap void*-nth objc-class-name ] map-with ;
|
||||
FUNCTION: int objc_getClassList ( void* buffer, int bufferLen ) ;
|
||||
|
||||
FUNCTION: objc-class* objc_getClass ( char* class ) ;
|
||||
|
||||
|
|
@ -80,50 +60,3 @@ FUNCTION: void class_removeMethods ( objc-class* class, objc-method-list* method
|
|||
FUNCTION: uint method_getNumberOfArguments ( objc-method* method ) ;
|
||||
|
||||
FUNCTION: uint method_getSizeOfArguments ( objc-method* method ) ;
|
||||
|
||||
: method-list>seq ( method-list -- seq )
|
||||
dup objc-method-list-elements swap objc-method-list-count [
|
||||
swap objc-method-nth objc-method-name sel_getName
|
||||
] map-with ;
|
||||
|
||||
: (objc-methods) ( objc-class iterator -- )
|
||||
2dup class_nextMethodList [
|
||||
method-list>seq % (objc-methods)
|
||||
] [
|
||||
2drop
|
||||
] if* ;
|
||||
|
||||
: objc-methods ( class -- seq )
|
||||
[ objc_getClass f <void*> (objc-methods) ] { } make ;
|
||||
|
||||
: OBJC-CLASS:
|
||||
#! Syntax: name
|
||||
CREATE dup word-name
|
||||
[ objc_getClass ] curry define-compound ; parsing
|
||||
|
||||
: make-dip ( quot n -- quot )
|
||||
dup \ >r <array> -rot \ r> <array> append3 ;
|
||||
|
||||
: make-msg-send ( returns args selector -- )
|
||||
<selector> [ selector ] curry over length make-dip [
|
||||
%
|
||||
swap ,
|
||||
[ f "objc_msgSend" ] %
|
||||
[ "id" "SEL" ] swap append ,
|
||||
\ alien-invoke ,
|
||||
] [ ] make ;
|
||||
|
||||
: define-msg-send ( returns types selector -- )
|
||||
[ make-msg-send "[" ] keep "]" append3 create-in
|
||||
swap define-compound ;
|
||||
|
||||
: msg-send-args ( args -- types selector )
|
||||
dup length 1 =
|
||||
[ first { } ] [ unpair >r concat r> ] if swap ;
|
||||
|
||||
: OBJC-MESSAGE:
|
||||
scan string-mode on
|
||||
[ string-mode off msg-send-args define-msg-send ] f ;
|
||||
parsing
|
||||
|
||||
"objective-c" words [ try-compile ] each
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
! Copyright (C) 2006 Slava Pestov
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: !syntax
|
||||
USING: kernel lists namespaces objective-c parser syntax words ;
|
||||
|
||||
: OBJC-CLASS:
|
||||
#! Syntax: name
|
||||
CREATE dup word-name
|
||||
[ objc_getClass ] curry define-compound ; parsing
|
||||
|
||||
: OBJC-MESSAGE:
|
||||
scan string-mode on
|
||||
[ string-mode off msg-send-args define-msg-send ] f ;
|
||||
parsing
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
! Copyright (C) 2006 Slava Pestov
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: objective-c
|
||||
USING: alien arrays kernel lists namespaces parser sequences
|
||||
words ;
|
||||
|
||||
TUPLE: selector name object ;
|
||||
|
||||
C: selector ( name -- sel ) [ set-selector-name ] keep ;
|
||||
|
||||
: selector-valid? ( selector -- ? )
|
||||
selector-object dup [ expired? not ] when ;
|
||||
|
||||
: selector ( selector -- alien )
|
||||
dup selector-valid? [
|
||||
selector-object
|
||||
] [
|
||||
dup selector-name sel_registerName
|
||||
dup rot set-selector-object
|
||||
] if ;
|
||||
|
||||
: objc-classes ( -- seq )
|
||||
f 0 objc_getClassList
|
||||
[ "void*" <c-array> dup ] keep objc_getClassList
|
||||
[ swap void*-nth objc-class-name ] map-with ;
|
||||
|
||||
: method-list>seq ( method-list -- seq )
|
||||
dup objc-method-list-elements swap objc-method-list-count [
|
||||
swap objc-method-nth objc-method-name sel_getName
|
||||
] map-with ;
|
||||
|
||||
: (objc-methods) ( objc-class iterator -- )
|
||||
2dup class_nextMethodList [
|
||||
method-list>seq % (objc-methods)
|
||||
] [
|
||||
2drop
|
||||
] if* ;
|
||||
|
||||
: objc-methods ( class -- seq )
|
||||
[ objc_getClass f <void*> (objc-methods) ] { } make ;
|
||||
|
||||
: make-dip ( quot n -- quot )
|
||||
dup \ >r <array> -rot \ r> <array> append3 ;
|
||||
|
||||
: make-msg-send ( returns args selector -- )
|
||||
<selector> [ selector ] curry over length make-dip [
|
||||
%
|
||||
swap ,
|
||||
[ f "objc_msgSend" ] %
|
||||
[ "id" "SEL" ] swap append ,
|
||||
\ alien-invoke ,
|
||||
] [ ] make ;
|
||||
|
||||
: define-msg-send ( returns types selector -- )
|
||||
[ make-msg-send "[" ] keep "]" append3 create-in
|
||||
swap define-compound ;
|
||||
|
||||
: msg-send-args ( args -- types selector )
|
||||
dup length 1 =
|
||||
[ first { } ] [ unpair >r concat r> ] if swap ;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
! Copyright (C) 2005 Alex Chapman.
|
||||
! See http://factor.sf.net/license.txt for BSD license.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: !syntax
|
||||
USING: alien compiler kernel lists math namespaces parser
|
||||
sequences syntax words ;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
! Copyright (C) 2004, 2005 Slava Pestov.
|
||||
! See http://factor.sf.net/license.txt for BSD license.
|
||||
! Copyright (C) 2004, 2006 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: image
|
||||
USING: errors generic hashtables io kernel kernel-internals
|
||||
lists math memory namespaces parser prettyprint sequences
|
||||
|
|
@ -144,6 +144,10 @@ vectors words ;
|
|||
"/library/alien/syntax.factor"
|
||||
"/library/alien/malloc.factor"
|
||||
|
||||
"/library/alien/objective-c/runtime.factor"
|
||||
"/library/alien/objective-c/utils.factor"
|
||||
"/library/alien/objective-c/syntax.factor"
|
||||
|
||||
"/library/io/buffer.factor"
|
||||
|
||||
"/library/cli.factor"
|
||||
|
|
|
|||
Loading…
Reference in New Issue