From: Georg Bauhaus <rm.dash-bauhaus@futureapps.de>
Subject: Re: discriminant questions
Date: Tue, 20 Sep 2011 09:29:04 +0200
Date: 2011-09-20T09:29:05+02:00 [thread overview]
Message-ID: <4e7840c1$0$7608$9b4e6d93@newsspool1.arcor-online.net> (raw)
In-Reply-To: <be4ed937-6444-463a-8893-daa84e1fa6b6@n40g2000yqb.googlegroups.com>
On 19.09.11 19:49, ytomino wrote:
> -- "count" algorithm with Ada 2005 version
> generic
> type Element_Type (<>) is private;
> type Cursor is private;
> type Container is private;
> package Iterator_Interfaces is
> new Ada.Iterator_Interfaces (Cursor, others => <>);
> with function Iterate (C : Container)
> return Iterator_Interfaces.Forward_Iterator'Class;
> type Constant_Reference_Type (
> Element : not null access constant Element_Type) with private;
> <- *B*
> with function Constant_Reference (C : Container; P : Cursor)
> return Constant_Reference_Type;
> procedure Generic_Count (C : Container; Value : Element_Type) return
> Count_Type;
>
> There is no way to use a instance of Vectors.Constant_Reference_Type
> as *B*.
(I have taken the liberty of choosing name `Iterator` for
formal function `Iterate`, since a different `Iterate` is
already taken by the container packages.)
function Generic_Count
(C : Container;
Value : Element_Type)
return Ada.Containers.Count_Type
is
use type Ada.Containers.Count_Type;
Sum : Ada.Containers.Count_Type := 0;
-- overall result
procedure Use_CRefT (Wrap : Constant_Reference_Type) is
begin
if Wrap.Element.all = Value then
Sum := Sum + 1;
end if;
end Use_CRefT;
procedure Search (Position : Cursor) is
Element_To_Be_Pointed_At : Constant_Reference_Type
renames Constant_Reference (C, Position);
begin
Use_CRefT(Element_To_Be_Pointed_At);
end Search;
Star : Iterator_Interfaces.Forward_Iterator'Class := Iterator (C);
Pos : Cursor;
begin
Pos := Iterator_Interfaces.First (Star);
while Pos /= Iterator_Interfaces.No_Element loop
Search (Pos);
Pos := Iterator_Interfaces.Next (Star, Pos);
end loop;
return Sum;
end Generic_Count;
I think, though, that Query_Element will obviate the need for the
wrapping pointer types; not sure I understand why you want them.
Is this influenced by a 1:1 transport of C++ STL algorithms?
I wonder whether the C++ STL would be different if C++ could use
proper nesting or in case it had drawn more attention to function
objects.
next prev parent reply other threads:[~2011-09-20 7:29 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-17 16:30 discriminant questions ytomino
2011-09-17 17:19 ` Dmitry A. Kazakov
2011-09-17 17:46 ` ytomino
2011-09-17 19:41 ` Dmitry A. Kazakov
2011-09-17 22:55 ` ytomino
2011-09-18 8:50 ` Dmitry A. Kazakov
2011-09-18 10:54 ` ytomino
2011-09-18 11:35 ` Dmitry A. Kazakov
2011-09-18 12:41 ` ytomino
2011-09-18 13:17 ` Dmitry A. Kazakov
2011-09-18 16:22 ` ytomino
2011-09-18 16:32 ` ytomino
2011-09-18 18:15 ` Dmitry A. Kazakov
2011-09-18 23:44 ` ytomino
2011-09-19 7:27 ` Dmitry A. Kazakov
2011-09-18 14:43 ` Dmitry A. Kazakov
2011-09-18 16:46 ` Robert A Duff
2011-09-18 18:01 ` Dmitry A. Kazakov
2011-09-18 19:20 ` Maciej Sobczak
2011-09-19 7:39 ` Dmitry A. Kazakov
2011-09-19 20:00 ` Maciej Sobczak
2011-09-20 7:33 ` Dmitry A. Kazakov
2011-09-20 15:45 ` Maciej Sobczak
2011-09-20 16:48 ` Dmitry A. Kazakov
2011-09-20 20:19 ` Maciej Sobczak
2011-09-21 7:48 ` Dmitry A. Kazakov
2011-09-21 20:51 ` Maciej Sobczak
2011-09-22 8:07 ` Dmitry A. Kazakov
2011-09-22 20:57 ` Maciej Sobczak
2011-09-23 7:59 ` Dmitry A. Kazakov
2011-09-23 10:57 ` Georg Bauhaus
2011-09-23 22:30 ` Randy Brukardt
2011-09-23 22:50 ` Randy Brukardt
2011-09-24 6:46 ` Dmitry A. Kazakov
2011-09-26 22:48 ` Randy Brukardt
2011-09-27 8:10 ` Dmitry A. Kazakov
2011-09-27 10:18 ` Georg Bauhaus
2011-09-27 12:14 ` Dmitry A. Kazakov
2011-09-27 15:11 ` Georg Bauhaus
2011-09-27 15:38 ` Dmitry A. Kazakov
2011-09-27 18:06 ` Georg Bauhaus
2011-09-27 19:06 ` Dmitry A. Kazakov
2011-09-29 0:01 ` Georg Bauhaus
2011-09-29 8:26 ` Dmitry A. Kazakov
2011-09-30 1:24 ` Randy Brukardt
2011-09-30 8:10 ` Dmitry A. Kazakov
2011-09-30 10:07 ` Georg Bauhaus
2011-09-30 12:38 ` Dmitry A. Kazakov
2011-09-30 17:40 ` Georg Bauhaus
2011-09-30 18:55 ` Dmitry A. Kazakov
2011-09-23 9:23 ` Stephen Leake
2011-09-23 9:48 ` Dmitry A. Kazakov
2011-09-23 22:42 ` Randy Brukardt
2011-09-24 6:56 ` Dmitry A. Kazakov
2011-09-26 22:43 ` Randy Brukardt
2011-09-24 10:47 ` Stephen Leake
2011-09-24 12:54 ` Simon Wright
2011-09-24 14:46 ` Dmitry A. Kazakov
2011-09-24 16:21 ` Simon Wright
2011-09-24 16:43 ` Dmitry A. Kazakov
2011-09-22 2:52 ` Randy Brukardt
2011-09-22 8:11 ` Dmitry A. Kazakov
2011-09-20 0:01 ` Randy Brukardt
2011-09-20 7:38 ` Dmitry A. Kazakov
2011-09-20 11:11 ` AdaMagica
2011-09-20 12:09 ` Dmitry A. Kazakov
2011-09-20 12:31 ` AdaMagica
2011-09-20 12:57 ` Dmitry A. Kazakov
2011-09-20 23:28 ` ytomino
2011-09-21 5:03 ` AdaMagica
2011-09-21 8:08 ` Dmitry A. Kazakov
2011-09-21 10:03 ` Georg Bauhaus
2011-09-21 10:29 ` Dmitry A. Kazakov
2011-09-22 3:21 ` Randy Brukardt
2011-09-22 3:05 ` Randy Brukardt
2011-09-19 23:35 ` Randy Brukardt
2011-09-20 21:39 ` ytomino
2011-09-22 3:32 ` Randy Brukardt
2011-09-18 16:32 ` ytomino
2011-09-19 14:46 ` ytomino
2011-09-19 15:14 ` Dmitry A. Kazakov
2011-09-19 17:49 ` ytomino
2011-09-20 7:29 ` Georg Bauhaus [this message]
2011-09-20 19:50 ` ytomino
2011-09-20 8:08 ` Dmitry A. Kazakov
2011-09-20 18:47 ` ytomino
2011-09-21 8:16 ` Dmitry A. Kazakov
2011-09-21 9:55 ` ytomino
2011-09-22 3:26 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox