TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy

TEAM-ADA@LISTSERV.ACM.ORG

Options: Use Classic View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Roger Racine <[log in to unmask]>
Thu, 11 Nov 2004 07:13:59 -0500
text/plain (23 lines)
At 01:04 PM 11/10/2004 -0800, Prichard, Jayson (Space Technology) wrote:
>I am writing a subroutine that has one parameter, another subroutine that
>I want the second subroutine to execute.  Does anyone have any ideas how
>to do this?

Ada95 or Ada83?  With Ada95 it is quite straightforward (see section 3.10
of the Reference Manual).  You simply create an access type and use the
access type  as the parameter.

...
type procedure_access is access procedure (. . .);
procedure my_proc (proc_access : in procedure_access);
...
procedure real_proc (...)  -- same arguments as in the type declaration
...
my_proc (real_proc'access);

For Ada83, it could still be done for all the compilers I used, but was
implementation dependent.  As I recall, one used the 'address of the
procedure, and then used a representation clause to call the procedure.

Roger Racine

ATOM RSS1 RSS2