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=0.7 required=5.0 tests=BAYES_00,INVALID_DATE, MSGID_SHORT,REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: utzoo!attcan!uunet!decwrl!lll-winken!cs!erickson From: erickson@cs.nps.navy.mil (David Erickson) Newsgroups: comp.lang.ada Subject: Re: limited private types, "=" operator Message-ID: <1160@cs.nps.navy.mil> Date: 3 Aug 90 16:01:06 GMT References: <1152@cs.nps.navy.mil> <10687@crdgw1.crd.ge.com> Reply-To: erickson@cs.nps.navy.mil (David Erickson) Organization: Naval Postgraduate School, Monterey CA List-Id: In article <10687@crdgw1.crd.ge.com> kassover@minerva.crd.ge.com (David Kassover) writes: >In article <1152@cs.nps.navy.mil> erickson@cs.nps.navy.mil (David Erickson) writes: >|Is there any way to define "=" for a limited private type which is an >|access type (which may be null)? The problem arises trying to test for >|null without producing an infinitely recursive definition. >| >|The only solution that I am aware of is to use UNCHECKED_CONVERSION to >|retype the access type during the test for null, but this is a hack. >|Is there a cleaner solution? >| > >Export from the package defining the limited type a function that >returns TRUE if the access type variable is not null. Or the other way >around, if you prefer. > >-- >David Kassover "Proper technique helps protect you against >kassover@ra.crd.ge.com sharp weapons and dull judges." >kassover@crd.ge.com F. Collins This will not work in this case. I specifically need to define "=" for a list which is implemented as a linked list. In this case, "=" should return true if the two lists being compared are the same length and the contents of each node are equal. The user should not be aware that the implementation uses pointers. The problem is that I cannot find a way to use the predefined "=" to test for null in the definition for "=" that I am exporting. According to the ARM, the predefined "=" is implicitly declared immediately after the type declaration, prior to the next statement. However, my declaration of "=" supersedes the implicit "=", and I can think of no way to capture the implicit "=". -Dave Erickson Erickson@cs.nps.navy.mil