(fortran-result>) ( type -- quots )

Vocabulary
alien.fortran.private

Inputs
typean object
Outputs
quotsan object
DefinitionMethods
USING: alien.c-types alien.data alien.fortran
alien.fortran.private io.encodings.ascii kernel strings ;
M: character-type (fortran-result>)
fix-character-type single-char?
[ { [ char deref 1string ] } ]
[ { [ ] [ ascii alien>nstring ] } ] if ;

USING: alien.complex alien.fortran.private kernel ;
M: double-complex-type (fortran-result>)
[ drop { [ *complex-double ] } ] result?dims ;

USING: alien.c-types alien.data alien.fortran.private kernel ;
M: double-precision-type (fortran-result>)
[ drop { [ double deref ] } ] result?dims ;

USING: accessors alien.fortran alien.fortran.private combinators
;
M: integer-type (fortran-result>)
[
size>> {
{ f [ { ~quotation~ } ] }
{ 1 [ { ~quotation~ } ] }
{ 2 [ { ~quotation~ } ] }
{ 4 [ { ~quotation~ } ] }
{ 8 [ { ~quotation~ } ] }
[ invalid-fortran-type ]
} case
] result?dims ;

USING: alien.fortran.private arrays generic kernel math
sequences ;
M: logical-type (fortran-result>)
[
M\ logical-type (fortran-result>) (call-next-method)
first [ zero? not ] append 1array
] result?dims ;

USING: alien.fortran.private kernel ;
M: misc-type (fortran-result>) drop { [ ] } ;

USING: accessors alien.fortran alien.fortran.private combinators
;
M: real-complex-type (fortran-result>)
[
size>> {
{ f [ { ~quotation~ } ] }
{ 8 [ { ~quotation~ } ] }
{ 16 [ { ~quotation~ } ] }
[ invalid-fortran-type ]
} case
] result?dims ;

USING: accessors alien.fortran alien.fortran.private combinators
;
M: real-type (fortran-result>)
[
size>> {
{ f [ { ~quotation~ } ] }
{ 4 [ { ~quotation~ } ] }
{ 8 [ { ~quotation~ } ] }
[ invalid-fortran-type ]
} case
] result?dims ;