From: Robert Dewar <robert_dewar@my-deja.com>
Subject: Re: Enumeration representation
Date: 1999/09/10
Date: 1999-09-10T00:00:00+00:00 [thread overview]
Message-ID: <7rbvlr$257$1@nnrp1.deja.com> (raw)
In-Reply-To: 7rava6$kht@hobbes.crc.com
In article <7rava6$kht@hobbes.crc.com>,
"David C. Hoos, Sr." <david.c.hoos.sr@ada95.com> wrote:
>
> Alex <busato@newtech.it> wrote in message
> news:37D8E3BC.175DB72C@newtech.it...
> > I've written the following example program for testing
enumeration
> > represetantion clause:
> >
> > with Ada.Text_IO; use Ada.Text_IO;
> >
> >
> > procedure MainEnum is
> >
> > type Status is (a,b,c,d,e);
> > pragma Discard_Names(Status);
> >
> > for Status use
> > ( a => 0,
> > b => 20,
> > c => 400,
> > d => 800,
> > e => 1600);
> >
> > S : Status;
> > begin
> > S := b;
> > Put(" => " & S'img);
> > end MainEnum;
> >
> > I've compiled it with Gnat (the latest version)
> > the output of program is 1 but I was expecting another value
: 20.
> > Does Gnat support this clause?
> I'm not sure to which clause you refer.
>
> > Did I use this clause badly?
> >
>
> About the discard_names pragma the LRM says C.5 (7):
> If the pragma applies to an enumeration type, then the
semantics
> of the Wide_Image and Wide_Value attributes are implementation
> defined for that type; the semantics of Image and Value are
still
> defined in terms of Wide_Image and Wide_Value. In addition,
the
> semantics of Text_IO.Enumeration_IO are implementation
defined.
> If the pragma applies to a tagged type, then the semantics of
the
> Tags.Expanded_Name function are implementation defined for
that
> type. If the pragma applies to an exception, then the
semantics
> of the Exceptions.Exception_Name function are implementation
> defined for that exception.
>
> The GNAT Reference Manual is not entirely correct in what it
> states about this pragma, in that it says it is ignored. What
> really happens, is that the Image attribute returns instead
> of the image of the name, the image of the 'pos attribute.'
Well my copy of the reference manual does not say that, as I
quoted in my previous message. It is possible that versions of
the reference manual for old versions of GNAT are out of date ..
>
> To do what you want to do, you need an instance of
> Ada.Unchecked_Conversion, as demonstrated in this modification
> of your program:
>
> with Ada.Text_Io;
> use Ada.Text_Io;
> with Ada.Unchecked_Conversion;
> procedure MainEnum is
>
> type Status is (a,b,c,d,e);
> pragma Discard_Names(Status);
>
> for Status use
> ( a => 0,
> b => 20,
> c => 400,
> d => 800,
> e => 1600);
> type Status_Rep is mod 2 ** Status'Size;
>
> function Rep is new Ada.Unchecked_Conversion
> (Source => Status,
> Target => Status_rep);
>
> -- S : Status;
> begin
> for S in Status'Range loop
> Put("pos => " & S'img);
> Put_Line ("; rep =>" & Rep(S)'Img);
> end loop;
> end MainEnum;
>
> Abitavo a Milano dal 6/1963 al 11/1965, e il mio
> Italiano non e' quanto fluente come era allora ;)
>
Or, as noted in the previous post, 'Enum_Rep
Sent via Deja.com http://www.deja.com/
Share what you know. Learn what you don't.
next prev parent reply other threads:[~1999-09-10 0:00 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-09-10 0:00 Enumeration representation Alex
1999-09-10 0:00 ` Ted Dennison
1999-09-10 0:00 ` Robert Dewar
1999-09-13 0:00 ` Ted Dennison
1999-09-10 0:00 ` David C. Hoos, Sr.
1999-09-10 0:00 ` Robert Dewar [this message]
1999-09-10 0:00 ` Matthew Heaney
1999-09-10 0:00 ` Robert Dewar
1999-09-10 0:00 ` Keith Thompson
1999-09-11 0:00 ` Robert Dewar
1999-09-11 0:00 ` Keith Thompson
1999-09-12 0:00 ` Bryce Bardin
1999-09-13 0:00 ` Robert Dewar
1999-09-13 0:00 ` Keith Thompson
1999-09-13 0:00 ` Robert Dewar
1999-09-12 0:00 ` Keith Thompson
1999-09-13 0:00 ` Robert Dewar
1999-09-13 0:00 ` Keith Thompson
1999-09-14 0:00 ` Robert Dewar
1999-09-13 0:00 ` Ted Dennison
1999-09-13 0:00 ` Robert A Duff
1999-09-13 0:00 ` Robert Dewar
1999-09-13 0:00 ` Alex
-- strict thread matches above, loose matches on Subject: below --
2004-01-01 20:44 Luke A. Guest
2004-01-01 21:45 ` Stephen Leake
2004-01-01 22:01 ` Luke A. Guest
2004-01-02 1:17 ` tmoran
2004-01-02 1:29 ` Stephen Leake
2004-01-02 3:10 ` Luke A. Guest
2004-01-02 2:46 ` Robert A Duff
2004-01-02 3:12 ` Luke A. Guest
2004-01-02 13:58 ` Marin David Condic
2004-01-02 21:39 ` Pat Rogers
2004-01-03 13:42 ` Marin David Condic
2004-01-03 1:53 ` Robert A Duff
2004-01-02 20:52 ` Randy Brukardt
2004-01-02 21:05 ` Luke A. Guest
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox