diff options
Diffstat (limited to 'example/info_list.adb')
-rw-r--r-- | example/info_list.adb | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/example/info_list.adb b/example/info_list.adb new file mode 100644 index 0000000..5dcdcf0 --- /dev/null +++ b/example/info_list.adb @@ -0,0 +1,74 @@ + + +-- Programmed by Jedidiah Barber +-- Released into the public domain + +-- This program displays information about all available libao drivers + + +with + + Ada.Characters.Latin_1, + Ada.Strings.Fixed, + Ada.Text_IO, + Libao; + +use type + + Libao.Output_Kind; + + +procedure Info_List is + + package Latin renames Ada.Characters.Latin_1; + package Str renames Ada.Strings; + package TIO renames Ada.Text_IO; + + function "*" + (Left : in Natural; + Right : in Character) + return String + renames Ada.Strings.Fixed."*"; + + My_Information : Libao.Info_Array := Libao.Driver_Info_List; + +begin + + TIO.Put_Line ("libao driver information"); + TIO.New_Line; + + TIO.Put_Line ("Is big endian: " & Boolean'Image (Libao.Is_Big_Endian)); + TIO.Put_Line ("Number of drivers:" & Integer'Image (My_Information'Length)); + TIO.Put_Line ("Default driver:" & Libao.Driver_ID_Number'Image (Libao.Default_Driver_ID)); + TIO.New_Line; + + for Item of My_Information loop + TIO.Put_Line (36 * '-' & " Driver ID #" & Str.Fixed.Trim + (Libao.Driver_ID_Number'Image (Libao.Driver_ID (Item.Short_Name)), Str.Left)); + + TIO.Put_Line ("Kind: " & Libao.Output_Kind'Image (Item.Kind)); + TIO.Put_Line ("Name: " & Item.Name); + TIO.Put_Line ("Short name: " & Item.Short_Name); + TIO.Put_Line ("Preferred byte format: " & + Libao.Endianness'Image (Item.Preferred_Byte_Format)); + TIO.Put_Line ("Priority Level:" & Positive'Image (Item.Priority_Level)); + TIO.Put_Line ("Comment: " & Item.Comment); + + if Item.Kind = Libao.File_Output then + TIO.Put_Line ("File extension: " & Libao.File_Extension + (Libao.Driver_ID (Item.Short_Name))); + end if; + + TIO.Put_Line ("Option count:" & Integer'Image (Item.Option_Count)); + for Index in Integer range 1 .. Item.Option_Count loop + TIO.Put_Line (Latin.HT & "#" & Str.Fixed.Trim (Integer'Image (Index), Str.Left) & + " " & Item.Option_Key (Index)); + end loop; + + TIO.Put_Line (46 * '-'); + TIO.New_Line; + end loop; + +end Info_List; + + |