-- $Date: 2003/12/26 10:11:36 $
-- $Revision: 1.9 $
-- $Author: jcrocholl $

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

with Lists;
with Parts;

with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
package Scores is

   -- Type for instance variables.
   type Score is private;

   -- Constructor for instances.
   function Create
     (Title          : in String-- The initial title.
      Movement_Name  : in String-- The initial movement name.
      Movement_Title : in String-- The initial movement title.
     return Score;                -- The newly created score.

   -- Accessor to read the title of a score.
   function Get_Title
     (This : in Score-- The score to read from.
     return String;    -- The title of that score.

   -- Accessor to read the movement name of a score.
   function Get_Movement_Name
     (This : in Score-- The score to read from.
     return String;    -- The movement name of that score.

   -- Accessor to read the movement title of a score.
   function Get_Movement_Title
     (This : in Score-- The score to read from.
     return String;    -- The movement title of that score.

   -- Add a part to the score. No duplicate checking is performed.
   procedure Add_Part
     (This : in Score;       -- The score object instance.
      Part : in Parts.Part); -- The part to be added.

private

   package Part_Lists is new Lists(Parts.Part);
   subtype Part_List is Part_Lists.List;

   -- Private representation.
   type Score_Record is record
      Title          : Unbounded_String;
      Movement_Name  : Unbounded_String;
      Movement_Title : Unbounded_String;
      Parts          : Part_List;
   end record;

   -- Pointer to representation data.
   type Score is access Score_Record;

end Scores;