From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,acb50cdf95d3e13c X-Google-Attributes: gid103376,public From: stt@houdini.camb.inmet.com (Tucker Taft) Subject: Re: Extending A Generic Signature Package Date: 1997/03/18 Message-ID: #1/1 X-Deja-AN: 226462489 Sender: news@inmet.camb.inmet.com (USENET news) X-Nntp-Posting-Host: houdini.camb.inmet.com References: <5gkv23INN3rn@thalamus.cis.ohio-state.edu> Organization: Intermetrics, Inc. Newsgroups: comp.lang.ada Date: 1997-03-18T00:00:00+00:00 List-Id: 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