--::::::::::
--lptalpad.ads --  -Advanced
--::::::::::
with List_Pos_LPBase.Advanced;
generic
package List_Pos_Tag_Lpt.Advanced is
   ----------------------------------------------
   -- DO NOT USE adv_zqklst
      package adv_zqklst is new zqklst.Advanced;
   ----------------------------------------------

function Size_Of (List: List_Type) return integer;
   ----------------------------------------------
   -- Pre Cond : None
   -- Post Cond: returns the number of objects in the list
   -- Exception: None
   ----------------------------------------------

procedure Insert (Object  : in     Object_Type'Class;
                  Position: in     positive;
                  List    : in out List_Type);
   ----------------------------------------------
   -- Pre  Cond : 1 <= Position <= Size_Of (List)
   -- Post Cond : List'=(a ,...,a          ,Object,a        ,...,a )
   --                     1      position-1         position      n
   -- Exceptions: constraint_error
   ----------------------------------------------

procedure Remove (List    : in out List_Type;
                  Position: in     positive;
                  Object  : in out Object_Ptr);
   ----------------------------------------------
   -- Pre  Cond : 1 <= Position <= Size_Of (List)
   -- Post Cond : List'=(a ,...,a          ,a          ,...,a )
   --                     1      position-1  position+1      n
   --             Object' = List(position)
   -- Exceptions: constraint_error
   ----------------------------------------------

function Peek (List : List_Type;
               Index: positive) return Object_Ptr;
   ----------------------------------------------
   -- Pre Cond : List /= {}, 1 <= Index <= #(List)
   -- Post Cond: Returns List(Index)
   -- Exception: List_Underflow or constraint_error
   ----------------------------------------------

procedure Poke (List  : in out List_Type;
                Index : in     positive;
                Object: in     Object_Type'Class);
   ----------------------------------------------
   -- Pre Cond : 1 <= Index <= #(List)
   -- Post Cond: List(Index)' = Object
   -- Exception: constraint_error
   ----------------------------------------------

procedure Share (Source, Target: in out List_Type);

function Is_Shared (Source: List_Type) return boolean;

end List_Pos_Tag_Lpt.Advanced;