1. -- 
  2. --  Uwe R. Zimmer, Australia, September 2011 
  3. -- 
  4.  
  5. package body Generic_Id_Generator_Sequential is 
  6.  
  7.    Current_Id : Integer := Integer (Id_Range'First) - 1; 
  8.  
  9.    function Set_Id return Id_Range is 
  10.  
  11.    begin 
  12.       Current_Id := Current_Id + 1; 
  13.       if Current_Id <= Integer (Id_Range'Last) then 
  14.          return Id_Range (Current_Id); 
  15.       else 
  16.          raise Out_Of_Ids; 
  17.       end if; 
  18.    end Set_Id; 
  19.  
  20. end Generic_Id_Generator_Sequential;