-- Simple.adb -- Example of using an ordered map in Ada. --with Ada.Strings.Hash; with Ada.Containers.Ordered_Maps; with Ada.Text_Io; with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; procedure Simple is function Equivalent_Key (Left, Right : Unbounded_String) return Boolean is begin return Left = Right; end Equivalent_Key; function "<"(Left, Right: in Unbounded_String) return Boolean is begin return Ada.Strings.Unbounded.To_String(Left) < Ada.Strings.Unbounded.To_String(Right); end "<"; package My_Map is new Ada.Containers.Ordered_Maps( Key_Type => Unbounded_String,Element_Type => Unbounded_String); -- Equivalent_Keys => Equivalent_Key); type String_Array is array(Positive range <>) of Unbounded_String; MyMap : My_Map.Map; Key_List : String_Array := (To_Unbounded_String("foo"), To_Unbounded_String("bar"), To_Unbounded_String("val")); Element_List : String_Array := (To_Unbounded_String("little"), To_Unbounded_String("miss"), To_Unbounded_String("muffet")); begin for I in Key_List'range loop MyMap.Insert(Key => (Key_List(I)), New_Item => (Element_List(I))); end loop; for I in Key_List'range loop Ada.Text_Io.Put_Line(To_String(Key_List(I)) & " => " & To_String(MyMap.Element(Key_List(I)))); end loop; end Simple;