--::::::::::
--lilpbadv.ads -- list_lpbase-Advanced
--::::::::::
generic
package List_LPBase.Advanced is
type EQ_Type is access function (L, R: Object_Type) return boolean;
function Identical (List_1, List_2: LPList_Type;
Equal: EQ_Type) return boolean;
------------------------------------------------------------------
-- Pre Cond : None
-- Post Cond: returns (#(List_1) = #(List_2), FORALL i IN 1..#(List_1)
-- List_1(i) = List_2(i)
-- Exception: None
------------------------------------------------------------------
function Size (List: LPList_Type) return integer;
------------------------------------------------------------------
-- Pre Cond : None
-- Post Cond: returns the number of objects in the list
-- Exception: None
------------------------------------------------------------------
procedure Insert (Object : in out Object_Type;
Position: in positive;
List : in LPList_Type);
---------------------------------------------------------------------
-- Pre Cond : 1 <= Position <= Size (List)
-- Post Cond : List'=(a ,...,a ,Object,a ,...,a )
-- 1 position-1 position n
-- Exceptions: constraint_error
-- NOTE: Swap used to exchange value of Object_Type
---------------------------------------------------------------------
procedure Remove (List : in LPList_Type;
Position: in positive;
Object : in out Object_Type);
---------------------------------------------------------------------
-- Pre Cond : 1 <= Position <= Size (List)
-- Post Cond : List'=(a ,...,a ,a ,...,a )
-- 1 position-1 position+1 n
-- Object' = List(position)
-- Exceptions: constraint_error
-- NOTE: Swap used to exchange value of Object_Type
---------------------------------------------------------------------
function Peek (List : LPList_Type;
Index: positive) return Object_Type;
------------------------------------------------------------------
-- Pre Cond : List /= {}, 1 <= Index <= #(List)
-- Post Cond: Returns List(Index)
-- Exception: List_Underflow or constraint_error
------------------------------------------------------------------
procedure Poke (List : in out LPList_Type;
Index : in positive;
Object: in out Object_Type);
----------------------------------------------------------------
-- Pre Cond : 1 <= Index <= #(List)
-- Post Cond: List(Index)' = Object
-- Exception: constraint_error
-- NOTE: Swap used to exchange value of Object_Type
------------------------------------------------------------------
end List_LPBase.Advanced;