comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Equivalence between named access and anonymous access.
Date: Wed, 6 Sep 2023 17:54:42 +0200	[thread overview]
Message-ID: <uda7c1$2ids2$1@dont-email.me> (raw)
In-Reply-To: <uda2ql$2hle9$1@dont-email.me>

On 2023-09-06 16:37, Blady wrote:

> I'm wondering about named access and anonymous access.
> In the following Ada code, are the writing of parameter P1 type of 
> procedures PA and PB equivalent ?
> 
> package C1 is
>    type Inst is tagged null record;
>    type Class is access all Inst'Class;
> end C1;
> 
> with C1;
> package C2 is
>    type Inst is tagged null record;
>    type Class is access all Inst'Class;
> 
>    procedure PA (Self : Inst; P1 : C1.Class); -- named access
>    procedure PB (Self : Inst; P1 : access C1.Inst'Class); -- anonymous 
> access
> end C2;
> 
> Same with:
>    function FA (Self : Inst) return C1.Class; -- named access
>    function FB (Self : Inst) return access C1.Inst'Class; -- anonymous 
> access
> 
> Are FA and FB writing equivalent?
> If not why?

They are not equivalent from the access checks point of view:

    declare
       Y : C2.Inst;
       X : aliased C1.Inst;
    begin
       C2.PA (Y, X'Access); -- Non-local pointer error
       C2.PB (Y, X'Access); -- Fine
    end;

Furthermore, tagged anonymous access is controlling (dispatches) when 
not class-wide.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2023-09-06 15:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-06 14:37 Equivalence between named access and anonymous access Blady
2023-09-06 15:54 ` Dmitry A. Kazakov [this message]
2023-09-07 16:06   ` Blady
2023-09-07 16:18     ` Jeffrey R.Carter
2023-09-07 19:10       ` Blady
2023-09-07 20:23     ` Dmitry A. Kazakov
2023-09-06 20:55 ` Gautier write-only address
2023-09-07  0:20 ` Jeffrey R.Carter
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox