-- 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;