From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,514627f9964b6e38 X-Google-Attributes: gid103376,public From: mheaney@ni.net (Matthew Heaney) Subject: Re: Using the GNAT defined attribute: 'Enum_Rep Date: 1997/09/08 Message-ID: #1/1 X-Deja-AN: 270848822 References: <97082719523509@psavax.pwfl.com> <340D6C5D.2E53@pseserv3.fw.hac.com> <34145CCF.377F@pseserv3.fw.hac.com> Organization: Estormza Software Newsgroups: comp.lang.ada Date: 1997-09-08T00:00:00+00:00 List-Id: In article <34145CCF.377F@pseserv3.fw.hac.com>, "W. Wesley Groleau x4923" wrote: >Whoa! Communication breakdown. I said "is this true?" to someone's >claim that the ABSENCE of an enum-rep-clause, makes the representation >the same as the 'pos. For most CPUs, making the internal rep. >the same as 'pos is probably the simplest and most efficient >approach. But please cite LRM-83 or LRM-95 if it is illegal for >a compiler, given > > type Enum is (Zero, One, Two, Three, Four, Five, Six, Seven ); > >(with no rep-clause), please cite LRM-83 or LRM-95 if it is >illegal for an implementation to internally use > > for Enum use (Zero => 2#00000001#, > One => 2#00000010#, > Two => 2#00000100#, > Three => 2#00001000#, > Four => 2#00010000#, > Five => 2#00100000#, > Six => 2#01000000#, > Seven => 2#10000000# ); The rule changed in Ada 95. In Ada 83, the RM had nothing to say about the representation of enumeration values, but every known implementation used the same as T'Pos, so they made that the reference-manual-defined default representation for Ada 95. RM95 13.4 (8) states "For nonboolean enumeration types, if the coding is not specified for the type, then for each value of the type, the internal code shall be equal to its position number." Therefore, your example is legal in Ada 83, and illegal in Ada 95. -------------------------------------------------------------------- Matthew Heaney Software Development Consultant (818) 985-1271