From: ka@socrates.hr.att.com (Kenneth Almquist)
Subject: Re: Valid Attribute and Unchecked Conversion
Date: 1996/10/07
Date: 1996-10-07T00:00:00+00:00 [thread overview]
Message-ID: <539un2$mha@nntpa.cb.lucent.com> (raw)
In-Reply-To: DyqAKA.DJn@thomsoft.com
kst@thomsoft.com (Keith Thompson) writes:
> RM95-13.9.1(12) says:
>
> A call to an imported function or an instance of
> Unchecked_Conversion is erroneous if the result
> is scalar, and the result object has an invalid
> representation.
[snip]
> So, suppose I have a sparse enumeration type:
>
> type Enum is (Ten, Twenty, Thirty);
> for Enum use (10, 20, 30);
> for Enum'Size use 8;
>
> and a corresponding integer type:
>
> type Int_Type is range 0 .. 31;
> for Int_Type'Size use 8;
>
> Given an arbitrary value of type Int_Type, is there any non-erroneous
> way to get the corresponding Enum value if there is one, or raise
> an exception if there isn't? By "corresponding", I mean 10 => Ten,
> 20 => Twenty, 30 => Thirty.
Do an unchecked conversion to a nonscalar type.
-- Convert Int_Type to Enum, raising constraint error if the result is
-- invalid.
function To_Enum(I : Int_Type) return Enum is
type Wrapped_Enum is record
Value : Enum;
end record;
for Wrapped_Enum'size use Enum'size;
function To_Wrapped_Enum is new
Ada.Unchecked_Conversion(Int_Type, Wrapped_Enum);
W : Wrapped_Enum;
begin
W := To_Wrapped_Enum(I);
if W.Value'valid then
return W.Value;
else
raise Constraint_Error;
end if;
end To_Enum;
next prev parent reply other threads:[~1996-10-07 0:00 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-09-22 0:00 Rules for Representation of Subtypes Matthew Heaney
1996-09-23 0:00 ` David C. Hoos, Sr.
1996-09-23 0:00 ` Robert A Duff
1996-09-23 0:00 ` Samuel T. Harris
1996-09-26 0:00 ` David C. Hoos, Sr.
1996-09-24 0:00 ` Robert Dewar
1996-09-26 0:00 ` Keith Thompson
1996-09-26 0:00 ` Matthew Heaney
1996-09-27 0:00 ` Robert A Duff
1996-09-27 0:00 ` Robert Dewar
1996-09-27 0:00 ` Robert Dewar
1996-09-27 0:00 ` Robert A Duff
1996-09-24 0:00 ` Robert Dewar
1996-09-23 0:00 ` Robert A Duff
1996-09-24 0:00 ` Matthew Heaney
1996-09-26 0:00 ` Robert A Duff
1996-09-26 0:00 ` Larry Kilgallen
1996-09-27 0:00 ` Robert A Duff
1996-09-27 0:00 ` Mark A Biggar
1996-09-30 0:00 ` Robert A Duff
1996-10-01 0:00 ` Larry Kilgallen
1996-10-01 0:00 ` Samuel Tardieu
1996-10-01 0:00 ` Ken Garlington
1996-10-01 0:00 ` Valid Attribute and Unchecked Conversion Matthew Heaney
1996-10-02 0:00 ` Robert A Duff
1996-10-04 0:00 ` Keith Thompson
1996-10-04 0:00 ` Matthew Heaney
1996-10-07 0:00 ` Robert Dewar
1996-10-09 0:00 ` Keith Thompson
1996-10-04 0:00 ` Robert A Duff
1996-10-04 0:00 ` Robert Dewar
1996-10-11 0:00 ` Norman H. Cohen
1996-10-12 0:00 ` Robert Dewar
1996-10-06 0:00 ` Keith Thompson
1996-10-07 0:00 ` Robert Dewar
1996-10-09 0:00 ` Keith Thompson
1996-10-07 0:00 ` Ken Garlington
1996-10-08 0:00 ` Alan Brain
1996-10-07 0:00 ` Kenneth Almquist [this message]
1996-10-07 0:00 ` Robert Dewar
1996-10-10 0:00 ` Ken Garlington
1996-10-11 0:00 ` Robert Dewar
1996-10-14 0:00 ` Ken Garlington
1996-10-14 0:00 ` Keith Thompson
1996-10-01 0:00 ` Rules for Representation of Subtypes Robert A Duff
1996-09-28 0:00 ` Larry Kilgallen
1996-09-29 0:00 ` Robert A Duff
1996-09-29 0:00 ` Matthew Heaney
1996-09-30 0:00 ` Robert A Duff
1996-09-30 0:00 ` Robert Dewar
1996-09-30 0:00 ` Matthew Heaney
1996-09-29 0:00 ` Larry Kilgallen
1996-09-29 0:00 ` Matthew Heaney
1996-09-30 0:00 ` Robert A Duff
1996-10-01 0:00 ` Ken Garlington
1996-10-02 0:00 ` Robert A Duff
1996-10-02 0:00 ` Ken Garlington
1996-10-06 0:00 ` Robert Dewar
1996-10-03 0:00 ` Robert Dewar
1996-10-02 0:00 ` Valid Attribute and Unchecked Conversion Robert I. Eachus
1996-10-02 0:00 ` Matthew Heaney
1996-10-02 0:00 ` George Haddad
1996-10-03 0:00 ` John Herro
1996-10-04 0:00 ` Karl Cooper {46901}
1996-10-07 0:00 ` Mark A Biggar
1996-10-08 0:00 ` Robert Dewar
1996-10-05 0:00 ` Robert Dewar
1996-10-06 0:00 ` Keith Thompson
1996-10-14 0:00 ` Robert A Duff
1996-09-27 0:00 ` Rules for Representation of Subtypes Matthew Heaney
1996-09-27 0:00 ` Robert A Duff
-- strict thread matches above, loose matches on Subject: below --
1996-10-03 0:00 Valid Attribute and Unchecked Conversion Franco Mazzanti
1996-10-04 0:00 Franco Mazzanti
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox