comp.lang.ada
 help / color / mirror / Atom feed
From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: Wikibook on Ada Programming - Object Orientation
Date: Thu, 8 Jul 2010 09:07:10 -0700 (PDT)
Date: 2010-07-08T09:07:10-07:00	[thread overview]
Message-ID: <2dcc40df-72f1-443c-9afd-4415af4e63b9@k39g2000yqb.googlegroups.com> (raw)
In-Reply-To: 4758a0b7-21f7-4a8e-97ec-d9468d5d598f@j4g2000yqh.googlegroups.com

On Jul 8, 11:34 am, AdaMagica <christoph.gr...@eurocopter.com> wrote:
> I have a problem with an example inhttp://en.wikibooks.org/wiki/Ada_Programming/Object_Orientation#Multi...
>
> It proposes to use a mixin together with the Rosen trick, however for
> unlimited types. This cannot work!
>
> When such an object is assigned, the disciminant will inevitably point
> to the wrong object.

I wrote a test case and confirm this; there is indeed a problem.

> For a detailed discussion of the problems involved, see my paper in
> Ada Letters, Volume XIX, Number 4, December 1999, which you can also
> find here:
>
> http://www.christ-usch-grein.homepage.t-online.de/Ada/Finalization.html

I'm not sure your solution works in all cases because it uses only one
"slot" per task, per tagged type, to store the access value to the
enclosing object. My gut feeling is that this makes assumptions as to
the ordering of calls to Adjust and Finalize that may not be always
correct in the presence of multiple objects of the same type.

> Ada 2005 changed some of the rules; now mix-ins can have access
> discriminants to nonlimited types, but the problem persists.
>
> So how should the wikibook be corrected? Are there safe solutions to
> the problem of mixins?

Right, I'm curious. I re-read sections on controlled types and mixin
inheritance in John Barnes' book but he leaves this entire problem as
an exercise to the reader (specifically, exercise 19.3).  This seems
too complicated for a beginner.

--
Ludovic Brenta.



  reply	other threads:[~2010-07-08 16:07 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-08  9:34 Wikibook on Ada Programming - Object Orientation AdaMagica
2010-07-08 16:07 ` Ludovic Brenta [this message]
2010-07-08 17:14   ` Simon Wright
2010-07-08 18:09   ` AdaMagica
replies disabled

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