comp.lang.ada
 help / color / mirror / Atom feed
From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: Why constant components are not permitted ?
Date: Thu, 24 Nov 2011 20:46:13 +0100
Date: 2011-11-24T20:46:13+01:00	[thread overview]
Message-ID: <87lir5tibe.fsf@ludovic-brenta.org> (raw)
In-Reply-To: 1856c00b-1994-406a-bbb3-73d93785099a@i6g2000vbe.googlegroups.com

David Sauvage writes on comp.lang.ada:
> Hello,
>
> given the following :
>
> type Object is record
>    Tag : constant String := "key"; -- GNAT compilation failed : constant components are not permitted
> end record;
>
> In my case I find it useful to declare my Object Tag component as a
> constant, but it is not permitted, I would be interested to learn why?

Maybe because you don't need constant components.

If the purpose of a constant component is to identify the non-tagged
type of an object, then both the programmer and the compiler know the
type at compile time.

If the purpose is to identify the tagged type of an object, then the
compiler emits a tag as part of the representation of each object for
this purpose.  This tag is normally a pointer to the table of primitive
operations for the type (see ARM 3.9(3)).  The programmer can query and
use the tag, see ARM 3.9(18.1/2 and following), also indirectly through
streams, see ARM 13.13.2(31/2, 34/2).

Constants with other purposes can be declared outside the type
definition and thus shared among all objects of the declared type.

-- 
Ludovic Brenta.



  parent reply	other threads:[~2011-11-24 19:46 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-24 18:14 Why constant components are not permitted ? David Sauvage
2011-11-24 19:06 ` anon
2011-11-24 19:49   ` David Sauvage
2011-11-24 22:55     ` Georg Bauhaus
2011-11-24 23:53     ` anon
2011-11-24 19:46 ` Ludovic Brenta [this message]
2011-11-25  9:10   ` Dmitry A. Kazakov
2011-11-25 10:23     ` Ludovic Brenta
2011-11-25 10:45       ` Dmitry A. Kazakov
2011-11-25  6:56 ` Niklas Holsti
2011-11-25  9:53   ` Yannick Duchêne (Hibou57)
2011-11-25 10:06     ` AdaMagica
2011-11-25 10:16       ` AdaMagica
2011-11-25 10:56       ` Yannick Duchêne (Hibou57)
2011-11-25 17:41       ` Niklas Holsti
2011-11-26  0:23         ` anon
2011-11-29  4:10         ` Randy Brukardt
2011-11-29  7:55           ` David Sauvage
2011-11-29 10:55             ` Yannick Duchêne (Hibou57)
2011-11-29 11:17             ` Mark Lorenzen
2011-11-26 10:22       ` Pascal Obry
2011-11-26 10:59         ` Dmitry A. Kazakov
2011-11-25  7:03 ` AdaMagica
2011-11-25  9:12 ` Dmitry A. Kazakov
2011-11-25  9:57   ` Yannick Duchêne (Hibou57)
2011-11-25 10:22     ` Dmitry A. Kazakov
2011-11-25 11:00       ` Yannick Duchêne (Hibou57)
replies disabled

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