-- $Date: 2004/03/08 11:05:10 $
-- $Revision: 1.4 $
-- $Author: jcrocholl $
-- $Hash: e6f920d36ab321eb1a234de84b7187cf $

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

with Ada.Tags; use Ada.Tags;
with Placements; use Placements;
with Music; use Music;
with Dir_Types; use Dir_Types;

package Music.Directions is

   -- Public representation.
   type Direction is new Music_Data with private;

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

   -- Pointer to representation data.
   type Direction_Access is access all Direction;

   -- Constructor for instances.
   function Create
     (Placement : in Placement_Enum-- The initial placement.
     return Direction_Access;        -- The newly created direction.

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

   -- Mutator to update the dir type of a direction.
   procedure Set_Dir_Type
     (This     : access Direction;    -- The direction to be updated.
      Dir_Type : in Dir_Type_Access); -- The new dir type of that direction.

   -- Accessor to read the dir type of a direction.
   function Get_Dir_Type
     (This : access Direction-- The direction to read from.
     return Dir_Type_Access;   -- The dir type of that direction.

   -- Mutator to update the offset of a direction.
   procedure Set_Offset
     (This   : access Direction-- The direction to be updated.
      Offset : in Integer := 0); -- The new offset of that direction.

   -- Accessor to read the offset of a direction.
   function Get_Offset
     (This : access Direction-- The direction to read from.
     return Integer;           -- The offset of that direction.

private

   -- Private representation.
   type Direction is
     new Music_Data with
      record
         Placement : Placement_Enum;
         Dir_Type  : Dir_Type_Access;
         Offset    : Integer := 0;
      end record;

   -- Work-around for GNAT bug.
   Direction_Tag : constant String := "music.directions.direction";

end Music.Directions;