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: akonstan@news.cs.columbia.edu (Alexander V. Konstantinou) Subject: Re: Extending A Generic Signature Package Date: 1997/03/18 Message-ID: <5gn90o$gm1@sutton.cs.columbia.edu>#1/1 X-Deja-AN: 226684010 References: <5gkv23INN3rn@thalamus.cis.ohio-state.edu> Organization: Columbia University Department of Computer Science Newsgroups: comp.lang.ada Date: 1997-03-18T00:00:00+00:00 List-Id: Tucker Taft (stt@houdini.camb.inmet.com) wrote: : 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: [snip] : 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); Unfortunately, with the above code one is either forced to reexport the Base_Interface operations in Extended_Interface or the user has to "use" all the new generic rackage instances (i.e. use My_Extended; use My_Extended.Base;). If you don't like "use" clauses, then you need to remember where in the hierarchy an operation is defined. OO people will tell you to use inheritance, but there is really no reason to pay for the overhead when your abstraction can be served by a compile-time check. Anyone know how to do this without restricting writability? I have ended up many times repeating the operations in the "Extended" to make use easier. -- Alexander V. Konstantinou http://www.cs.columbia.edu/~akonstan/ akonstan@cs.columbia.edu akonstan@acm.org