with Gmface.Gm_Common;                  use Gmface.Gm_Common;
with Gmface.Gm_MIDI.Instruments;        use Gmface.Gm_MIDI.Instruments;
with Gmface.Gm_Virtual;                 use Gmface.Gm_Virtual;
with Gmface.Gm_Virtual.Gmface.Gmface_Plugins;
use Gmface.Gm_Virtual.Gmface.Gmface_Plugins;
with Gmface.Gm_Processing.Gm_Common;    use Gmface.Gm_Processing.Gm_Common;

with Gmface.Gm_Processing.Gm_Plugins;   use Gmface.Gm_Processing;

with Ada.Calendar;                      use Ada.Calendar;
with Interfaces.C;                      use Interfaces.C;
package Gmface.Gm_Processing.Gmface.Gm_Plugin_Processing is
   
   type Plugin_Processing(Class : Plugin_Enum);
   
   
   
   type Plugin_Processing(Class : Plugin_Enum) is abstract new Gm_Plugins.Gm_Plugin_Processing with
      record	 
	 
	 null;
      end record;
   
   
   procedure Initialize(Plugin_Process : in Plugin_Processing; Options : in Work_Options_access) is abstract;
   procedure Start(Plugin_Process : in Plugin_Processing'Class; Start_Time : in Time; Tempo : in Tempo_Type; Signature : in Time_Signature_Type) is abstract;
   procedure Stop(Plugin_Process : in Plugin_Processing'Class) is abstract;
   procedure Halt(Plugin_Process : in Plugin_Processing'Class) is abstract;
end Gmface.Gm_Processing.Gmface.Gm_Plugin_Processing;