alien.inline: added C-TYPEDEF:

db4
Jeremy Hughes 2009-07-08 14:52:07 +12:00
parent 1c42ebd89e
commit 488f7efc27
2 changed files with 23 additions and 3 deletions

View File

@ -1,20 +1,31 @@
! Copyright (C) 2009 Jeremy Hughes. ! Copyright (C) 2009 Jeremy Hughes.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.inline alien.inline.private io.directories io.files USING: alien.inline alien.inline.private io.directories io.files
kernel namespaces tools.test ; kernel namespaces tools.test alien.c-types ;
IN: alien.inline.tests IN: alien.inline.tests
C-LIBRARY: const C-LIBRARY: test
C-FUNCTION: const-int add ( int a, int b ) C-FUNCTION: const-int add ( int a, int b )
return a + b; return a + b;
; ;
C-TYPEDEF: double bigfloat
C-FUNCTION: bigfloat smaller ( bigfloat a )
return a / 10;
;
;C-LIBRARY ;C-LIBRARY
{ 2 1 } [ add ] must-infer-as { 2 1 } [ add ] must-infer-as
[ 5 ] [ 2 3 add ] unit-test [ 5 ] [ 2 3 add ] unit-test
{ 1 1 } [ smaller ] must-infer-as
[ 1.0 ] [ 10 smaller ] unit-test
[ t ] [ "double" "bigfloat" [ resolve-typedef ] bi@ = ] unit-test
DELETE-C-LIBRARY: const DELETE-C-LIBRARY: const

View File

@ -5,7 +5,8 @@ alien.libraries alien.parser arrays assocs effects fry
generalizations grouping io.directories io.files generalizations grouping io.directories io.files
io.files.info io.files.temp kernel lexer math math.order io.files.info io.files.temp kernel lexer math math.order
math.ranges multiline namespaces sequences source-files math.ranges multiline namespaces sequences source-files
splitting strings system vocabs.loader vocabs.parser words ; splitting strings system vocabs.loader vocabs.parser words
alien.c-types make ;
IN: alien.inline IN: alien.inline
<PRIVATE <PRIVATE
@ -86,6 +87,12 @@ PRIVATE>
: define-c-include ( str -- ) : define-c-include ( str -- )
"#include " prepend c-strings get push ; "#include " prepend c-strings get push ;
: define-c-typedef ( old new -- )
[ typedef ] [
[ swap "typedef " % % " " % % ";" % ]
"" make c-strings get push
] 2bi ;
: delete-inline-library ( str -- ) : delete-inline-library ( str -- )
library-path dup exists? [ delete-file ] [ drop ] if ; library-path dup exists? [ delete-file ] [ drop ] if ;
@ -104,6 +111,8 @@ SYNTAX: C-INCLUDE: scan define-c-include ;
SYNTAX: C-FUNCTION: SYNTAX: C-FUNCTION:
function-types-effect define-c-function ; function-types-effect define-c-function ;
SYNTAX: C-TYPEDEF: scan scan define-c-typedef ;
SYNTAX: ;C-LIBRARY compile-c-library ; SYNTAX: ;C-LIBRARY compile-c-library ;
SYNTAX: DELETE-C-LIBRARY: scan delete-inline-library ; SYNTAX: DELETE-C-LIBRARY: scan delete-inline-library ;