-- $Date: 2004/03/08 11:05:10 $
-- $Revision: 1.5 $
-- $Author: jcrocholl $
-- $Hash: e2f2f6a2eedf032ee4f505576bf31d6f $

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

with Ada.Tags; use Ada.Tags;
with Notations; use Notations;
with Placements; use Placements;
with Enum_Strings; use Enum_Strings;

package Notations.Articulations is

   type Articulation_Enum is (Accent, Strong_Accent, Staccato,
     Tenuto, Detached_Legato, Staccatissimo, Spiccato, Scoop, Plop,
     Doit, Falloff, Breath_Mark, Caesura, Other_Articulation);
   function To_Articulation_Enum is new To_Enum(Articulation_Enum);

   -- Public representation.
   type Articulation is new Notation with private;

   -- Work-around for GNAT bug.
   Articulation_Tag : constant String;

   -- Pointer to representation data.
   type Articulation_Access is access all Articulation;

   -- Constructor for instances.
   function Create
     (Name      : in Articulation_Enum-- The initial name.
      Placement : in Placement_Enum)    -- The initial placement.
     return Articulation_Access;        -- The newly created articulation.

   -- Accessor to read the name of a articulation.
   function Get_Name
     (This : access Articulation-- The articulation to read from.
     return Articulation_Enum;    -- The name of that articulation.

   -- Accessor to read the placement of a articulation.
   function Get_Placement
     (This : access Articulation-- The articulation to read from.
     return Placement_Enum;       -- The placement of that articulation.

private

   -- Private representation.
   type Articulation is
     new Notation with
      record
         Name      : Articulation_Enum;
         Placement : Placement_Enum;
      end record;

   -- Work-around for GNAT bug.
   Articulation_Tag : constant String := "notations.articulations.articulation";

end Notations.Articulations;