http://www.adaconcept.com/programs/ontozorendszeres_szimulacio/szimulacio-ontozorendszer-elemek-cso.ads
with Szimulacio.Ontozorendszer.Csovezetek_Modell;

package Szimulacio.Ontozorendszer.Elemek.Cso is

   package Modell renames Ontozorendszer.Csovezetek_Modell;

   -- Altalaban azt ajanljak, hogy a tipusok hierarchiaja kovesse a csomagok hierarchiajat
   -- azaz egy tipus leszarmazottja a tipust tartalmazo csomag gyerekcsomagjaban legyen.
   -- de ettol neha elterunk...


   -- private / atlatszatlan tipusokkal itt nem bonyolitjuk a programot, de mashol mutatunk ra peldat.

   type Cso_Tipus is new Frissitheto_Absztrakt_Ontozorendszer_Elem_Tipus with record
      Eleje : Modell.Csovezetek_Modell_Elem_Mutato_Tipus;
      Vege  : Modell.Csovezetek_Modell_Elem_Mutato_Tipus;
   end record;

   -- overriding
   procedure Frissit(Objektum : in out Cso_Tipus);


   --
   -- T-elem
   type Ketagu_Eloszto_Cso_Tipus is new Frissitheto_Absztrakt_Ontozorendszer_Elem_Tipus with record
      Eleje :  Modell.Csovezetek_Modell_Elem_Mutato_Tipus;
      Ag1  : Modell.Csovezetek_Modell_Elem_Mutato_Tipus;
      Ag2  : Modell.Csovezetek_Modell_Elem_Mutato_Tipus;
   end record;

   -- overriding
   procedure Frissit(Objektum : in out Ketagu_Eloszto_Cso_Tipus);


   --
   -- kereszt osszekoto elem
   type Haromagu_Eloszto_Cso_Tipus is new Ketagu_Eloszto_Cso_Tipus with record
      Ag3  : Modell.Csovezetek_Modell_Elem_Mutato_Tipus;
   end record;

   -- overriding
   procedure Frissit(Objektum : in out Haromagu_Eloszto_Cso_Tipus);


   --
   -- kereszt osszekoto elem a vizforrashoz (abban az esetben hasznaljuk, ha a vizforras nem a kert szelen van)
   type Negyagu_Eloszto_Cso_Tipus is new Haromagu_Eloszto_Cso_Tipus with record
      Ag4  : Modell.Csovezetek_Modell_Elem_Mutato_Tipus;
   end record;

   -- overriding
   procedure Frissit(Objektum : in out Negyagu_Eloszto_Cso_Tipus);


end Szimulacio.Ontozorendszer.Elemek.Cso;