--------------------------------------------------------------------------
-- Abstract   : This package will read the SPELL_DATA.INI file to obtain
--            : the initial processing values.  If the file cannot be
--            : read, the user of the package will have to obtain the
--            : information else where.
--------------------------------------------------------------------------
-- Parameters : Not applicable
--
--------------------------------------------------------------------------
-- Algorithm  : (An optional paragraph describing any special algorithms
--               used by the package or routine.)
--------------------------------------------------------------------------
with Machine_Dependencies, Dictionary_Manager;
package Get_User_Info is

    Number_Of_User_Dictionaries : constant := 6;

    subtype Name_Range is
       Positive range 1 .. Machine_Dependencies.Max_File_Name_Length;

    type Mode_Type is (Enabled, Disabled);

    type Dictionary_Name is
        record
            Name : String (Name_Range);
            Length : Natural := 0;
            Ptr : Dictionary_Manager.Dictionary_Ptr;
            Mode : Mode_Type := Disabled;
        end record;

    type File_Name_Type is
        record
            Name : String (Name_Range);
            Length : Natural := 0;
        end record;

    type User_Dictionaries is
       array (Positive range Positive'First .. Number_Of_User_Dictionaries) of
          Dictionary_Name;

    type Dictionary_Type is
        record
            Number_Of_Entries :
               Natural range Natural'First .. Number_Of_User_Dictionaries :=
               Natural'First;

            Names : User_Dictionaries;
            Mode : Mode_Type := Disabled;
        end record;
    type User_Info_Type is
        record
            Document : File_Name_Type;
            Corrected_Doc : File_Name_Type;
            Word_List : File_Name_Type;
            Mode : Mode_Type := Enabled;
            Master : Boolean := True;
            Acronym : Boolean := False;
            User_Dict : Dictionary_Type;
        end record;


    procedure Get_Info (User_Info : out User_Info_Type;
                        Successful : out Boolean);

    procedure Save_Info (User_Info : User_Info_Type);

    procedure Collect_User_Info (User_Info : in out User_Info_Type);

end Get_User_Info;