From: "Matthew Heaney" <matthew_heaney@acm.org>
Subject: Re: Enumeration representation
Date: 1999/09/10
Date: 1999-09-10T00:00:00+00:00 [thread overview]
Message-ID: <37d9061a@news1.prserv.net> (raw)
In-Reply-To: 37D8E3BC.175DB72C@newtech.it
In article <37D8E3BC.175DB72C@newtech.it> , Alex <busato@newtech.it> wrote:
> 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);
Why did you use Discard_Names?
> for Status use
> ( a => 0,
> b => 20,
> c => 400,
> d => 800,
> e => 1600);
>
> S : Status;
> begin
> S := b;
> Put(" => " & S'img);
The image of literal B is of course "B". But I don't know what 'Img will
return if you also use pragma Discard_Names.
> end MainEnum;
>
> I've compiled it with Gnat (the latest version)
> the output of program is 1 but I was expecting another value : 20.
GNAT seems to be displaying the value of T'Pos.
You want to underlying representation. If so, you'll have use
Unchecked_Conversion to convert the literal to an integer, and then display
that.
An alternative is to use the GNAT-specific attribute 'Enum_Rep (I think
that's what it's called).
But if you really want to display 20, then why did you use an enumeration
type at all? Why not do this:
type Status_Type is range 0 .. 1600;
A : constant Status_Type := 0;
B : constant Status_Type := 20; -- 20 or 200?
C : constant Status_Type := 400;
D : constant Status_Type := 800;
E : constant Status_Type := 1600;
This is more or less equivalent to what you had using an enumeration type.
The difference is that Status_Type'Image (B) returns " 20", which is what
you wanted.
> Does Gnat support this clause?
The pragma Discard_Names? Look in Annex M of the GNAT User's Guide or
Reference Manual.
Why do you need that pragma anyway? Do you have some storage restrictions?
> Did I use this clause badly?
I think so. Give us some more specific information about what you're trying
to do.
> Thank you very much,
You're very welcome.
Matt
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 ` 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-10 0:00 ` Matthew Heaney [this message]
1999-09-10 0:00 ` Robert Dewar
1999-09-10 0:00 ` David C. Hoos, Sr.
1999-09-10 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