comp.lang.ada
 help / color / mirror / Atom feed
From: Bob Duff <bobduff@theworld.com>
Subject: Re: storage error: stack overflow
Date: Wed, 19 Aug 2015 16:53:43 -0400
Date: 2015-08-19T16:53:43-04:00	[thread overview]
Message-ID: <87fv3ff19k.fsf@theworld.com> (raw)
In-Reply-To: d3i5k1Fh07U1@mid.individual.net

hreba <f_hreba@yahoo.com.br> writes:

> On 08/18/2015 11:16 AM, Jeffrey R. Carter wrote:
>> On 08/18/2015 07:02 AM, hreba wrote:
>>>
>>> Huh? As much as I know you cannot declare variables of a type with unknown
>>> storage requirements at compile time, such as class-wide types and arrays with
>>> unknown range.
>>
>> These are "indefinite types". You can declare an object of an indefinite type as
>> long as you supply an initialization expression:
>>
>> S : String := "Hello";
>>
>> V : T'Class := Some_Function;
>>
>
> If the object is initialized, the storage requirement is known at compile
> type.

No, as Jeff and Randy have pointed out, when you initialize an object
with a call to a function that returns an indefinite subtype (such as
String, or T'Class), the size of the object is determined at run time.
What's more, it's determined by the function body -- it is not known
in the callee until the function has returned.

But that only works if you can initialize the object on its
declaration.  Sometimes, the declaration needs to occur at
a certain place for visibility reasons, and only later is
initialized.  You need access types for that (possibly
encapsulated in Holders, or whatever).

It also doesn't work if the Tag needs to change.  In the above,
V'Tag is set to whatever Some_Function returns, and can never
be changed.

- Bob


  parent reply	other threads:[~2015-08-19 20:53 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-11 21:53 storage error: stack overflow hreba
2015-08-11 22:19 ` Jeffrey R. Carter
2015-08-12 15:01   ` hreba
2015-08-12 16:00     ` AdaMagica
2015-08-12 17:51     ` Jeffrey R. Carter
2015-08-13  2:17       ` hreba
2015-08-12  8:27 ` briot.emmanuel
2015-08-13  1:34   ` hreba
2015-08-13  2:53     ` Jeffrey R. Carter
2015-08-13  7:05     ` Simon Wright
2015-08-14 13:53       ` hreba
2015-08-14 16:01         ` Simon Wright
2015-08-14 17:00         ` Simon Wright
2015-08-13  7:19     ` Simon Wright
2015-08-14 13:20       ` hreba
2015-08-12 10:31 ` Markus Schöpflin
2015-08-13  1:36   ` hreba
2015-08-12 10:57 ` Simon Wright
2015-08-13  0:55   ` hreba
2015-08-13  6:58     ` Simon Wright
2015-08-18  2:16 ` hreba
2015-08-18  5:49   ` Jeffrey R. Carter
2015-08-18  7:24   ` Egil H H
2015-08-18 12:23     ` hreba
2015-08-18 12:37       ` Jacob Sparre Andersen
2015-08-18 14:02         ` hreba
2015-08-18 14:11           ` Dmitry A. Kazakov
2015-08-18 14:16           ` Jeffrey R. Carter
2015-08-18 20:56             ` Randy Brukardt
2015-08-19  1:48             ` hreba
2015-08-19  5:10               ` Jeffrey R. Carter
2015-08-19  8:44               ` Georg Bauhaus
2015-08-19 11:56                 ` hreba
2015-08-19 20:53               ` Bob Duff [this message]
2015-08-18 14:15       ` Egil H H
2015-08-19 13:07         ` hreba
2015-08-18 14:16       ` Jeffrey R. Carter
2015-08-19 13:12         ` hreba
2015-08-19 20:47         ` Bob Duff
2015-08-19 21:47           ` Jeffrey R. Carter
2015-08-20  7:18             ` Dmitry A. Kazakov
2015-08-20 20:48           ` 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