From: stt@houdini.camb.inmet.com (Tucker Taft)
Subject: Re: Subprogram access types and generic packages
Date: 1997/03/20
Date: 1997-03-20T00:00:00+00:00 [thread overview]
Message-ID: <E7CHyw.n0q.0.-s@inmet.camb.inmet.com> (raw)
In-Reply-To: bond-ya023680001803971613240001@nntp.ucs.ubc.ca
Greg Bond (bond@ee.ubc.ca) wrote:
: I'm trying to write a generic package that will register an access type
: of one of its internal subprograms with an external subprogram when
: instantiated. I get the error message:
: pkg.adb:12:14: access type must not be outside generic body
: Why not?
Because the RM says so ;-). RM95 3.10.2(32) says:
P'Access
... If the subprogram denoted by P is declared within a generic body,
S [the access-to-subp type] shall be declared within the generic body.
The annotated RM goes on to say:
... This rule is partly to prevent contract model problems with respect
to accessibility rules, and partly to ease shared-generic-body
implementations, in which a subprogram declared in an instance needs
to have a different calling convention from other subprograms with
the same profile.
The way to avoid the problem is to move the declaration of the subprogram
up into the private part of the generic spec. This gives the shared-generic
implementation the chance to create a unique wrapper at each instantiation,
so a simple address (rather than an address + a pointer to an "instance
descriptor) is sufficient to call the subprogram.
If none of the above makes sense, then revert to my first explanation
(the RM says so) or talk to Randy Brukardt or other compiler implementor
whose compiler uses "universal" generic sharing.
: * Greg Bond * Dept. of Electrical and Computer Eng.
: * email: bond@ee.ubc.ca * Univ. of British Columbia
: * voice: (604) 822 0899 * 2356 Main Mall
: * fax: (604) 822 5949 * Vancouver, BC
: * web: http://www.ee.ubc.ca/~bond * Canada, V6T 1Z4
-Tucker Taft stt@inmet.com http://www.inmet.com/~stt/
Intermetrics, Inc. Burlington, MA USA
prev parent reply other threads:[~1997-03-20 0:00 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-03-18 0:00 Subprogram access types and generic packages Greg Bond
1997-03-19 0:00 ` Robert A Duff
1997-03-20 0:00 ` Tucker Taft [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