1. with Ada.Real_Time;                     use Ada.Real_Time; 
  2.  
  3. package Processes is 
  4.  
  5.     type Process is limited interface; 
  6.     type A_Process is access all Process'Class; 
  7.  
  8.     -- Returns a name string identifying the process. 
  9.     function Get_Process_Name( this : access Process ) return String is abstract; 
  10.  
  11.     -- Executes one frame of the process. 'upTime' is the amount of time the 
  12.     -- process manager has been running (real time since start, not execution 
  13.     -- time.) 'dt' is the difference in time since the previous execution frame. 
  14.     procedure Tick( this : access Process; upTime, dt : Time_Span ) is abstract; 
  15.  
  16. end Processes;