From 79c1381d198f5b4ae1b75210971a8ccea1049bad Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Wed, 26 Jul 2023 16:43:15 +1200 Subject: File_Info now a tagged type for ease of use --- src/libsndfile.adb | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) (limited to 'src/libsndfile.adb') diff --git a/src/libsndfile.adb b/src/libsndfile.adb index 6d12273..e5b76b0 100644 --- a/src/libsndfile.adb +++ b/src/libsndfile.adb @@ -280,12 +280,12 @@ package body Libsndfile is function asf_open (Path : in Interfaces.C.char_array; Mode : in Interfaces.C.int; - Sfinfo : in out File_Info) + Sfinfo : in out C_File_Info) return System.Address; pragma Import (C, asf_open, "asf_open"); function asf_format_check - (Sfinfo : in File_Info) + (Sfinfo : in C_File_Info) return Interfaces.C.int; pragma Import (C, asf_format_check, "asf_format_check"); @@ -702,14 +702,14 @@ package body Libsndfile is return File_Info is begin return This : File_Info do - This.My_Frames := 0; - This.My_Sample_Rate := Interfaces.C.int (Rate); - This.My_Channels := Interfaces.C.int (Channels); - This.My_Major := To_Cint (Major); - This.My_Minor := To_Cint (Minor); - This.My_Endian := To_Cint (Endian); - This.My_Sections := 0; - This.My_Seekable := 0; + This.Data.My_Frames := 0; + This.Data.My_Sample_Rate := Interfaces.C.int (Rate); + This.Data.My_Channels := Interfaces.C.int (Channels); + This.Data.My_Major := To_Cint (Major); + This.Data.My_Minor := To_Cint (Minor); + This.Data.My_Endian := To_Cint (Endian); + This.Data.My_Sections := 0; + This.Data.My_Seekable := 0; end return; end Create; @@ -717,58 +717,58 @@ package body Libsndfile is (Info : in File_Info) return Count_Type is begin - return Count_Type (Info.My_Frames); + return Count_Type (Info.Data.My_Frames); end Frames; function Rate (Info : in File_Info) return Natural is begin - return Natural (Info.My_Sample_Rate); + return Natural (Info.Data.My_Sample_Rate); end Rate; function Channels (Info : in File_Info) return Natural is begin - return Natural (Info.My_Channels); + return Natural (Info.Data.My_Channels); end Channels; function Major (Info : in File_Info) return Major_Format is begin - return To_Major (Info.My_Major); + return To_Major (Info.Data.My_Major); end Major; function Minor (Info : in File_Info) return Minor_Format is begin - return To_Minor (Info.My_Minor); + return To_Minor (Info.Data.My_Minor); end Minor; function Endian (Info : in File_Info) return Endianness is begin - return To_Endian (Info.My_Endian); + return To_Endian (Info.Data.My_Endian); end Endian; function Sections (Info : in File_Info) return Natural is begin - return Natural (Info.My_Sections); + return Natural (Info.Data.My_Sections); end Sections; function Seekable (Info : in File_Info) return Boolean is begin - if Info.My_Seekable = sf_false then + if Info.Data.My_Seekable = sf_false then return False; - elsif Info.My_Seekable = sf_true then + elsif Info.Data.My_Seekable = sf_true then return True; else raise Program_Error; @@ -800,7 +800,7 @@ package body Libsndfile is (File : in out Sound_File; Name : in String; Mode : in File_Mode; - Info : in out File_Info) + Info : in out File_Info'Class) is Mode_Int : Interfaces.C.int := (case Mode is when Read_Only => sfm_read, @@ -808,14 +808,14 @@ package body Libsndfile is when Read_Write => sfm_rdwr); Result : System.Address; begin - Result := asf_open (Interfaces.C.To_C (Name), Mode_Int, Info); + Result := asf_open (Interfaces.C.To_C (Name), Mode_Int, Info.Data); if Result = System.Null_Address then Raise_Error (sf_error (Result)); raise Program_Error; else File.Ptr := Result; File.FMode := Mode; - File.Chans := Info.My_Channels; + File.Chans := Info.Data.My_Channels; end if; end Open; @@ -823,7 +823,7 @@ package body Libsndfile is (Info : in File_Info) return Boolean is - Result : Interfaces.C.int := asf_format_check (Info); + Result : Interfaces.C.int := asf_format_check (Info.Data); begin if Result = sf_true then return True; -- cgit