comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Constructing an object
Date: Sat, 24 Sep 2005 11:47:18 +0200
Date: 2005-09-24T11:47:03+02:00	[thread overview]
Message-ID: <3dachnu33lly.fpr0wvf6nj05$.dlg@40tude.net> (raw)
In-Reply-To: 5-GdnRjCgYZOfKneRVn-qw@megapath.net

On Sat, 24 Sep 2005 00:23:01 -0500, Randy Brukardt wrote:

> In Ada 200Y, access discriminants are allowed on nonlimited
> types, but they then cannot have defaults (such discriminants cannot change
> after object creation, and we needed to disallow changing them via
> assignment).

How? The type should be then abstract or unconstrained and the user should
have rather its subtype with the discriminant limited to the value.

> You also failed to mention that the object factory can be implemented
> (probably *ought* to be implemented) with the Ada 200Y
> Generic_Dispatching_Constructor. That takes a tag value and a dispatching
> function and creates an appropriate object for the tag, initialized by the
> dispatching function.

That is a good news, though it still looks like hack. Generics is used to
pass the parameters, instead of providing some native mechanism for
determining the tag, discriminants, bounds and other constraints. One
possibility could be to have for each type a predefined null-record type
having the same discriminants (tag and bounds are mapped to discriminants).
Then the object of this type could be passed to the allocator.

IMO there should be proper constructors for all types. Constructing
functions are too error-prone. Further, Ada needs extensible primitive and
class-wide operations, that could finally solve the construction /
assignment problem.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2005-09-24  9:47 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-21  8:46 Constructing an object Maciej Sobczak
2005-09-21 10:16 ` Georg Bauhaus
2005-09-22  7:21   ` Maciej Sobczak
2005-09-21 11:55 ` Dmitry A. Kazakov
2005-09-22  7:28   ` Maciej Sobczak
2005-09-22  7:45     ` Maciej Sobczak
2005-09-22 13:33       ` Dmitry A. Kazakov
2005-09-24  5:23         ` Randy Brukardt
2005-09-24  9:47           ` Dmitry A. Kazakov [this message]
2005-09-29  0:12             ` Randy Brukardt
2005-09-29  8:17               ` Dmitry A. Kazakov
2005-09-29 22:21                 ` Randy Brukardt
2005-09-30  8:14                   ` Jean-Pierre Rosen
2005-09-30 19:28                     ` Dmitry A. Kazakov
2005-09-30 17:49                   ` Robert A Duff
2005-10-01  0:44                     ` Randy Brukardt
2005-10-01 10:49                       ` Dmitry A. Kazakov
2005-10-01 11:06                       ` Tapio Kelloniemi
2005-10-01 14:13                         ` Robert A Duff
2005-10-02 11:52                           ` Tapio Kelloniemi
2005-10-01 15:19                       ` Georg Bauhaus
2005-09-23  5:40 ` Matthew Heaney
2005-09-23  7:18   ` tmoran
2005-09-23  8:23   ` Maciej Sobczak
2005-09-23 12:04     ` Dmitry A. Kazakov
2005-09-23 12:36       ` Matthew Heaney
2005-09-23 13:03         ` Hyman Rosen
2005-09-23 13:41           ` Maciej Sobczak
2005-09-23 14:23           ` Matthew Heaney
2006-01-17  6:28             ` [Offtopic] " James Dennett
2005-09-23 13:42         ` Dmitry A. Kazakov
2005-09-23 14:27           ` Matthew Heaney
2005-09-23 12:24     ` Matthew Heaney
2005-09-24  5:34       ` 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