comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Question on Controlled types
Date: Sat, 30 May 2009 15:27:52 +0200
Date: 2009-05-30T15:27:52+02:00	[thread overview]
Message-ID: <1m6a6s5xq3hrf.1i7zbi65wq3cd$.dlg@40tude.net> (raw)
In-Reply-To: 4a211b98$0$2862$ba620e4c@news.skynet.be

On Sat, 30 May 2009 13:41:41 +0200, Olivier Scalbert wrote:

> I am learning controlled types features and I do not understand the 
> following thing.

[...]

> Initialize Delay_Line
> Make_Delay_Line
> Adjust Delay_Line
> Finalize Delay_Line
> Finalize Delay_Line
> 
> I have two "Finalize(s)" for one "Initialize".

This is a correct behavior.

> Should I call Initialize from Adjust ?

No.
 
> How to have only one Initialize/Finalize ?

You cannot (need not). Here is an interpretation of what happens in your
case:

1. When Make_Delay_Line is called it creates local variable D. This is your
call to Initialize.

2. Then it returns D. For this the content of D is copied into Delay1 of
the caller and Adjust is done. That is your Adjust.

3. Then D is destroyed and Finalize is called. That is your first call to
Finalize.

4. When test1 is completed, Delay1 is destroyed and so the second call to
Finalize happens.

The formula is I + A = F, where I is the number of calls to Initialize, A
is the number of calls to Adjust and F is the number of calls to Finalize.

Note that the compiler has right to optimize some pairs Adjust/Finalize
away or add new ones.

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



  reply	other threads:[~2009-05-30 13:27 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-30 11:41 Question on Controlled types Olivier Scalbert
2009-05-30 13:27 ` Dmitry A. Kazakov [this message]
2009-05-30 14:16   ` Olivier Scalbert
2009-05-30 14:48     ` Olivier Scalbert
2009-05-30 15:20       ` Robert A Duff
2009-05-30 15:40         ` Olivier Scalbert
2009-05-30 18:37           ` Robert A Duff
2009-06-04 12:32   ` Hibou57 (Yannick Duchêne)
2009-06-04 14:04     ` Dmitry A. Kazakov
2009-06-04 14:34       ` Hibou57 (Yannick Duchêne)
2009-06-04 15:03         ` Dmitry A. Kazakov
2009-06-04 15:13           ` Hibou57 (Yannick Duchêne)
2009-06-06  1:31       ` Randy Brukardt
2009-05-30 13:30 ` christoph.grein
  -- strict thread matches above, loose matches on Subject: below --
2003-10-02  8:05 Question on controlled types christoph.grein
2003-10-01 20:03 Beard, Frank Randolph CIV
2003-10-02 18:45 ` Robert I. Eachus
2003-10-01 19:06 Alex Xela
2003-10-01 23:07 ` Matthew Heaney
2003-10-02  7:09   ` Alex Xela
replies disabled

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