From: Egil H H <ehh.public@gmail.com>
Subject: Re: Non-standard functions in GNAT's Ada.Containers packages?
Date: Fri, 16 Sep 2022 08:42:06 -0700 (PDT) [thread overview]
Message-ID: <7c1a505d-9214-40ba-93b7-84afad1e10a3n@googlegroups.com> (raw)
In-Reply-To: <a7171ebe-279f-4cc8-9b0d-0db197e42c0bn@googlegroups.com>
On Friday, September 16, 2022 at 5:00:29 PM UTC+2, amado...@gmail.com wrote:
> > >> "for X of M loop ... end loop".
> > >
> > > Not possible for maps.
> > but you can as
> > >https://programming-idioms.org/idiom/13/iterate-over-map-keys-and-value/1511/ada>
> >
> > with Ada.Containers.Indefinite_Hashed_Maps;
> > with Ada.Strings.Hash;
> > use Ada.Containers;
> > for C in My_Map.Iterate loop
> > Put_Line ("Key = " & Key (C) & ", Value = " & Element (C));
> > end loop;
> Thanks, but this is "in", not "of", requires cursors, and DOES NOT COMPILE, as probably needs like ten lines of boiler plate not show.
(sorry for any botched formatting...)
with Ada.Containers.Indefinite_Hashed_Maps;
with Ada.Strings.Hash;
with Ada.Text_IO;
procedure Iteration is
package My_Maps is
new Ada.Containers.Indefinite_Hashed_Maps
(String, Integer, Ada.Strings.Hash, "=");
My_Map : My_Maps.Map;
begin
My_Map.Include("One", 1);
My_Map.Include("Two", 2);
My_Map.Include("Three", 3);
for C in My_Map.Iterate loop
Ada.Text_IO.Put_Line(My_Maps.Key(C) & My_Maps.Element(C)'Image);
end loop;
for Element of My_Map loop
Ada.Text_IO.Put_Line(Element'Image);
end loop;
-- Ada_2022:
-- for (C : My_Maps.Cursor) of My_Map.Iterate loop
-- Ada.Text_IO.Put_Line(My_Maps.Key(C) & My_Maps.Element(C)'Image);
-- end loop Ada_2022;
end Iteration;
I don't know why they left out a two-parameter version of the Iterate procedure for Ada 2022 Maps,
-- for (Key, Element) of My_Map.Iterate loop
would've been nice, just like
-- for (Name, Val) of Ada.Environment_Variables.Iterate(<>) loop
next prev parent reply other threads:[~2022-09-16 15:42 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-14 12:36 Non-standard functions in GNAT's Ada.Containers packages? G.B.
2022-09-14 16:04 ` Egil H H
2022-09-15 7:13 ` G.B.
2022-09-15 14:26 ` Marius Amado-Alves
2022-09-15 15:03 ` Niklas Holsti
2022-09-15 17:11 ` Marius Amado-Alves
2022-09-15 17:22 ` Dmitry A. Kazakov
2022-09-16 16:03 ` Marius Amado-Alves
2022-09-16 16:30 ` Marius Amado-Alves
2022-09-16 17:08 ` Jere
2022-09-16 11:33 ` Björn Lundin
2022-09-16 15:00 ` Marius Amado-Alves
2022-09-16 15:42 ` Egil H H [this message]
2022-09-16 18:53 ` Björn Lundin
2022-09-16 15:47 ` Jere
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox