comp.lang.ada
 help / color / mirror / Atom feed
From: butch!rapnet!lvonrude@uunet.uu.net  (Lowell S. VonRuden x5294)
Subject: Unchecked_Conversion question
Date: 1 Sep 93 15:47:15 GMT	[thread overview]
Message-ID: <1993Sep1.154715.10498@Rapnet.Sanders.Lockheed.Com> (raw)

I am doing something that seems to work using a Verdix compiler, but I
have not been able to determine if this is something that will be safely
transportable.  Hopefully, someone here can tell me.

I have a 32 bit value coming in from an external interface as an
integer, which I am mapping to an enumeration type.  The enumeration
type has representation clauses for both size (Integer'Size) and
implementation values.  Assigning the result of an unchecked conversion
from the integer to an object of the enumeration type doesn't raise any
exception if the integer is out of range for the enumeration type
representation.  I found that if I do an explicit conversion of the
enumeration object to its type, then the range gets checked.

procedure Sample (Int : Integer) is

  type Enum is (AAA, BBB, CCC, DDD);
  for  Enum use (AAA=> 1,
                 BBB=> 2,
                 CCC=> 13,
                 DDD=> 14);
  for  Enum'Size use Integer'Size;

  function Convert is new Unchecked_Conversion (Source => Integer,
                                                Target => Enum);
begin

  E := Convert (Int);  -- no exception raised here if Int is out of range

  E := Enum (Convert (Int));  -- this does raise constraint error if
                              -- Int is out of range

end Sample;


So, is this a dependable thing to do?

-- 
--------------------------------------------------------------------
-- Usual disclaimers apply...               Lowell Von Ruden      --
-- lvonrude@rapnet.sanders.lockheed.com     Lockheed Sanders, Inc --
--------------------------------------------------------------------

             reply	other threads:[~1993-09-01 15:47 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-09-01 15:47 Lowell S. VonRuden x5294 [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-09-01 16:43 Unchecked_Conversion question dog.ee.lbl.gov!network.ucsd.edu!news.cerf.net!shrike.irvine.com!adam
1993-09-02  3:00 Robert Dewar
1993-09-02 13:38 Lowell S. VonRuden x5294
1993-09-02 15:43 dog.ee.lbl.gov!overload.lbl.gov!agate!howland.reston.ans.net!noc.near.net
1993-09-03 19:06 dog.ee.lbl.gov!agate!spool.mu.edu!umn.edu!email.sp.paramax.com!not-for-ma
1993-09-03 19:51 dog.ee.lbl.gov!agate!howland.reston.ans.net!spool.mu.edu!sdd.hp.com!netwo
1993-09-03 20:14 Wes Groleau x1240 C73-8
1993-09-03 21:55 Robert Parkhill
1993-09-04  0:13 Robert Dewar
replies disabled

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