
with GWindows; use GWindows;
with Interfaces; use Interfaces;

package GProfileConfig is

   type enProfile_Type is (User_Profile, System_Progile);
   type Byte_Array is array ( Integer range <> ) of aliased Unsigned_8;

   function Is_Byte_Array_Empty(baData : Byte_Array) return Boolean;

   function GetRegistryKey return GString;
   procedure SetRegistryKey( sRegistryKey : GString );
   function GetProfileName return GString;
   procedure SetProfileName( sProfileName : GString );

   function GetConfigBinary(
                            sSection, sEntry : GString;
                            eProfile : enProfile_Type := User_Profile
                           )
                            return Byte_Array;

   procedure WriteConfigBinary(
                               sSection, sEntry : GString;
                               baData : Byte_Array;
                               eProfile : enProfile_Type := User_Profile
                              );

   function GetConfigInt(
                         sSection, sEntry : GString;
                         nDefault : Integer := 0;
                         eProfile : enProfile_Type := User_Profile
                        )
                         return Integer;

   procedure WriteConfigInt(
			       sSection, sEntry : GString;
			       nValue : Integer;
			       eProfile : enProfile_Type := User_Profile
			      );

   function GetConfigInt64(
			   sSection, sEntry : GString;
			   nDefault : Integer_64 := 0;
			   eProfile : enProfile_Type := User_Profile
			  )
			   return Integer_64;

   procedure WriteConfigInt64(
			      sSection, sEntry : GString;
			      nValue : Integer_64;
			      eProfile : enProfile_Type := User_Profile
			     );

   function GetConfigString(
			    sSection, sEntry : GString;
			    sDefault : GString := "";
			    eProfile : enProfile_Type := User_Profile
			   )
			    return GString;

   procedure WriteConfigString(
			       sSection, sEntry : GString;
			       sValue : GString;
			       eProfile : enProfile_Type := User_Profile
			      );

end GProfileConfig;

