comp.lang.ada
 help / color / mirror / Atom feed
From: Matthew Heaney <matthewjheaney@earthlink.net>
Subject: Re: Idiom for a class and an object in Ada
Date: Wed, 20 Oct 2004 07:04:44 GMT
Date: 2004-10-20T07:04:44+00:00	[thread overview]
Message-ID: <uu0spvpis.fsf@earthlink.net> (raw)
In-Reply-To: xWidd.1831$%h1.1234@newsread3.news.pas.earthlink.net

Jeffrey Carter <spam@spam.com> writes:

> The Ada idiom for a singleton is package-as-object; the obvious
> extension from "single" to "a few" is a generic package.

That might have been true in Ada83, but it is not true in Ada95.

The intended Ada95 mechanism for controlling instance creation is to
declare the type as limited and indefinite, and for the package to
provide a factory function to create instances of the type.


> However, a discriminated type such as you described may well be a
> viable alternative. It's the idea that you need a family of tagged
> types, type extension, and all that entails for something this simple.

The original problem had to do with where and how to declare well-known
objects.  That problem is orthogonal to the need for type extension and
dynamic binding.

If you don't need type extension or dynamic binding, then clearly the
type doesn't need to be tagged.  See the genealogy directories in
ai302/examples at the tigris site for some examples.

Actually, I realized after I had written genealogy2 that I should have
implemented the parser like this:

package Parser is

   type Data_Type (<>) is limited private;

   function Student (Data : Data_Type) return String;
   function Advisor (Data : Data_Type) return String;
   ...

   procedure Iterate
     (Process : not null access procedure (Data : Data_Type));

...
end Parser;

Here's a case where the instances are created by the package on-the-fly,
as the passive iteration occurs.

None of the types declared in Data_Maps or Relation_Maps are tagged, but
they are all limited and indefinite.



  reply	other threads:[~2004-10-20  7:04 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-18 11:47 Idiom for a class and an object in Ada Marin David Condic
2004-10-18 12:14 ` Martin Krischik
2004-10-18 19:40   ` Matthew Heaney
2004-10-19 12:59   ` Marin David Condic
2004-10-19 14:46     ` Martin Dowie
2004-10-19 15:55       ` Matthew Heaney
2004-10-19 18:31         ` Martin Dowie
2004-10-19 15:52     ` Matthew Heaney
2004-10-18 12:26 ` Marius Amado Alves
2004-10-19  2:09   ` Jeffrey Carter
2004-10-19  3:28     ` Matthew Heaney
2004-10-19 12:53       ` Marin David Condic
2004-10-19 14:44         ` Matthew Heaney
2004-10-19 15:01           ` Dmitry A. Kazakov
2004-10-19 15:40             ` Matthew Heaney
2004-10-20  7:58               ` Dmitry A. Kazakov
2004-10-20 12:31                 ` Marin David Condic
2004-10-20 13:53                   ` Dmitry A. Kazakov
2004-10-20 15:23                   ` Matthew Heaney
2004-10-21 12:24                     ` Marin David Condic
2004-10-21 17:15                       ` Matthew Heaney
2004-10-20  5:39         ` Simon Wright
2004-10-20  7:24           ` Matthew Heaney
2004-10-20  8:39             ` Dmitry A. Kazakov
2004-10-21  1:36             ` Jeffrey Carter
2004-10-21  1:46               ` Matthew Heaney
2004-10-21  7:51                 ` Dmitry A. Kazakov
2004-10-21 12:45                   ` Matthew Heaney
2004-10-21 14:11                     ` Dmitry A. Kazakov
2004-10-22  1:04                 ` Jeffrey Carter
2004-10-22  1:36                   ` Matthew Heaney
2004-10-21 19:31               ` Kevin Cline
2004-10-21 22:02                 ` Matthew Heaney
2004-10-22  0:10                   ` Matthew Heaney
2004-10-21  8:25             ` Martin Dowie
2004-10-20 17:04           ` Matthew Heaney
2004-10-20 19:37             ` Simon Wright
2004-10-20 20:04               ` Matthew Heaney
2004-10-22  5:37                 ` Simon Wright
2004-10-20  1:10       ` Jeffrey Carter
2004-10-20  7:04         ` Matthew Heaney [this message]
2004-10-20 12:42           ` Marin David Condic
2004-10-20 12:55             ` Matthew Heaney
2004-10-20 15:27             ` Matthew Heaney
2004-10-21  1:36               ` Matthew Heaney
2004-10-19 12:38   ` Marin David Condic
2004-10-18 16:59 ` Matthew Heaney
2004-10-18 18:02 ` Martin Dowie
2004-10-19 13:06   ` Marin David Condic
2004-10-19 14:51     ` Martin Dowie
2004-10-20 16:20 ` Michael Paus
2004-10-20 17:15   ` Matthew Heaney
2004-10-20 17:55     ` Michael Paus
2004-10-21 12:33   ` Marin David Condic
  -- strict thread matches above, loose matches on Subject: below --
2004-10-21 13:59 Stephen Leake
replies disabled

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