with Ada.Numerics.Generic_Complex_Types; -- See section G.1.1 Complex Types. pragma Elaborate_All(Ada.Numerics.Generic_Complex_Types); package Interfaces.Fortran is pragma Pure(Fortran);
type Fortran_Integer is range implementation-defined;
type Real is digits implementation-defined; type Double_Precision is digits implementation-defined;
type Logical is new Boolean;
package Single_Precision_Complex_Types is
new Ada.Numerics.Generic_Complex_Types (Real);
type Complex is new Single_Precision_Complex_Types.Complex;
subtype Imaginary is Single_Precision_Complex_Types.Imaginary; i : Imaginary renames Single_Precision_Complex_Types.i; j : Imaginary renames Single_Precision_Complex_Types.j;
type Character_Set is implementation-defined character type;
type Fortran_Character is
array (Positive range <>) of Character_Set;
pragma Pack (Fortran_Character);
function To_Fortran (Item : in Character) return Character_Set; function To_Ada (Item : in Character_Set) return Character;
function To_Fortran (Item : in String) return Fortran_Character; function To_Ada (Item : in Fortran_Character) return String;
procedure To_Fortran (Item : in String;
Target : out Fortran_Character;
Last : out Natural);
procedure To_Ada (Item : in Fortran_Character;
Target : out String;
Last : out Natural);
end Interfaces.Fortran;
NOTES
with Interfaces.Fortran; use Interfaces.Fortran; procedure Ada_Application is
type Fortran_Matrix is array
(Integer range <>,
Integer range <>) of Double_Precision;
pragma Convention (Fortran, Fortran_Matrix);
-- stored in Fortran's column-major order
procedure Invert
(Rank : in Fortran_Integer;
X : in out Fortran_Matrix);
pragma Import (Fortran, Invert);
-- a Fortran subroutine
Rank : constant Fortran_Integer := 100; My_Matrix : Fortran_Matrix (1 .. Rank, 1 .. Rank);
begin
... My_Matrix := ...; ... Invert (Rank, My_Matrix); ...
end Ada_Application;
Go to the first, previous, next, last section, table of contents.