--:::::::::: --heaplpba.ads -- Heap_LPBase --:::::::::: -- Copyright (c) 1991, 1992, 1993, 1994, 1995 -- John Beidler -- Computing Sciences Dept. -- Univ. of Scranton, Scranton, PA 18510 -- beidler@guinness.cs.uofs.edu generic type Object_Type is limited private; with procedure Initialize (Object: in out Object_Type); with procedure Finalize (Object: in out Object_Type); with procedure Swap (Source, Target : in out Object_Type); with function ">=" ( Parent, Child : Object_Type) return boolean ; package Heap_LPBase is type Heap_Type (Max_Size : positive) is private ; Heap_Underflow: exception; Heap_Overflow : exception; procedure Initialize (Heap: in out Heap_Type); procedure Finalize (Heap: in out Heap_Type); procedure Insert (Heap : in out Heap_Type; Object : in out Object_Type); ----------------------------------------------------- -- Pre Cond : Size_Of (Heap) < Heap.Max_Heap_Size -- Post Cond: Object is sifted into Heap -- Exception: Heap_Overflow ----------------------------------------------------- procedure Remove_Root (Heap : in out Heap_Type ; Object : in out Object_Type ); ----------------------------------------------------- -- Pre Cond : Heap is not empty -- Post Cond: Root of Heap place in Object -- and Heap is reordered -- Exception: Heap_Underflow. ----------------------------------------------------- -- SELECTORS function Empty ( Heap: Heap_Type ) return boolean; ----------------------------------------------------- -- Returns true if Heap is empty. ----------------------------------------------------- function No_Of_Objects ( Heap: Heap_Type) return natural; ----------------------------------------------------- -- Returns the count of the number of objects in the -- Heap. ----------------------------------------------------- -- function Are_Equal (Heap_1, Heap_2 : Heap_Type) return boolean ; private type Heap_array is array (positive range <>) of Object_Type ; type Heap_Pntr is access Heap_Array; type Heap_Type (Max_Size : positive) is record Size : natural := 0 ; Data : Heap_Pntr; end record ; end Heap_LPBase;