From: Pascal Obry <pascal@obry.net>
To: Michael Erdmann <michael.erdmann@snafu.de>
Subject: Re: How to get around "access type must not be outside generic unit"
Date: Sun, 17 Dec 2006 13:45:16 +0100
Date: 2006-12-17T13:45:21+01:00 [thread overview]
Message-ID: <45853BDC.5000902@obry.net> (raw)
In-Reply-To: <oghf54-6ho.ln1@hal.boavista.snafu.de>
Michael Erdmann a �crit :
> gnade@hal:~/test> gnatmake -c usage.adb
> gcc -c usage.adb
> usage.adb:16:28: access type must not be outside generic unit
> gnatmake: "usage.adb" compilation error
>
> What is the reason for this new compiler check and what can i do
> about it?
Solution 1) Declare register using an anonymous access type :
procedure Register
(Str : in String; A : access function return Boolean);
Solution 2) Move access to generic spec
with Base; use Base;
generic
type Data_Type is private;
package Usage is
function Install return Boolean ;
procedure Doit( X : in out Data_Type );
Install_Access : P_Access := Install'Access;
end Usage;
---- usage.adb
with Base; use Base;
package body Usage is
function Install return Boolean is
begin
return True;
end Install;
procedure Doit( X : in out Data_Type ) is
begin
null;
end Doit;
begin
Register ("Doit", Install_Access);
end Usage;
package Base is
type P_Access is access function return Boolean;
procedure Register (Str : in String; A : P_Access);
end Base;
Pascal.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595
next prev parent reply other threads:[~2006-12-17 12:45 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-17 10:07 How to get around "access type must not be outside generic unit" Michael Erdmann
2006-12-17 12:45 ` Pascal Obry [this message]
2006-12-17 14:28 ` Michael Erdmann
2006-12-17 15:53 ` Pascal Obry
2006-12-17 20:49 ` Robert A Duff
2006-12-18 3:35 ` Brian May
2006-12-18 7:49 ` Jean-Pierre Rosen
2006-12-18 23:15 ` Brian May
2006-12-19 1:48 ` Randy Brukardt
2006-12-19 7:41 ` Jean-Pierre Rosen
2006-12-18 20:32 ` Michael Erdmann
2006-12-18 20:57 ` Randy Brukardt
2007-01-23 18:18 ` [Revisited] How to get around "access type must not be outside generic unit" (was: How to get around "access type must not be outside generic unit") Dmitry A. Kazakov
2007-01-24 0:57 ` Randy Brukardt
2007-01-24 11:42 ` [Revisited] How to get around "access type must not be outside generic unit" Dmitry A. Kazakov
2007-01-24 11:58 ` Ludovic Brenta
2007-01-24 13:46 ` Dmitry A. Kazakov
2007-01-24 20:50 ` Randy Brukardt
2007-01-25 11:07 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox