version 1.67, 2010/12/31 18:09:02
|
version 1.70, 2012/03/22 16:27:11
|
Line 1
|
Line 1
|
\ libcc.fs foreign function interface implemented using a C compiler |
\ libcc.fs foreign function interface implemented using a C compiler |
|
|
\ Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc. |
\ Copyright (C) 2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. |
|
|
\ This file is part of Gforth. |
\ This file is part of Gforth. |
|
|
Line 466 create gen-wrapped-types
|
Line 466 create gen-wrapped-types
|
\ addr points to the return type index of a c-function descriptor |
\ addr points to the return type index of a c-function descriptor |
dup { descriptor } |
dup { descriptor } |
count { ret } count 2dup { d: pars } chars + count { d: c-name } |
count { ret } count 2dup { d: pars } chars + count { d: c-name } |
." void " lib-modulename 2@ type ." _LTX_" descriptor wrapper-function-name 2dup type drop free throw |
." void " |
|
[ lib-suffix s" .la" str= [IF] ] lib-modulename 2@ type ." _LTX_" [ [THEN] ] |
|
descriptor wrapper-function-name 2dup type drop free throw |
.\" (GFORTH_ARGS)\n" |
.\" (GFORTH_ARGS)\n" |
.\" {\n Cell MAYBE_UNUSED *sp = gforth_SP;\n Float MAYBE_UNUSED *fp = gforth_FP;\n " |
.\" {\n Cell MAYBE_UNUSED *sp = gforth_SP;\n Float MAYBE_UNUSED *fp = gforth_FP;\n " |
pars c-name 2over count-stacks ret gen-wrapped-stmt .\" ;\n" |
pars c-name 2over count-stacks ret gen-wrapped-stmt .\" ;\n" |
Line 510 create gen-wrapped-types
|
Line 512 create gen-wrapped-types
|
2over s+ 2swap drop free throw ; |
2over s+ 2swap drop free throw ; |
|
|
: open-wrappers ( -- addr|0 ) |
: open-wrappers ( -- addr|0 ) |
lib-filename 2@ s" .la" s+ |
lib-filename 2@ lib-suffix s+ |
2dup libcc-named-dir string-prefix? if ( c-addr u ) |
2dup libcc-named-dir string-prefix? if ( c-addr u ) |
\ see if we can open it in the path |
\ see if we can open it in the path |
libcc-named-dir nip /string |
libcc-named-dir nip /string |
Line 659 DEFER compile-wrapper-function ( -- )
|
Line 661 DEFER compile-wrapper-function ( -- )
|
\G specified stack effect and calls the C function @code{c-name}. |
\G specified stack effect and calls the C function @code{c-name}. |
['] parse-function-types (c-function) ; |
['] parse-function-types (c-function) ; |
|
|
: c-value ( "forth-name" "c-name" "[---]" "type" -- ) \ gforth |
: c-value ( "forth-name" "c-name" "---" "type" -- ) \ gforth |
\G Define a Forth word @i{forth-name}. @i{Forth-name} has the |
\G Define a Forth word @i{forth-name}. @i{Forth-name} has the |
\G specified stack effect and gives the C value of @code{c-name}. |
\G specified stack effect and gives the C value of @code{c-name}. |
['] parse-value-type (c-function) ; |
['] parse-value-type (c-function) ; |