comp.lang.ada
 help / color / mirror / Atom feed
From: Jeff Carter <jrcarter001@my-deja.com>
Subject: Re: Unchecked_Conversion on different sized types -- problem?
Date: 2000/01/14
Date: 2000-01-14T00:00:00+00:00	[thread overview]
Message-ID: <85lso9$t80$1@nnrp1.deja.com> (raw)
In-Reply-To: qXpf4.429$dw3.15200@news.wenet.net

In article <qXpf4.429$dw3.15200@news.wenet.net>,
  "Mike Silva" <mjsilva@jps.net> wrote:
> To do some prototyping I'm extending Michael Feldman's ANSI screen
package a
> bit, to allow colors, etc, and I ran into a question.  I've enumerated
> various attributes and set the enumerations to the corresponding ANSI
codes,
> and I'm using UC to convert the enumerated types to an Integer, to
send via
> Text_IO.Put().  I get a warning (GNAT 3.12p) that the types for the
UC have
> different sizes (not surprising), and I'm wondering if UC always does
the
> "right" thing here, i.e. zero-extending the smaller enum type when
> converting to an Integer.
>
> Here are some (reduced) relevant code bits:
>
> type T is ( BLACK, WHITE );
>
> for T use ( BLACK => 30, WHITE => 37 );
>
> function T_to_int is new Unchecked_Conversion( T, Integer );
>
> T_val : T := BLACK;
>
> Text_IO.Put( Item => T_to_int( T_val )...

Text_Io works for Character and String, but not for Integer, so I'm
curious how you get this to work. Perhaps what you want is a conversion
from T to String, and you're using an intermediate Integer value to
obtain this, in which case a set of String constants seems to be the
easiest way to achieve this. Perhaps internally you would like to
declare (assuming a with and use of Ada.Strings.Unbounded)

type Conversion_List is array (T) of Unbounded_String:

Convert : constant Conversion_List :=
(Black => To_Unbounded_String ("30"), ...);

Text_Io.Put (Convert (Formal_Parameter_Of_Type_T) );

and get rid of the representation clause.

>
> So, is T_to_int going to give me 30, as opposed to, say, all 32 bits
> starting at the address of T_val?  Can somebody tell me where in the
LRM it
> talks about this?
>
> (It works "as expected" in this case, but I'm wondering what the
rules are)

ARM 13.9(11) says this is implementation defined.

--
Jeff Carter
"Now go away or I shall taunt you a second time."
-- Monty Python and the Holy Grail


Sent via Deja.com http://www.deja.com/
Before you buy.




  parent reply	other threads:[~2000-01-14  0:00 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-01-13  0:00 Unchecked_Conversion on different sized types -- problem? Mike Silva
2000-01-13  0:00 ` reason67
2000-01-13  0:00 ` Jim Rogers
2000-01-13  0:00   ` Mike Silva
2000-01-13  0:00     ` James S. Rogers
2000-01-13  0:00 ` Bryce Bardin
2000-01-13  0:00   ` Mike Silva
2000-01-13  0:00     ` Mike Silva
2000-01-14  0:00       ` Bryce Bardin
2000-01-14  0:00         ` Mike Silva
2000-01-14  0:00   ` Matthew Heaney
2000-01-14  0:00 ` Wrap-Up (was Re: Unchecked_Conversion on different sized types -- problem?) Mike Silva
2000-01-15  0:00   ` Matthew Heaney
2000-01-15  0:00     ` Robert A Duff
2000-01-14  0:00 ` Unchecked_Conversion on different sized types -- problem? Werner Pachler
2000-01-14  0:00   ` reason67
2000-01-14  0:00   ` Bryce Bardin
2000-01-14  0:00 ` Vladimir Olensky
2000-01-14  0:00 ` Jeff Carter [this message]
2000-01-14  0:00 ` Keith Thompson
2000-01-16  0:00   ` David A. Cobb
replies disabled

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