comp.lang.ada
 help / color / mirror / Atom feed
From: cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!uwm.edu!cs.utexas.edu
Subject: Re: Passing procedures as parameters to procedures.
Date: 4 May 93 13:45:33 GMT	[thread overview]
Message-ID: <1993May4.154040@di.epfl.ch> (raw)

In article <1s5gae$kr4@huon.itd.adelaide.edu.au>, andrewd@winnie.cs.adelaide.ed
u.au (Andrew Dunstan,,2285592,) writes:
:
: As I pointed out in this group about a year ago, there are some things
: that you want to be able to do that you just can't with generics. If
: anybody can provide me with a good, clean, Ada equivalent of the
: following Pascal code, I'll send him/her (first winner only!) a good
: bottle of Australian red wine (damn this Beaujolais business!).
: [Pascal code omitted]

The solution is to make "D" visible.


package Wrap_AD is

  procedure D;
  
  generic
    with procedure B;
  procedure A_G;

end Wrap_AD;

package body Wrap_AD is

  procedure D is begin null; end D;
  
  procedure A_G is
  begin
    B;
  end A_G;

end Wrap_AD;


generic
  with procedure Y;
procedure X_G;

procedure X_G is
begin
  Y;
end X_G;


procedure X is new X_G (Wrap_AD.D);

procedure A is new Wrap_AD.A_G (X);

...
A;
...


Two drawbacks: if D needs to access local variables of A_G, these
variables must be made global (but may be hidden in the body of
Wrap_A); the parameter B to A_G need not call D, but you may consider
it a "feature", a more powerful variant.

Good enough?
-- 
Magnus Kempe                "No nation was ever drunk when wine was cheap."
magnus@lglsun.epfl.ch                                   -- Thomas Jefferson

             reply	other threads:[~1993-05-04 13:45 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-05-04 13:45 cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!uwm.edu!cs.utexas.edu [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-05-10 22:56 Passing procedures as parameters to procedures Jack Dean
1993-05-06  9:39 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!darwi
1993-05-06  7:33 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!torn!
1993-05-05 21:35 cis.ohio-state.edu!news.sei.cmu.edu!ajpo.sei.cmu.edu!progers
1993-05-05 17:39 Robert Dewar
1993-05-05 17:35 Robert Dewar
1993-05-05 16:30 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!magnus.acs.ohio-state.edu!us
1993-05-05 11:40 cis.ohio-state.edu!news.sei.cmu.edu!firth
1993-05-05  9:50 cis.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!howland.
1993-05-04 23:44 cis.ohio-state.edu!magnus.acs.ohio-state.edu!zaphod.mps.ohio-state.edu!ho
1993-05-04 22:13 John Goodsen
1993-05-04 19:39 cis.ohio-state.edu!pacific.mps.ohio-state.edu!zaphod.mps.ohio-state.edu!m
1993-05-04 16:41 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!ira.u
1993-05-04 16:25 Mark A Biggar
1993-05-04 15:43 Tucker Taft
1993-05-04 14:29 cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!uwm.edu!spool.mu.edu!
1993-05-04 13:59 Tucker Taft
1993-05-04 13:45 cis.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!howland.
1993-05-04 10:25 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!magnus.acs.ohio-state.edu!us
1993-05-03 20:36 Mark A Biggar
1993-05-03 19:07 cis.ohio-state.edu!magnus.acs.ohio-state.edu!zaphod.mps.ohio-state.edu!ho
replies disabled

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