From: "Jeffrey R. Carter" <spam.jrcarter.not@acm.nospam.org>
Subject: Re: Self pointer in limited record
Date: Fri, 31 Aug 2007 18:26:45 GMT
Date: 2007-08-31T18:26:45+00:00 [thread overview]
Message-ID: <F3ZBi.81463$Fc.12950@attbi_s21> (raw)
In-Reply-To: <1188578849.187422.280620@50g2000hsm.googlegroups.com>
amado.alves@gmail.com wrote:
>
> type T is -- limited or not
> Self : access T := T'Unchecked_Access;
> ...
> end;
>
> But the compiler will remind you that Unchecked_Access is not
> available for types.
> (It seems Ada is like most women: unnecessarily complicated and
> difficult :-)
What I have had occasion to use successfully is
type R;
task type TT (Parent : access R);
type R is new Ada.Finalization.Limited_Controlled with record
T : TT (Parent => R'access);
...
end record;
V : R;
V.T.Parent designates V.
Some points for this idiom:
R must be limited, because it contains a limited component (the task).
"The current instance of a limited tagged type, a protected type, a task
type, or a type that has the reserved word limited in its full
definition is also defined to be aliased." (ARM 3.10). This sort of
thing may not work if R is not one of these cases (and so the current
instance referred to by R in R'access is aliased); I haven't tried it.
I usually have done this when revising others' existing code; there
generally seem better designs when starting from scratch.
--
Jeff Carter
"Apart from the sanitation, the medicine, education, wine,
public order, irrigation, roads, the fresh water system,
and public health, what have the Romans ever done for us?"
Monty Python's Life of Brian
80
next prev parent reply other threads:[~2007-08-31 18:26 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-04 19:31 Self pointer in limited record Maciej Sobczak
2007-07-05 8:22 ` Dmitry A. Kazakov
2007-07-05 10:35 ` Maciej Sobczak
2007-07-05 11:01 ` Pascal Obry
2007-07-05 11:14 ` Georg Bauhaus
2007-07-05 12:36 ` Dmitry A. Kazakov
2007-08-31 16:47 ` amado.alves
2007-08-31 17:09 ` Pascal Obry
2007-08-31 17:37 ` Adam Beneschan
2007-08-31 18:26 ` Jeffrey R. Carter [this message]
2007-08-31 19:33 ` Dmitry A. Kazakov
2007-09-01 13:33 ` Georg Bauhaus
2007-09-01 13:46 ` Dmitry A. Kazakov
2007-09-01 14:15 ` Georg Bauhaus
2007-09-01 16:03 ` Dmitry A. Kazakov
2007-09-01 19:49 ` Georg Bauhaus
2007-09-01 20:09 ` Dmitry A. Kazakov
2007-09-02 21:37 ` Georg Bauhaus
[not found] ` <re7ei5lc7dzf$.11qtcnh35jmzg$.dlg@40tude.net>
2007-09-03 10:51 ` Georg Bauhaus
2007-09-03 14:17 ` Dmitry A. Kazakov
2007-09-03 15:55 ` Jean-Pierre Rosen
2007-09-03 19:17 ` Dmitry A. Kazakov
2007-09-03 19:32 ` Markus E L
2007-09-03 20:14 ` Georg Bauhaus
2007-09-04 8:24 ` Dmitry A. Kazakov
2007-09-04 9:36 ` Jean-Pierre Rosen
2007-09-04 10:14 ` Dmitry A. Kazakov
2007-09-05 10:49 ` Georg Bauhaus
2007-09-05 12:04 ` Dmitry A. Kazakov
2007-09-05 13:12 ` Jean-Pierre Rosen
2007-09-05 15:10 ` Dmitry A. Kazakov
2007-09-05 16:25 ` Jean-Pierre Rosen
2007-09-05 19:52 ` Dmitry A. Kazakov
2007-09-06 7:19 ` Jean-Pierre Rosen
2007-09-06 9:28 ` Dmitry A. Kazakov
2007-09-06 11:53 ` Jean-Pierre Rosen
2007-09-06 15:35 ` Dmitry A. Kazakov
2007-09-05 18:31 ` Georg Bauhaus
2007-09-05 19:52 ` Dmitry A. Kazakov
2007-09-05 21:38 ` Georg Bauhaus
2007-09-06 7:37 ` Dmitry A. Kazakov
2007-09-06 10:26 ` Georg Bauhaus
2007-09-06 12:25 ` Dmitry A. Kazakov
2007-09-08 1:27 ` Randy Brukardt
2007-09-06 9:14 ` Markus E L
2007-09-06 9:48 ` Dmitry A. Kazakov
2007-09-04 8:23 ` Jean-Pierre Rosen
2007-10-31 23:59 ` adaworks
2007-09-03 20:38 ` Georg Bauhaus
2007-09-04 8:24 ` Dmitry A. Kazakov
2007-09-03 7:54 ` Jean-Pierre Rosen
2007-09-01 15:33 ` Markus E L
2007-09-04 14:55 ` Adam Beneschan
2007-09-04 15:09 ` Jean-Pierre Rosen
2007-09-08 1:36 ` Randy Brukardt
2007-09-04 17:31 ` Georg Bauhaus
2007-09-08 1:16 ` Randy Brukardt
2007-09-10 16:27 ` amado.alves
2007-09-10 17:13 ` Adam Beneschan
2007-09-10 19:00 ` Dmitry A. Kazakov
2007-09-11 3:12 ` Randy Brukardt
2007-09-11 9:38 ` Dmitry A. Kazakov
2007-09-12 21:57 ` Randy Brukardt
2007-09-13 8:03 ` Dmitry A. Kazakov
2007-09-13 21:37 ` 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