with Ada.Containers.Indefinite_Hashed_Maps; with Ada.Strings.Fixed.Equal_Case_Insensitive; with Ada.Strings.Fixed.Hash_Case_Insensitive; generic type Element_Type (<>) is private; with function "=" (Left, Right : Element_Type) return Boolean is <>; package WL.String_Maps is pragma Preelaborate; package Maps is new Ada.Containers.Indefinite_Hashed_Maps (Key_Type => String, Element_Type => Element_Type, Hash => Ada.Strings.Fixed.Hash_Case_Insensitive, Equivalent_Keys => Ada.Strings.Fixed.Equal_Case_Insensitive, "=" => "="); type Map is new Maps.Map with null record; subtype Cursor is Maps.Cursor; function No_Element return Cursor is (Maps.No_Element); Empty_Map : constant Map := Map'(Maps.Empty_Map with null record); function Has_Element (Position : Cursor) return Boolean renames Maps.Has_Element; function Key (Position : Cursor) return String renames Maps.Key; function Element (Position : Cursor) return Element_Type renames Maps.Element; procedure Next (Position : in out Cursor) renames Maps.Next; function Next (Position : Cursor) return Cursor renames Maps.Next; end WL.String_Maps;