comp.lang.ada
 help / color / mirror / Atom feed
From: Matthew Heaney <matthewjheaney@earthlink.net>
Subject: Re: Usage of Interfaces with Ada 95
Date: Mon, 29 Sep 2003 22:56:53 GMT
Date: 2003-09-29T22:56:53+00:00	[thread overview]
Message-ID: <u3cefgq26.fsf@earthlink.net> (raw)
In-Reply-To: x7vr81zxslf.fsf@smaug.pushface.org

Simon Wright <simon@pushface.org> writes:

> The STL means something quite like "designator of one end of a
> half-open range".
> 
> I am not a C++ speaker, but
> 
>   for (i = cont.start(); i != cont.oneAfterTheEnd(); i++)
> 
> is *not* the way the GoF, or Grady, describe it.

I disagree that this is any different.  Let's rewrite the generic
algorithm that I posted earlier, to use Simon's preferred syntax:

   generic
      type IT is private;
      with function Succ (I : IT) return IT is <>;
      with procedure Process (I : IT) is <>;
      with function Is_Done (I : IT) return Boolean is <>;
   procedure Generic_Algorithm (First : in IT);

Now let's use the a Charles list (say) to instantiate the Simon
algorithm:

   procedure Op (List : in List_Subtype) is

      procedure Process (I : IT) is ...;

      function Is_Done (I : IT) return Boolean is
      begin
         return I /= Back (List);
      end;

      procedure Algorithm is
        new Generic_Algorithm (IT, Succ, Process, Is_Done);
   begin
      Algorithm (First (List));
   end;

It's equivalent to what I showed yesterday.  There is no difference
between "STL" iterator and "Booch" iterator, except for syntax.

In fact you could easily convert Grady's active iterator implementation
of p. 158 to use Stepanov syntax, by simply declaring a constant of type
Iterator (equal to null internally) and providing an equality operator
for Iterator.

It's all the same.



  reply	other threads:[~2003-09-29 22:56 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-26 16:36 Usage of Interfaces with Ada 95 Michael Erdmann
2003-09-26 16:50 ` chris
2003-09-26 16:55 ` Hyman Rosen
2003-09-26 19:10   ` Michael Erdmann
2003-09-26 20:37     ` Hyman Rosen
2003-09-27 15:05       ` Michael Erdmann
2003-09-28  2:11         ` Matthew Heaney
2003-09-29  2:25         ` George Shapovalov
2003-09-28  2:14   ` Matthew Heaney
2003-09-28  8:28     ` Michael Erdmann
2003-09-28 14:33       ` Matthew Heaney
2003-09-28 15:09         ` Michael Erdmann
2003-09-28 21:50           ` Matthew Heaney
2003-09-30  4:57             ` Michael Erdmann
2003-09-30 10:02               ` Mário Amado Alves
2003-09-30 12:31               ` Matthew Heaney
2003-09-30 19:58                 ` Michael Erdmann
2003-09-28 17:10         ` Simon Wright
2003-09-28 21:52           ` Matthew Heaney
2003-09-28 21:58           ` Matthew Heaney
2003-09-29 19:37             ` Georg Bauhaus
2003-09-29 19:45               ` Georg Bauhaus
2003-09-30  7:10               ` Preben Randhol
2003-09-29 20:11             ` Simon Wright
2003-09-29 22:56               ` Matthew Heaney [this message]
2003-09-30 14:53                 ` Matthew Heaney
2003-09-30 16:13                   ` Preben Randhol
2003-09-29 13:49           ` Matthew Heaney
2003-09-28 18:22       ` Robert I. Eachus
2003-09-29  3:02         ` Hyman Rosen
2003-09-30  3:11           ` Robert I. Eachus
2003-09-30 13:38             ` Hyman Rosen
2003-09-30 21:46               ` Robert I. Eachus
2003-09-30 22:10                 ` Hyman Rosen
2003-10-01  2:30                   ` Robert I. Eachus
2003-10-01  2:41                   ` Robert I. Eachus
2003-10-01 13:21                     ` Hyman Rosen
2003-10-01 17:01                       ` Robert I. Eachus
2003-10-01 18:46                       ` Matthew Heaney
2003-09-29 14:52       ` Stephen Leake
2003-09-29 23:00         ` Matthew Heaney
2003-09-30 12:49           ` Marin David Condic
2003-09-30 23:48             ` Matthew Heaney
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox