with Ada.Calendar; use Ada.Calendar; with Ada.Unchecked_Deallocation; package Gmface.Gm_Common is type String_Access is access all String; procedure Free is new Ada.Unchecked_Deallocation(String, String_Access); Time_Unit_Max : constant Positive := 64; Time_Number_Max : constant Positive := 32; Time_Index_Max : constant Positive := Time_Unit_Max * Time_Number_Max; subtype Time_Index_Type is Positive range Positive'First .. Time_Index_Max; subtype Extended_Time_Index_Type is Natural range 0 .. Time_Index_Max; subtype Time_Number_Type is Time_Index_Type range Time_Index_Type'First..Time_Number_Max; Number_Default : constant Time_Number_Type := Time_Number_Type'Last / 2; subtype Time_Unit_Type is Time_Index_Type range Time_Index_Type'First .. Time_Unit_Max; Unit_Default : constant Time_Unit_Type := Time_Unit_Type'Last / 4; type Time_Signature_Type is record Number : Time_Number_Type := Number_Default; Unit : Time_Unit_Type := Unit_Default; end record; type Tempo_Type is delta 0.1 digits 4 range 1.0..240.0; function Integer_Image (Value : in Integer) return String; procedure Difference_In_Years(Top_Date : in Time; Bot_Date : in Time; Years : out Natural; Months : out Natural; Days : out Natural; Houres : out Natural; Minutes : out Natural; Second : out Natural; Rest : out Duration); end Gmface.Gm_Common;