| 
 Hosted by 
   | 
 
 
 
 
 
 
 
 
with Enum_Strings; use Enum_Strings; 
 
package Keys is 
 
   type Mode_Enum is (Default, Major, Minor); 
   function To_Mode_Enum is new To_Enum(Mode_Enum); 
 
    
   type Key is limited private; 
 
    
   type Key_Access is access all Key; 
 
    
   function Create 
     (Fifths : in Integer;    
      Mode   : in Mode_Enum)  
     return Key_Access;       
 
    
   function Get_Fifths 
     (This : access Key)  
     return Integer;      
 
    
   function Get_Mode 
     (This : access Key)  
     return Mode_Enum;    
 
private 
 
    
   type Key is limited record 
      Fifths : Integer; 
      Mode   : Mode_Enum; 
   end record; 
 
end Keys; 
 |