--:::::::::: --lipolpad.ads -- List_Pos_LPBase-Advanced --:::::::::: generic package List_Pos_LPBase.Advanced is type EQ_Type is access function (L, R: Object_Type) return boolean; function Equivalent (List_1, List_2: LPList_Type; EQ: 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_Of (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 out LPList_Type); --------------------------------------------------------------------- -- Pre Cond : 1 <= Position <= Size_Of (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 out LPList_Type; Position: in positive; Object : in out Object_Type); --------------------------------------------------------------------- -- Pre Cond : 1 <= Position <= Size_Of (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 ------------------------------------------------------------------ procedure Share (Source, Target: in out LPList_Type); function Is_Shared (Source: LPList_Type) return boolean; end List_Pos_LPBase.Advanced;