comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Is this actually possible?
Date: Wed, 11 Dec 2019 13:55:53 -0600
Date: 2019-12-11T13:55:53-06:00	[thread overview]
Message-ID: <qsrhka$iic$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 69c7677b-4aec-4db2-b240-de6b69f762b9@googlegroups.com

"Lucretia" <laguest9000@googlemail.com> wrote in message 
news:69c7677b-4aec-4db2-b240-de6b69f762b9@googlegroups.com...
> On Wednesday, 11 December 2019 17:38:40 UTC, Dmitry A. Kazakov  wrote:
>> On 2019-12-11 17:43, Lucretia wrote:
...
>> > The idea is to export an array of tagged types as a C array to either a 
>> > function or a variable / struct element. i.e.
>>
>> Ada objects of tagged types have varying size and keep tag inside. Both
>> make them utterly incompatible with C.
>
> I know this, but as the compiler let it go through, I wondered if the tag 
> would be stored elsewhere and not with the tagged type. Otherwise, 
> shouldn't the compiler complain?

I don't know of any reason that a tagged record couldn't be compatible with 
C. It's just a record with an extra component for the tag, so if an untagged 
record would be compatible, then the same tagged record would be, too. (Of 
course, C couldn't do anything with the tag.)

Many Ada compilers let one move the tag to other locations (by using a 
record rep. clause to put the other components in specific places). I don't 
believe that GNAT supports that, however. But the C could use a junk field 
to take up the space of the tag to get the representations to match.

I'm not aware of any Ada compilers that can store the tag outside of the 
record. The need for tag re-emergence makes that nearly impossible (one 
would have to prove that no one ever will convert the type to a class-wide 
type anywhere in the program before it would be safe to put the tag outside 
of the object).

One can argue about the wisdom of requiring re-emergence in these cases, but 
we're stuck it (and some people think it is a good thing).

                                Randy.



  reply	other threads:[~2019-12-11 19:55 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-11 16:43 Is this actually possible? Lucretia
2019-12-11 17:38 ` Dmitry A. Kazakov
2019-12-11 17:54   ` Lucretia
2019-12-11 19:55     ` Randy Brukardt [this message]
2019-12-11 19:58     ` Dmitry A. Kazakov
2019-12-11 21:12       ` Lucretia
2019-12-11 21:34         ` Dmitry A. Kazakov
2019-12-12  2:00           ` Randy Brukardt
2019-12-12  9:26             ` Niklas Holsti
2020-04-08 16:10             ` Alejandro R. Mosteo
2019-12-12 10:17           ` Lucretia
2019-12-12 14:32             ` Dmitry A. Kazakov
2019-12-12 15:14               ` Lucretia
2019-12-12 15:15                 ` Lucretia
2019-12-12 18:24                   ` Dmitry A. Kazakov
2019-12-12 18:30                     ` Lucretia
2019-12-12 19:09                       ` Dmitry A. Kazakov
2019-12-12 20:54                         ` Lucretia
2019-12-12 21:12                           ` Dmitry A. Kazakov
2019-12-13 11:11                             ` Lucretia
2019-12-11 19:59 ` Randy Brukardt
replies disabled

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