From: Stephen Leake <stephen.a.leake.1@gsfc.nasa.gov>
Subject: Re: package body functionality
Date: 29 May 2001 15:11:30 -0400
Date: 2001-05-29T19:27:32+00:00 [thread overview]
Message-ID: <u66ekm0m5.fsf@gsfc.nasa.gov> (raw)
In-Reply-To: 9eoeiv$h8$1@eol.dd.chalmers.se
f97stdi@dd.chalmers.se (Staffan Dittmer) writes:
> the question might be a bit obscure but
> considering the two package bodies below
>
> package body A is
> variable: some_type:=call_some_function_outside_A;
> end A;
>
> package body B is
> variable: some_type;
> begin
> variable:=call_some_function_outside_B;
> end B;
>
> I know that in B the variable will be assigned
> every time a program using the package is run,
This is seriously wrong! B.variable is _not_ set many times. It
would be interesting to understand how you got that impression.
B.variable will be set _once_, at "elaboration" time. Elaboration
happens just before the main Ada program is run. All packages in the
program are elaborated, in an order determined by the compiler.
Note that if a function is called before its package is elaborated,
the exception Program_Error is raised; this is before your main
program gets to start.
To be safe, package A should have a 'pragma Elaborate' for the package
containing 'some_function_outside_A', and similarly for B.
>
> but is this also true for A, or will the variable in this case only
> be assigned at compile time ?
As for B, A.variable is set at elaboration time.
--
-- Stephe
next prev parent reply other threads:[~2001-05-29 19:11 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-05-26 14:28 package body functionality Staffan Dittmer
2001-05-26 17:09 ` Larry Kilgallen
2001-05-26 17:22 ` Jeffrey Carter
2001-05-26 18:31 ` DuckE
2001-05-26 19:16 ` Aron Felix Gurski
2001-05-27 13:50 ` Ken Garlington
2001-05-29 9:15 ` Philip Anderson
2001-05-29 13:26 ` Ted Dennison
2001-05-29 19:11 ` Stephen Leake [this message]
2001-05-29 20:34 ` Ted Dennison
2001-05-29 21:29 ` Marin David Condic
2001-05-30 13:46 ` Ted Dennison
2001-05-30 14:25 ` Marin David Condic
2001-05-31 19:08 ` Wes Groleau
2001-05-30 14:23 ` Stephen Leake
2001-05-31 1:37 ` Robert A Duff
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox