http://www.adaconcept.com/programs/ontozorendszeres_szimulacio/szimulacio-kert.adb
with Hiba_Kezelo;

package body Szimulacio.Kert is


  function Nem_Fu_Terv_Elemek_Szama_A_Terven return Natural is
  begin
      return Terv_Elemek_Darabszamai(Vizforras)  +
             Terv_Elemek_Darabszamai(Csovezetek) +
             Terv_Elemek_Darabszamai(Szorofej);
   end Nem_Fu_Terv_Elemek_Szama_A_Terven;


   function Szorofejek_Szama_A_Terven return Natural is
   begin
      return Terv_Elemek_Darabszamai(Szorofej);
   end Szorofejek_Szama_A_Terven;


begin

   -- elaboracios idoben, ha tehetjuk keruljuk az alprogramok hivasat, igy pontosabb forditasi hibauzeneteket kaphatunk

   Terv_Elemek_Darabszamainak_Meghatarozasa:
   begin
      for i in Terv'Range(1) loop
         for j in Terv'Range(2) loop
            Terv_Elemek_Darabszamai(Terv(i,j)) := Terv_Elemek_Darabszamai(Terv(i,j)) + 1;
         end loop;
      end loop;
   end Terv_Elemek_Darabszamainak_Meghatarozasa;


   A_Terv_Ellenorzese:
   begin
      -- a terven pontosan egy vizforras szerepelhet
      if Terv_Elemek_Darabszamai(Vizforras) /= 1 then
         Hiba_Kezelo.Program_Leallitas("A terven nem pontosan egy darab vizforras talalhato!"); -- Elaboracios idoben nekunk kell figyelnunk ra, nehogy olyan kivetel keletkezzen, amely elkeruli a Hiba_Kezelo -t. (bar ez nem minden esetben lehetseges)
      end if;
   end A_Terv_Ellenorzese;


end Szimulacio.Kert;