From: stt@houdini.camb.inmet.com (Tucker Taft)
Subject: Re: Extending A Generic Signature Package
Date: 1997/03/18
Date: 1997-03-18T00:00:00+00:00 [thread overview]
Message-ID: <E78yEu.15.0.-s@inmet.camb.inmet.com> (raw)
In-Reply-To: 5gkv23INN3rn@thalamus.cis.ohio-state.edu
david scott gibson (dgibson@thalamus.cis.ohio-state.edu) wrote:
: Hi. Is any way in Ada to extend a generic signature package? For
: example, if I had the signature package Base_Interface:
: generic
: type T is limited private;
: with procedure Op1(x: in out T);
: package Base_Interface is end;
: I would like to extend it to get a new interface with Op1 inherited.
: The following code is illegal, but gives an idea of what I'd like to
: do.
: with Base_Interface;
: generic
: type T is new Base_Interface.T; -- ILLEGAL!!
: with procedure Op2(x: in out T);
: package Extended_Interface is end;
: I'd be particularly interested if there were some way of doing this
: without using tagged types. For the language lawyers, what would be
: the technical barriers to allowing an extension of this sort (not
: including there are other ways in Ada to achieve a similar result :-)?
Well, I'm not exactly sure what is your goal, but the following
might satisfy you:
with Base_Interface;
generic
with package Base is new Base_Interface(<>);
with procedure Op2(x : in out Base.T);
package Extended_Interface is end;
Given any instantiation of Base_Interface and an appropriate
"Op2", you can create an instantiation of Extended_Interface as follows:
with Extended_Interface;
with My_Base;
with ...appropriate other stuff...
package Extended is new Extended_Interface(My_Base, My_Op2);
: Dave
: dgibson@cis.ohio-state.edu
-Tucker Taft stt@inmet.com http://www.inmet.com/~stt/
Intermetrics, Inc. Burlington, MA USA
next prev parent reply other threads:[~1997-03-18 0:00 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-03-17 0:00 Extending A Generic Signature Package david scott gibson
1997-03-18 0:00 ` Tucker Taft [this message]
1997-03-18 0:00 ` Alexander V. Konstantinou
1997-03-21 0:00 ` Geert Bosch
1997-03-21 0:00 ` Brian Rogoff
1997-03-22 0:00 ` Robert A Duff
1997-03-21 0:00 ` Jon S Anthony
1997-03-21 0:00 ` david scott gibson
1997-03-22 0:00 ` Robert A Duff
1997-03-22 0:00 ` Jon S Anthony
1997-03-21 0:00 ` david scott gibson
1997-03-22 0:00 ` Robert A Duff
1997-03-25 0:00 ` Jon S Anthony
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox