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,56dbd715fa74735a X-Google-Attributes: gid103376,public From: John Volan Subject: Re: Mutually dependent private types Date: 1998/05/29 Message-ID: <356F4A5C.218AD59F@ac3i.dseg.ti.com>#1/1 X-Deja-AN: 357803964 Content-Transfer-Encoding: 7bit References: <6k25ra$6j7$1@nnrp1.dejanews.com> <3565B105.9BFB4788@ac3i.dseg.ti.com> <356B226F.EF05E927@ac3i.dseg.ti.com> <356C8A02.44354B09@ac3i.dseg.ti.com> <356E09A1.B493FE89@ac3i.dseg.ti.com> <356F1F11.3B9A68E3@ac3i.dseg.ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Organization: Raytheon Systems Company, Advanced C3I Systems Newsgroups: comp.lang.ada Date: 1998-05-29T00:00:00+00:00 List-Id: Brian Rogoff wrote: > > I agree on all points, but I think that your strongest argument against > using inheritance for resolving forward type declarations is that they > use up a valuable "line of inheritance" and that the inheritance > collision problem forces reorganization of packages. I think that with > better MI the withing problem could have a (only slightly inelegant) > workaround, *and* there would be a bit more convenience in Ada OOP. The > "withing problem" solutions you describe are only solutions to the withing > problem and nothing else. There might be more bang for the language change > buck in an MI extension. MI is a separate issue. If someone could find a reasonable approach to MI in Ada that resolved all the complexities without doing serious damage to the rest of the language, then fine, I'm sure many people would find many useful ways to exploit it. (I'd encourage anybody researching this to take a good long look at Java's approach to this.) But I'd still see inheritance as the wrong solution for the withing problem. It would still be an inelegant workaround (and I wouldn't qualify it as "slightly" inelegant). If I have two types that are mutually dependent, a true solution would leave me with just two types to deal with. Any "solution" that forces me to deal with four types and do conversions back and forth is an inelegant workaround. (And I include my own generic Forward package in that reckoning: It forces you to add two opaque Reference_Types and use the conversions in the Binding.) Maybe the withing problem is just one problem, but it deserves a solution nevertheless. -- Signature volanSignature = new Signature ( /*name: */ "John G. Volan", /*employer: */ "Raytheon Advanced C3I Systems, San Jose", /*workEmail: */ "johnv@ac3i.dseg.ti.com", /*homeEmail: */ "johnvolan@sprintmail.com", /*selfPlug: */ "Sun Certified Java Programmer", /*twoCents: */ "Java would be even cooler with Ada95's " + "generics, enumerated types, function types, " + "named parameter passing, etc...", /*disclaimer:*/ "These views not packaged in COM.ti.dseg.ac3i, " + "so loading them throws DontQuoteMeError. :-)" );