comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Limited use for limited with?
Date: Wed, 29 Sep 2010 15:41:00 +0200
Date: 2010-09-29T15:41:00+02:00	[thread overview]
Message-ID: <ndudsadae4ra$.1kb2ts0trz0v0.dlg@40tude.net> (raw)
In-Reply-To: bcd0524a-7f12-4325-a9cc-aad473e719db@d17g2000yqm.googlegroups.com

On Wed, 29 Sep 2010 05:22:59 -0700 (PDT), Maciej Sobczak wrote:

> On 29 Wrz, 11:16, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> wrote:
> 
>> I see no unsafety. References are maintained by the object itself. It is
>> the safest possible way. [I presume that the scope of the list heads
>> encloses ones of the objects.]
> 
> This would create circular dependency between Object and Registry's
> internals.

You add one derived type to either of the hierarchies and that breaks the
dependency. You have to with or without access types. The dependency is
here, the "limited with" kludge does not remove it.

> That is, Registry refers to Object (to fulfill the design
> objective) and Object refers to Registry (to implement the automatic
> unregistration). Yuck.

Object would call a class-wide operation of Registry from its Finalize.

> Note also that Object is an interface.

I customary derive first abstract root type if I forced to use interfaces
(I dislike interfaces).

> I don't control the concrete
> implementation - in particular I don't implement the factory
> (constructor function).

You declare the factory function abstract to be implemented by derived
types.

> Similarly, I don't implement the finalizer and I don't even want to
> impose Controlled on the concrete type - that would not only expose
> implementation mess in the public API, but also prevent me from using
> interfaces. Good bye multiple inheritance, for example.

That should be decided for each concrete case. Something close to MI could
be achieved by using storage pools. But API infested by pointers is the
worst thing to imagine.

> The solution that you propose is not only very complex,

I don't see how removing a type could add complexity. It didn't add new
operations, it only moved access types elsewhere.

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



  reply	other threads:[~2010-09-29 13:41 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-28  7:37 Limited use for limited with? Maciej Sobczak
2010-09-28  9:04 ` Alex R. Mosteo
2010-09-30  7:24   ` Stephen Leake
2010-09-30  9:21     ` Alex R. Mosteo
2010-09-28  9:18 ` Ludovic Brenta
2010-09-28 12:59   ` Maciej Sobczak
2010-09-28 13:45     ` Dmitry A. Kazakov
2010-09-28 21:57       ` Maciej Sobczak
2010-09-29  6:03         ` Ludovic Brenta
2010-09-29  8:25           ` Maciej Sobczak
2010-09-29  7:51         ` Dmitry A. Kazakov
2010-09-29  8:38           ` Maciej Sobczak
2010-09-29  9:16             ` Dmitry A. Kazakov
2010-09-29 12:22               ` Maciej Sobczak
2010-09-29 13:41                 ` Dmitry A. Kazakov [this message]
2010-09-29 15:07                   ` Georg Bauhaus
2010-09-29 19:22                     ` Dmitry A. Kazakov
2010-09-29 20:51                   ` Maciej Sobczak
2010-09-29 21:18                     ` Dmitry A. Kazakov
2010-10-05  7:35                     ` Randy Brukardt
2010-10-08  8:05                       ` Maciej Sobczak
2010-10-09  6:29                         ` Randy Brukardt
2010-10-05  7:25             ` Randy Brukardt
2010-10-08  8:23               ` Maciej Sobczak
2010-10-09  6:13                 ` Randy Brukardt
2010-10-10 14:13                   ` Maciej Sobczak
2010-10-11  6:23                     ` Randy Brukardt
2010-10-12 19:29                       ` Maciej Sobczak
2010-10-12 20:19                         ` Dmitry A. Kazakov
2010-10-13  2:09                         ` Randy Brukardt
2010-10-13  8:44                           ` Georg Bauhaus
2010-10-15  0:59                             ` Randy Brukardt
2010-10-13  9:43                           ` Maciej Sobczak
2010-09-28 15:15     ` Ludovic Brenta
2010-09-28 22:04       ` Maciej Sobczak
2010-09-28 15:54   ` Robert A Duff
2010-09-30  7:27   ` Stephen Leake
2010-09-30  7:33     ` Ludovic Brenta
2010-09-30 16:03     ` Adam Beneschan
2010-10-07 11:55       ` Stephen Leake
2010-10-07 18:27         ` Martin Krischik
2010-10-07 21:30           ` Adam Beneschan
2010-10-09  6:29             ` Martin Krischik
2010-10-09 18:35               ` Robert A Duff
2010-10-08  0:07           ` Randy Brukardt
2010-10-09  6:21             ` Martin Krischik
2010-09-28  9:32 ` Vadim Godunko
2010-09-28 11:34 ` stefan-lucks
2010-09-28 13:15   ` stefan-lucks
2010-09-28 16:55 ` Adam Beneschan
2010-09-28 17:31   ` Robert A Duff
2010-09-28 19:24     ` Adam Beneschan
2010-09-28 20:32       ` Vadim Godunko
2010-09-28 21:32         ` Adam Beneschan
replies disabled

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