alien.inline.*: fixed merge breakage

db4
Jeremy Hughes 2009-07-11 20:50:27 +12:00
parent 579aba5625
commit 11183fa5db
2 changed files with 18 additions and 13 deletions

View File

@ -23,9 +23,6 @@ SYMBOL: c-strings
CHAR: a swap length CHAR: a + [a,b] CHAR: a swap length CHAR: a + [a,b]
[ 1string ] map ; [ 1string ] map ;
: append-function-body ( prototype-str body -- str )
[ swap % " {\n" % % "\n}\n" % ] "" make ;
: compile-library? ( -- ? ) : compile-library? ( -- ? )
c-library get library-path dup exists? [ c-library get library-path dup exists? [
file get [ file get [
@ -44,6 +41,9 @@ SYMBOL: c-strings
[ current-vocab name>> % "_" % % ] "" make ; [ current-vocab name>> % "_" % % ] "" make ;
PRIVATE> PRIVATE>
: append-function-body ( prototype-str body -- str )
[ swap % " {\n" % % "\n}\n" % ] "" make ;
: function-types-effect ( -- function types effect ) : function-types-effect ( -- function types effect )
scan scan swap ")" parse-tokens scan scan swap ")" parse-tokens
[ "(" subseq? not ] filter swap parse-arglist ; [ "(" subseq? not ] filter swap parse-arglist ;
@ -56,7 +56,7 @@ PRIVATE>
library-is-c++ get [ "extern \"C\" " prepend ] when ; library-is-c++ get [ "extern \"C\" " prepend ] when ;
: prototype-string' ( function types return -- str ) : prototype-string' ( function types return -- str )
[ dup arg-list ] <effect> c-function-string ; [ dup arg-list ] <effect> prototype-string ;
: factor-function ( function types effect -- word quot effect ) : factor-function ( function types effect -- word quot effect )
annotate-effect [ c-library get ] 3dip annotate-effect [ c-library get ] 3dip

View File

@ -3,7 +3,7 @@
USING: accessors alien.inline alien.inline.types alien.marshall USING: accessors alien.inline alien.inline.types alien.marshall
combinators effects generalizations kernel locals make namespaces combinators effects generalizations kernel locals make namespaces
quotations sequences words alien.marshall.structs lexer parser quotations sequences words alien.marshall.structs lexer parser
vocabs.parser ; vocabs.parser multiline ;
IN: alien.marshall.syntax IN: alien.marshall.syntax
:: marshalled-function ( function types effect -- word quot effect ) :: marshalled-function ( function types effect -- word quot effect )
@ -22,16 +22,21 @@ IN: alien.marshall.syntax
] [ ] make ] [ ] make
] dip ; ] dip ;
: define-c-marshalled ( function types effect -- ) : define-c-marshalled ( function types effect body -- )
[ marshalled-function define-declared ] 3keep [
c-function-string c-strings get push ; [ marshalled-function define-declared ]
[ prototype-string ] 3bi
] dip append-function-body c-strings get push ;
: define-c-marshalled' ( function effect -- ) : define-c-marshalled' ( function effect body -- )
[ in>> ] keep [ marshalled-function define-declared ] 3keep [
out>> c-function-string' c-strings get push ; [ in>> ] keep
[ marshalled-function define-declared ]
[ out>> prototype-string' ] 3bi
] dip append-function-body c-strings get push ;
SYNTAX: CM-FUNCTION: SYNTAX: CM-FUNCTION:
function-types-effect define-c-marshalled ; function-types-effect parse-here define-c-marshalled ;
SYNTAX: M-FUNCTION: SYNTAX: M-FUNCTION:
function-types-effect marshalled-function define-declared ; function-types-effect marshalled-function define-declared ;
@ -42,4 +47,4 @@ SYNTAX: M-STRUCTURE:
SYNTAX: CM-STRUCTURE: SYNTAX: CM-STRUCTURE:
scan current-vocab parse-definition scan current-vocab parse-definition
[ define-marshalled-struct ] [ define-c-struct ] 3bi ; [ define-marshalled-struct ] [ nip define-c-struct ] 3bi ;