comp.lang.ada
 help / color / mirror / Atom feed
From: John English <je@bton.ac.uk>
Subject: Re: A question to the "access-type lifetime rule"
Date: 2000/04/04
Date: 2000-04-04T12:57:54+00:00	[thread overview]
Message-ID: <38E9E6A5.AC631EEA@bton.ac.uk> (raw)
In-Reply-To: 38E89AB9.7D33E88C@hamilton.physik.uni-konstanz.de

Bernd Rinn wrote:
> 
> Hi,
> 
> I am new to Ada and I am looking for an elegant way to get around a
> restriction posed by the "access-type lifetime rule" for
> access-to-subprogram types. First of all: does anyone know, why the
> access-type lifetime matters and not the access-variable lifetime? (This
> should prevent dangling pointers as well, I guess.)
> 
> I want to write an numerical integration function, that is defined in a
> separate package as
> 
> type Integrand_Type is access function ( X : Long_Float ) return
> Long_Float;
> function Integrate(Integrand : Integrand_Type; Lower_Bound, Upper_Bound
> : Long_Float) return Long_Float;
> 
> Now I would like to call this from a main procedure and pass an access
> attribute of a nested function of the main procedure as `Integrand'. Is
> there a way to reach this? (Unchecked_Access is not an allowed attribute
> for subprograms and I do not want to generate a package of it's own for
> the integrand function.)

If you declare the package where Integrate is declared like this:
  generic
  package X is ...

then in the same declaration section as the nested function you say
this:
  package Inner_X is new X;

and voila, you have smuggled the declarations from X into the inner
scope (the access level of Inner_X being the level at which the
instantiation occurs).

-----------------------------------------------------------------
 John English              | mailto:je@brighton.ac.uk
 Senior Lecturer           | http://www.it.bton.ac.uk/staff/je
 Dept. of Computing        | ** NON-PROFIT CD FOR CS STUDENTS **
 University of Brighton    |    -- see http://burks.bton.ac.uk
-----------------------------------------------------------------




      parent reply	other threads:[~2000-04-04  0:00 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-04-03  0:00 A question to the "access-type lifetime rule" Bernd Rinn
2000-04-03  0:00 ` David
2000-04-03  0:00 ` Gautier
2000-04-03  0:00 ` Jean-Marc Bourguet
2000-04-03  0:00 ` Robert Dewar
2000-04-04  0:00 ` John English [this message]
replies disabled

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