comp.lang.ada
 help / color / mirror / Atom feed
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.



  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