-- $Date: 2004/03/08 11:05:10 $
-- $Revision: 1.20 $
-- $Author: jcrocholl $
-- $Hash: 15326d76940e505439888f58ef7532f9 $

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

with Lists;
with Parts; use Parts;
with Works; use Works;
with Identifications; use Identifications;

with Strings; use Strings;

package Scores is

   package Part_Lists is new Lists(Part_Access);
   subtype Part_List is Part_Lists.List;
   subtype Part_List_Access is Part_Lists.List_Access;

   -- Public representation.
   type Score is limited private;

   -- Pointer to representation data.
   type Score_Access is access all Score;

   -- Constructor for instances.
   function Create
     return Score_Access-- The newly created score.

   -- Mutator to update the work of a score.
   procedure Set_Work
     (This : access Score;    -- The score to be updated.
      Work : in Work_Access); -- The new work of that score.

   -- Accessor to read the work of a score.
   function Get_Work
     (This : access Score-- The score to read from.
     return Work_Access;   -- The work of that score.

   -- Mutator to update the movement number of a score.
   procedure Set_Movement_Number
     (This            : access Score-- The score to be updated.
      Movement_Number : in String);   -- The new movement number of that score.

   -- Accessor to read the movement number of a score.
   function Get_Movement_Number
     (This : access Score-- The score to read from.
     return String;        -- The movement number of that score.

   -- Mutator to update the movement title of a score.
   procedure Set_Movement_Title
     (This           : access Score-- The score to be updated.
      Movement_Title : in String);   -- The new movement title of that score.

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

   -- Mutator to update the identification of a score.
   procedure Set_Identification
     (This           : access Score;              -- The score to be updated.
      Identification : in Identification_Access); -- The new identification of that score.

   -- Accessor to read the identification of a score.
   function Get_Identification
     (This : access Score)         -- The score to read from.
     return Identification_Access-- The identification of that score.

   -- Accessor to read the parts of a score.
   function Get_Parts
     (This : access Score)    -- The score to read from.
     return Part_List_Access-- The parts of that score.

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

private

   -- Private representation.
   type Score is limited record
      Work            : Work_Access;
      Movement_Number : String_Access;
      Movement_Title  : String_Access;
      Identification  : Identification_Access;
      Parts           : Part_List_Access;
   end record;

end Scores;