http://www.adaconcept.com/programs/ontozorendszeres_szimulacio/szimulacio-ontozorendszer-elemek-szorofej.adb
with Ada.Text_IO;
with Szimulacio.Ontozorendszer.Megjelenito.Muveletek;
with System.Address_Image; -- Megfigyeleshez / teszteleshez
package body Szimulacio.Ontozorendszer.Elemek.Szorofej is
package Megjelenito_Muveletek renames Szimulacio.Ontozorendszer.Megjelenito.Muveletek;
function Megjelenit(Objektum : Szorofej_Tipus) return Megjelenito.String_Tomb_Tipus is
begin
return (01 => Megjelenito_Muveletek.Stringbe_Masol("Aktiv: " & Boolean'Image(Objektum.Szor)));
end Megjelenit;
procedure Inicializal (Objektum : in out Szorofej_Tipus) is
begin
-- a nezeti konverzio nem hoz letre objektumot, figyeljuk meg a cimeket
Ada.Text_IO.Put_Line("Szorofej inicializalas");
Ada.Text_IO.Put_Line("Az Objektum cime konvertalas elott: " & System.Address_Image(Objektum'Address));
Ada.Text_IO.Put_Line("Az Objektum cime konvertalas utan: " & System.Address_Image(Megjelenitheto_Absztrakt_Tipus(Objektum)'Address));
Megjelenito_Muveletek.Regisztral("Szorofej: ", Megjelenitheto_Absztrakt_Tipus(Objektum)'Unchecked_Access);
end Inicializal;
procedure Frissit (Objektum : in out Szorofej_Tipus) is
use type Modell.Cso_Allapot_Tipus;
begin
-- NAGYON FONTOS TERVEZESI ELV! + [*]
-- Fontos a "masolas", kulonben az utemezese elromolhat a szimulatornak...
-- ...elofordulhatna, hogy egy iteracioval korabban ertesulnenek a hasznalo kodok arrol, hogy szor -e az Objektum vagy nem
case Objektum.Csovezetek_Elem.all is
when Modell.Van_Benne_Viz => Objektum.Szor := True;
when Modell.Ures => Objektum.Szor := False;
end case;
end Frissit;
function Beallit(Azonosito : Terv.Valodi_Reszletpont_Azonosito_Tipus;
Vizforrastol_Mert_Tavolsag : Natural;
Csovezetek_Elem : Modell.Csovezetek_Modell_Elem_Mutato_Tipus) return Szorofej_Tipus is
begin
return (Frissitheto_Absztrakt_Tipus with
Azonosito => Azonosito,
Vizforrastol_Mert_Tavolsag => Vizforrastol_Mert_Tavolsag,
Csovezetek_Elem => Csovezetek_Elem,
Szor => False);
end Beallit;
function Szor(Objektum : Szorofej_Tipus) return Boolean is
begin
return Objektum.Szor; -- [*] rendkivul fontos, hogy itt ne kozvetlenul a Modell-bol ("osztott memoriabol") olvassunk
end Szor;
end Szimulacio.Ontozorendszer.Elemek.Szorofej;