--::::::::::
--stlpcnad.ads -- -Advanced
--::::::::::
with Stack_LPBase.Advanced;
generic
package Stack_Lpt_Cntl.Advanced is
------------------------------------------------------
-- WARNING: Do not use adv_LPS
package adv_LPS is new LPS.Advanced;
------------------------------------------------------
subtype EQ_Type is adv_LPS.EQ_Type;
-- access
-- function (L, R: Object_Type) return boolean;
function Size_Of (Stack: Stack_Type) return natural;
---------------------------------------------------------------------
-- Pre Cond : None
-- Post Cond : Returns a count of the number of object in the stack
-- Exceptions : None
---------------------------------------------------------------------
function Equal (Stack_1, Stack_2: Stack_Type;
EQ : EQ_Type) return boolean;
---------------------------------------------------------------------
-- Pre Cond : None
-- Post Cond : Return true iff the stacks are identical
-- Exceptions : None
---------------------------------------------------------------------
function Peek (Stack : Stack_Type;
Position: positive) return Object_Type;
---------------------------------------------------------------------
-- Pre Cond : 1 <= Position <= Size_Of (Stack)
-- 1 = top, Size_Of (Stack) = bottom
-- Post Cond : Returns Stack(Position)
-- Exceptions : Invalid_Position
---------------------------------------------------------------------
procedure Poke (Stack : in out Stack_Type;
Position: in positive;
Object : in out Object_Type);
---------------------------------------------------------------------
-- Pre Cond : 1 <= Position <= Size_Of (Stack)
-- 1 = top, Size_Of (Stack) = bottom
-- Post Cond : Stack(Position)' = Object
-- Exceptions : Invalid_Position
-- NOTE: Swap used to exchange value of Object_Type
---------------------------------------------------------------------
procedure Insert (Object : in out Object_Type;
Position: in positive;
Stack : in out Stack_Type);
---------------------------------------------------------------------
-- Pre Cond : 1 <= Position <= Size_Of (Stack)
-- Post Cond : Stack'=(a ,...,a ,Object,a ,...,a )
-- 1 position-1 position n
-- Exceptions: Invalid_Position
-- NOTE: Swap used to exchange value of Object_Type
---------------------------------------------------------------------
procedure Remove (Stack : in out Stack_Type;
Position: in positive;
Object : in out Object_Type);
---------------------------------------------------------------------
-- Pre Cond : 1 <= Position <= Size_Of (Stack)
-- Post Cond : Stack'=(a ,...,a ,a ,...,a )
-- 1 position-1 position+1 n
-- Object' = Stack(position)
-- Exceptions: Invalid_Position
-- NOTE: Swap used to exchange value of Object_Type
---------------------------------------------------------------------
end Stack_Lpt_Cntl.Advanced;