implement fortran-arg-type>c-type and fortran-ret-type>c-type
parent
4f1dc5cd0c
commit
4429c17f63
|
@ -123,13 +123,38 @@ GENERIC: added-c-args ( type -- args )
|
||||||
M: fortran-type added-c-args drop { } ;
|
M: fortran-type added-c-args drop { } ;
|
||||||
M: character-type added-c-args drop { "long" } ;
|
M: character-type added-c-args drop { "long" } ;
|
||||||
|
|
||||||
|
GENERIC: added-c-arg-values ( type -- arg-values )
|
||||||
|
|
||||||
|
M: fortran-type added-c-arg-values drop { } ;
|
||||||
|
M: character-type added-c-arg-values
|
||||||
|
fix-character-type dims>> first 1array ;
|
||||||
|
|
||||||
|
GENERIC: returns-by-value? ( type -- ? )
|
||||||
|
|
||||||
|
M: fortran-type returns-by-value? drop f ;
|
||||||
|
M: number-type returns-by-value? dims>> not ;
|
||||||
|
M: complex-type returns-by-value? drop f ;
|
||||||
|
|
||||||
|
GENERIC: (fortran-ret-type>c-type) ( type -- c-type )
|
||||||
|
|
||||||
|
M: fortran-type (fortran-ret-type>c-type) (fortran-type>c-type) ;
|
||||||
|
M: real-type (fortran-ret-type>c-type) drop "double" ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: fortran-type>c-type ( fortran-type -- c-type )
|
: fortran-type>c-type ( fortran-type -- c-type )
|
||||||
parse-fortran-type (fortran-type>c-type) ;
|
parse-fortran-type (fortran-type>c-type) ;
|
||||||
|
|
||||||
: fortran-arg-type>c-type ( fortran-type -- c-type added-args ) { } ;
|
: fortran-arg-type>c-type ( fortran-type -- c-type added-args )
|
||||||
: fortran-ret-type>c-type ( fortran-type -- c-type added-args ) { } ;
|
parse-fortran-type
|
||||||
|
[ (fortran-type>c-type) c-type>pointer ]
|
||||||
|
[ added-c-args ] bi ;
|
||||||
|
: fortran-ret-type>c-type ( fortran-type -- c-type added-args )
|
||||||
|
parse-fortran-type dup returns-by-value?
|
||||||
|
[ (fortran-ret-type>c-type) { } ] [
|
||||||
|
"void" swap
|
||||||
|
[ added-c-args ] [ (fortran-ret-type>c-type) c-type>pointer ] bi prefix
|
||||||
|
] if ;
|
||||||
|
|
||||||
: fortran-sig>c-sig ( fortran-return fortran-args -- c-return c-args ) ;
|
: fortran-sig>c-sig ( fortran-return fortran-args -- c-return c-args ) ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue