--::::::::::
--quPTENAD.ADS   --       -Advanced
--::::::::::
with Queue_Pt_Cntl.Advanced;
generic
package Queue_Pt_En.Advanced is
   ---------------------------------------------
   -- DO NOT USE adv_que
      package adv_que is new que.Advanced;
   ---------------------------------------------

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

procedure Insert (Object  : in     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
   ---------------------------------------------

procedure Remove (Position: in     positive;
                  Object  :    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
   ---------------------------------------------

function Peek (Position: in     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     Object_Type);
   ---------------------------------------------
   -- Pre  Cond  : 1 <= Position <= #(Queue)
   --              1 = Front, #(Queue) = Rear
   -- Post Cond  : Object' = Queue(Position)
   -- Exceptions : Invalid_Position
   ---------------------------------------------

end Queue_Pt_En.Advanced;