--::::::::::
--qulplpad.ads -- -Advanced
--::::::::::
with Queue_LPBase.Advanced;
generic
package Queue_Lpt_Lpt.Advanced is
-----------------------------------------------
-- DO NOT USE adv_lpq
package adv_lpq is new lpq.Advanced;
-----------------------------------------------
function Size (Queue: Queue_Type) return natural;
-----------------------------------------------
-- Pre Cond : None
-- Post Cond : Returns #(Queue)
-- Exceptions : None
-----------------------------------------------
subtype Eq_Type is adv_lpq.EQ_Type;
-- access function (L,R:Object_Type) return boolean;
function Eq (Queue_1, Queue_2: Queue_Type;
Eq: Eq_Type) return boolean;
-----------------------------------------------
-- Pre Cond : None
-- Post Cond : Returns (#(Queue_1) = #(Queue_2),
-- FORALL i IN #(Queue_1), Queue_1(i)=Queue_2(i))
-- Exceptions : None
-----------------------------------------------
procedure Insert (Object : in out Object_Type;
Position: in positive;
Queue : in out Queue_Type);
-----------------------------------------------
-- Pre Cond : 1 <= Position <= Size (Queue)
-- Post Cond : Queue'=(a ,...,a ,Object,a ,...,a )
-- 1 position-1 position n
-- Exceptions: Invalid_Position
-- NOTE: Swap used to exchange value of Object_Type
-----------------------------------------------
procedure Remove (Queue : in out Queue_Type;
Position: in positive;
Object : in out Object_Type);
-----------------------------------------------
-- Pre Cond : 1 <= Position <= Size (Queue)
-- Post Cond : Queue'=(a ,...,a ,a ,...,a )
-- 1 position-1 position+1 n
-- Object' = Queue(position)
-- Exceptions: Invalid_Position
-- NOTE: Swap used to exchange value of Object_Type
-----------------------------------------------
function Peek (Queue : Queue_Type;
Position: positive ) return Object_Type;
-----------------------------------------------
-- Pre Cond : 1 <= Position <= #(Queue)
-- 1 = Front, #(Queue) = Rear
-- Post Cond : Returns Queue(Position)
-- Exceptions : Invalid_Position
-----------------------------------------------
procedure Poke (Queue : in out Queue_Type;
Position: in positive;
Object : in out Object_Type);
-----------------------------------------------
-- Pre Cond : 1 <= Position <= #(Queue)
-- 1 = Front, #(Queue) = Rear
-- Post Cond : Object' = Queue(Position)
-- Exceptions : Invalid_Position
-- NOTE: Swap used to exchange value of Object_Type
-----------------------------------------------
end Queue_Lpt_Lpt.Advanced;