comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Ada 2005,Doubly_Linked_List with Controlled parameter
Date: Wed, 6 Apr 2016 15:29:38 -0500
Date: 2016-04-06T15:29:38-05:00	[thread overview]
Message-ID: <ne3rji$vrr$1@loke.gir.dk> (raw)
In-Reply-To: 61dd12e1-4450-4c6e-b8b5-7cf1c075ebad@googlegroups.com

"George J" <ivanov_george@list.ru> wrote in message 
news:61dd12e1-4450-4c6e-b8b5-7cf1c075ebad@googlegroups.com...
>> You create an aggregate of your controlled type, which is an object of 
>> the type.
>> Append makes a copy of that object to store in the list. When you leave 
>> the
>> procedure that did the Append, the aggregate goes out of scope and is 
>> finalized.
>> (Presumably that leaves the copy in the list with a dangling reference.)
>>
>> -- 
>> Jeff Carter
>> "Hold your temper. Count ten.... Now let 'er go.
>> You got a good aim."
>> Never Give a Sucker an Even Break
>> 105
>
> Wow,thanks,I've got! It's difficult to guess it for me.

Note that you can write something like your original code, but it has to use 
reference counts and an overriding of Adjust in order to manage the access 
value properly (since the container copies the objects, and thus you have to 
support that). I think Christoph Grein's safe pointers give an example of 
how that could be done.

In this case, the various alternatives suggested are better, since the 
compiler/runtime is doing that complicated work and you don't have to. But 
sometimes you need to manage an object this way, so it's valuable to know 
that it is possible.

                              Randy.



  reply	other threads:[~2016-04-06 20:29 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-05  2:03 Ada 2005,Doubly_Linked_List with Controlled parameter George J
2016-04-05  2:27 ` Jeffrey R. Carter
2016-04-05  3:00   ` George J
2016-04-05  4:13     ` George J
2016-04-05  6:20     ` Jeffrey R. Carter
2016-04-05  6:31       ` George J
2016-04-05  7:58     ` Dmitry A. Kazakov
2016-04-05  8:09       ` George J
2016-04-05  8:35       ` George J
2016-04-05  8:50         ` Dmitry A. Kazakov
2016-04-05  8:57           ` George J
2016-04-05 16:22         ` Jeffrey R. Carter
2016-04-06  1:14           ` George J
2016-04-05  3:25   ` George J
2016-04-05  5:24     ` Jeffrey R. Carter
2016-04-05  6:30       ` George J
2016-04-06 20:29         ` Randy Brukardt [this message]
2016-04-06 21:04           ` Jeffrey R. Carter
2016-04-07  1:28           ` George J
replies disabled

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