-- $Date: 2004/03/08 11:05:10 $
-- $Revision: 1.11 $
-- $Author: jcrocholl $
-- $Hash: dffb7dae5bfedb8fc5df0b3748912ca1 $

-- This file was automatically created with ado.php.
-- Manual changes will be lost when it is updated.

with Enum_Strings; use Enum_Strings;

package Clefs is

   type Sign_Enum is (G, F, C);
   function To_Sign_Enum is new To_Enum(Sign_Enum);

   Auto : constant := 0;

   -- Public representation.
   type Clef is limited private;

   -- Pointer to representation data.
   type Clef_Access is access all Clef;

   -- Constructor for instances.
   function Create
     (Number : in Natural;   -- The initial number.
      Sign   : in Sign_Enum-- The initial sign.
      Line   : in Integer)   -- The initial line.
     return Clef_Access;     -- The newly created clef.

   -- Accessor to read the number of a clef.
   function Get_Number
     (This : access Clef-- The clef to read from.
     return Natural;      -- The number of that clef.

   -- Accessor to read the sign of a clef.
   function Get_Sign
     (This : access Clef-- The clef to read from.
     return Sign_Enum;    -- The sign of that clef.

   function Get_Middle_C
     (This : access Clef-- The clef object instance.
     return Integer;      -- Positive is up.

   function Get_Line
     (This : access Clef-- The clef object instance.
     return Integer;      -- On which line to print the clef.

private

   -- Private representation.
   type Clef is limited record
      Number : Natural;   -- ?
      Sign   : Sign_Enum-- Visual type.
      Line   : Integer;   -- Vertical position.
   end record;

end Clefs;