-- Demonstrates creating and calling a generic array sort with ada.text_io; use ada.text_io; with ada.float_text_io; use ada.float_text_io; with Ada.Containers.Generic_Array_Sort; use Ada.Containers; procedure generic_sort is type Flt_Array is array(Natural range <>) of Float; procedure put_line(a: Flt_Array) is begin for f of a loop put(f, 5, 1, 0); end loop; new_line; end put_line; procedure fsort is new Ada.Containers.Generic_Array_Sort( Index_Type => Natural, Element_Type => Float, Array_Type => Flt_Array); procedure revfsort is new Ada.Containers.Generic_Array_Sort( Index_Type => Natural, Element_Type => Float, Array_Type => Flt_Array, "<" => ">"); -- Use greater than for comparison to sort in reverse -- Procedure fsort uses default "<" --------------------------------------------------- type Char_Array is array(Natural range <>) of Character; procedure put_line(a: Char_Array) is begin for c of a loop put(c); end loop; new_line; end put_line; procedure sort is new Ada.Containers.Generic_Array_Sort(Natural, Character, Char_Array); --------------------------------------------------- subtype String10 is String(1 .. 10); type String_Array is array(Natural range <>) of String10; procedure put_line(a: String_Array) is begin for c of a loop put(c); end loop; new_line; end put_line; procedure sort is new Generic_Array_Sort(Natural, String10, String_Array); -- Allowed because of use Ada.Containers --------------------------------------------------- my_floats: Flt_Array(1 .. 4) := (20.0, 30.0, 10.0, 25.0); my_chars : Char_Array(1 .. 4) := ('j', 'p', 'b', 'n'); begin put_line(my_floats); revfsort(my_floats); put_line(my_floats); put_line(my_chars); sort(my_chars); put_line(my_chars); end generic_sort; -- Output -- 20.0 30.0 10.0 25.0 -- 30.0 25.0 20.0 10.0 -- jpbn -- bjnp