comp.lang.ada
 help / color / mirror / Atom feed
* Interfaces.C questions
@ 2017-03-17 21:12 hreba
  2017-03-17 21:57 ` Niklas Holsti
                   ` (7 more replies)
  0 siblings, 8 replies; 24+ messages in thread
From: hreba @ 2017-03-17 21:12 UTC (permalink / raw)


These are my first steps with Interfaces.C:

----------------------------------------------------------------------
with Interfaces.C;

package GSL is

    package C renames Interfaces.C;

    type size_t is new C.int;
    type Real_Function is access function (x: C.double) return C.double;

    function Bessel_J0 (x: C.double) return C.double;

    function Integration_QNG
      (f: Real_Function;
       a, b, epsabs, epsrel: C.double;
       result, abserr: out C.double;
       neval: out size_t)
      return C.int;

private

    pragma Import (C, Bessel_J0,		"gsl_sf_bessel_J0");
    pragma Import (C, Integration_QNG,	"gsl_integration_qng");

end GSL;
------------------------------------------------------------------------

No problem with function Bessel_J0. But Integration_QNG gets me:

gsl.ads:19:07: functions can only have "in" parameters.

The C prototype of this function is:

int gsl_integration_qng (const gsl function * f , double a , double b ,
double epsabs , double epsrel , double * result , double * abserr , size 
t * neval )

So my questions are:

1. How do I translate C functions which return non-void and which 
additionally use pointers for out parameters? Do I have to use pointers 
in my Ada program?

2. On my platform size_t is C.int. How can I define size_t in a 
platform-independent way?

3. The C function above needs a pointer to a function as parameter. Is 
my translation to Ada correct?

-- 
Frank Hrebabetzky		+49 / 6355 / 989 5070

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2017-03-22 20:35 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-17 21:12 Interfaces.C questions hreba
2017-03-17 21:57 ` Niklas Holsti
2017-03-17 22:14 ` Jeffrey R. Carter
2017-03-17 22:24 ` Dmitry A. Kazakov
2017-03-21 21:08   ` Michael B.
2017-03-21 21:28     ` Dmitry A. Kazakov
2017-03-21 21:31     ` Simon Wright
2017-03-22 20:35       ` Randy Brukardt
2017-03-18 15:46 ` hreba
2017-03-18 16:26   ` Jeffrey R. Carter
2017-03-18 16:27   ` Jeffrey R. Carter
2017-03-19  7:03   ` Keith Thompson
2017-03-18 23:24 ` Leo Brewin
2017-03-19 12:17   ` hreba
2017-03-20  9:44     ` Leo Brewin
2017-03-19  7:00 ` Keith Thompson
2017-03-19 12:05 ` Per Sandberg
2017-03-19 18:39 ` hreba
2017-03-19 19:22   ` Simon Wright
2017-03-19 19:49     ` hreba
2017-03-19 23:53       ` Simon Wright
2017-03-20 11:12         ` hreba
2017-03-20 14:04         ` hreba
2017-03-22 11:21           ` hreba

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox