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,29a06d546f6523a6 X-Google-Attributes: gid103376,public From: mheaney@ni.net (Matthew Heaney) Subject: Re: Can't find the answer Date: 1997/11/22 Message-ID: #1/1 X-Deja-AN: 291634552 References: <655s7e$ei9@netline.jpl.nasa.gov> Organization: Estormza Software Newsgroups: comp.lang.ada Date: 1997-11-22T00:00:00+00:00 List-Id: In article <655s7e$ei9@netline.jpl.nasa.gov>, vsnyder@math.jpl.nasa.gov (Van Snyder) wrote: >Suppose I have a type T1, and extend it to a type T2. > >Suppose I have a procedure P that takes an argument of type T1, >not T1'class. > >Can I invoke P directly on an object of type T2? Not a classwide >object of T1'class, and not an object of type T2 converted explicitly >to T1 by T1(). I assume that the types are tagged, since you're talking about T'Class. Yes, you can invoke the operation P on an object of T2, if the operation was a "primitive" operation of T1. By "primitive" I mean the subprogram was declared in the same package spec as the declaration of the type itself. If so, type T2 inherited the P operation when it derived from T1. (Actually, here it doesn't make any difference whether the type is tagged.) Here's an example: package Q1 is type T1 is tagged record ...; procedure P (O : T1); end; P is a primitive operation of type T1. So when I derive from T1, ie with Q1; package Q2 is type T2 is new Q1.T1 with ...; -- procedure P (O : T2); -- is implicitly declared here end Q2; Now, had package Q1 looked like package Q1 is type T1 is tagged ....; package Inner is procedure P (O : T1); end Inner; end Q1; then P is no longer a "primitive" operation of T1; it's just a plain old operation. Therefore it would not be inherited by T2. -------------------------------------------------------------------- Matthew Heaney Software Development Consultant (818) 985-1271