--::::::::::
--lilpbite.ads  -- list_lpbase-Iterators
--::::::::::
generic

package List_LPBase.Iterators is

type Process_Type is access
   procedure (Object  : in out Object_Type;
              Continue: in out Boolean);

procedure Front_To_Rear (List   : in     LPList_Type;
                         Process:        Process_Type);
   ----------------------------------------------------
   --  Iterate through the list recursively performing
   --  Process on each object on the way down the structure
   --  until Continue is set to false, or until all objects
   --  are visited
   ----------------------------------------------------

procedure Rear_To_Front (List   : in     LPList_Type;
                         Process:        Process_Type);
   ----------------------------------------------------
   --  Iterate through the list recursively performing
   --  Process on each object on the way up the structure
   --  until Continue is set to false, or until all objects
   --  are visited
   ----------------------------------------------------

procedure Round_Trip (List     : in     LPList_Type;
                      Down_Proc,
                      Up_Proc  :        Process_Type);
   ----------------------------------------------------
   --  Iterate through the list recursively performing
   --  Down_Proc on each object on the way down the structure
   --  and performing Up_Proc on each object on the way back
   --  until Continue is set to false, or until all objects
   --  are visited in both directions
   ----------------------------------------------------

end List_LPBase.Iterators;