http://www.adaconcept.com/programs/reprezentacio/unchecked_conversion_es_a_modulo_tipus_hasznalata.adb
-- Rotter Gyorgy
with Ada.Text_IO;
with Ada.Unchecked_Conversion;
with Bit_Szintu_Muveletek;
procedure unchecked_conversion_es_a_modulo_tipus_hasznalata is
type Felsorolasi_Tipus is (A_allas, B_allas, Atmenet);
for Felsorolasi_Tipus use (A_allas => 2#001#,
B_allas => 2#010#,
Atmenet => 2#100#);
for Felsorolasi_Tipus'Size use 8;
f : Felsorolasi_Tipus := A_allas;
type Modulo_8_Tipus is mod 2**8-1;
procedure Bitenkent_Kiir is new Bit_Szintu_Muveletek.Bitenkent_Kiir(Tipus => Felsorolasi_Tipus,
Kiir => Ada.Text_IO.Put'Access);
function Felsorolasi_Tipussa_Alakit is new Ada.Unchecked_Conversion(Source => Modulo_8_Tipus,
Target => Felsorolasi_Tipus);
Egy : constant Modulo_8_Tipus := 2#001#;
Ketto : constant Modulo_8_Tipus := 2#010#;
begin
Ada.Text_IO.Put_Line("Program indul");
f := Felsorolasi_Tipussa_Alakit(Egy or Ketto); -- bitenkenti or muvelet... (a 3 nem egy "ertelmezheto ertek" !!!)
Bitenkent_Kiir(f);
Ada.Text_IO.New_Line;
if f'Valid then -- leelenorizzuk, hogy az f erteke ertelmezheto e
Ada.Text_IO.Put_Line("f = " & Felsorolasi_Tipus'Image(f));
else
Ada.Text_IO.Put_Line("A valtozo erteke nem ertelmezheto tipusertekkent!");
end if;
Ada.Text_IO.Put_Line("Program vege");
end unchecked_conversion_es_a_modulo_tipus_hasznalata;