--::::::::::
--qutalpad.ads   --       -Advanced
--::::::::::
with Queue_LPBase.Advanced;
generic
package Queue_Tag_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
   -------------------------------------------------

procedure Insert (Object  : in     Object_Type'Class;
                  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
   -------------------------------------------------

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

end Queue_Tag_Lpt.Advanced;