--::::::::::
--qulpenad.ads   --       -Advanced
--::::::::::
with Queue_Lpt_Cntl.Advanced;
generic
package Queue_Lpt_En.Advanced is
   -----------------------------------------------
   -- DO NOT USE adv_lpq
      package adv_lpq is new lpq.Advanced;
   -----------------------------------------------

function Size return natural;
   -----------------------------------------------
   -- Pre  Cond  : None
   -- Post Cond  : Returns #(Queue)
   -- Exceptions : None
   -----------------------------------------------

procedure Insert (Object  : in out Object_Type;
                  Position: in     positive);
   -----------------------------------------------
   -- 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 (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 (Position: positive) return Object_Type;
   -----------------------------------------------
   -- Pre  Cond  : 1 <= Position <= #(Queue)
   --              1 = Front, #(Queue) = Rear
   -- Post Cond  : Returns Queue(Position)
   -- Exceptions : Invalid_Position
   -----------------------------------------------

procedure Poke (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_En.Advanced;