with Interfaces.C.Strings; use Interfaces.C.Strings;
with Ada.Text_IO; use Ada.Text_IO;
package body gsl is
function gsl_strerror
(gsl_errno : int) return Interfaces.C.Strings
.chars_ptr -- ../gsl/gsl_errno.h:83
with
Import => True,
Convention => C,
External_Name => "gsl_strerror";
function Error (errno : int) return String is
begin
return Value (gsl_strerror (errno));
end Error;
function To_Ada
(c : double_array; len : size_t)
return Ada.Numerics.Long_Real_Arrays.Real_Vector
is
av : Ada.Numerics.Long_Real_Arrays.Real_Vector (1 .. Integer (len));
begin
for i in 1 .. Integer (len) loop
av (i) := Long_Float (c (i - 1));
end loop;
return av;
end To_Ada;
procedure To_C
(a : Ada.Numerics.Long_Real_Arrays.Real_Vector; c : out double_array;
len : out size_t)
is
begin
len := a'Length;
for ar in a'Range loop
c (ar - 1) := double (a (ar));
end loop;
end To_C;
procedure Sep is
begin
Put (" ; ");
end Sep;
end gsl;