From: Natasha Kerensikova <lithiumcat@gmail.com>
Subject: Re: Dispatching callback handed over to C
Date: Sat, 7 Apr 2012 08:55:49 +0000 (UTC)
Date: 2012-04-07T08:55:49+00:00 [thread overview]
Message-ID: <slrnjo007l.1lme.lithiumcat@sigil.instinctive.eu> (raw)
In-Reply-To: jll327$i0i$1@munin.nbi.dk
On 2012-04-05, Randy Brukardt <randy@rrsoftware.com> wrote:
> In particular, we're talking about the mapping of C to Ada here, and not the
> underlying design of the C API (which is out of our control anyway). The
> question is how to map "void *" to Ada?
>
> 1) Some convention C access type designating an appropriate Ada type.
>
> 2) Some convention C access type designating a dummy Ada type (use
> unchecked_conversion as needed on the real types).
What I'm still struggling with is why do I have to settle for #2, or
what is preventing me from going for #1?
type Callback_Access is access all Event_Callback'Class;
pragma Convention (C, Callback_Access);
Using Callback_Access in a subprogram imported from C trigged the
following GNAT warning:
>>> warning: "Imported_Subprogram.Arg" involves a tagged type
which does not correspond to any C type
I guess since it's "only" a warning, I could just silence. However I
can't bring myself to silence something I don't understand.
If it's only about the fact that Callback_Access is a C pointer to an
object with which C subprograms has no way for dealing properly, then
fine (since in that particular case C code considers it as an opaque
pointer).
However it's worded like "warning: you're mixing C and Ada", to which
I'm tempted to answer "breaking news ! writing a binding involves mixing
two languages", but that would be rude and there is no point in telling
a compiler things in a human language anyway.
On the other hand, solution #2 allows the import package to not know
about Event_Callback type, and potentially be used with other Ada
callback implementation.
Thanks for your insights,
Natasha
next prev parent reply other threads:[~2012-04-07 8:55 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-03 7:19 Dispatching callback handed over to C Natasha Kerensikova
2012-04-03 9:04 ` Brian Drummond
2012-04-03 9:21 ` Thomas Locke
2012-04-03 9:37 ` Maciej Sobczak
2012-04-03 12:02 ` Natasha Kerensikova
2012-04-03 14:42 ` Maciej Sobczak
2012-04-03 20:20 ` Randy Brukardt
2012-04-04 7:26 ` Georg Bauhaus
2012-04-04 7:56 ` Natasha Kerensikova
2012-04-04 19:28 ` Randy Brukardt
2012-04-05 8:59 ` Natasha Kerensikova
2012-04-05 21:04 ` Randy Brukardt
2012-04-04 19:55 ` Simon Wright
2012-04-04 11:34 ` Maciej Sobczak
2012-04-04 19:16 ` Randy Brukardt
2012-04-05 7:28 ` Maciej Sobczak
2012-04-05 21:32 ` Randy Brukardt
2012-04-07 8:55 ` Natasha Kerensikova [this message]
2012-04-07 11:32 ` Simon Wright
2012-04-07 13:28 ` Robert A Duff
2012-04-05 9:13 ` Natasha Kerensikova
2012-04-05 21:06 ` Randy Brukardt
2012-04-06 7:30 ` Maciej Sobczak
2012-04-06 11:41 ` Simon Wright
2012-04-10 7:15 ` Maciej Sobczak
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox