comp.lang.ada
 help / color / mirror / Atom feed
From: Jere <jhb.chat@gmail.com>
Subject: Re: Limited object by reference or access argument?
Date: Mon, 7 Aug 2017 07:10:41 -0700 (PDT)
Date: 2017-08-07T07:10:41-07:00	[thread overview]
Message-ID: <24712b44-48d9-4763-a748-458b7b77d835@googlegroups.com> (raw)
In-Reply-To: <om80vg$1a68$1@gioia.aioe.org>

On Sunday, August 6, 2017 at 5:16:37 PM UTC-4, Victor Porton wrote:
> Suppose we have
> 
> type World_Type is tagged limited private;
> 
> type BNode_ID_Handler is abstract tagged limited private;
> 
> We need to set a bnode handler for a world object. Should the procedure 
> signature be
> 
> procedure Set_Handler (World: World_Type;
>                        Handler: access BNode_ID_Handler'Class);
> 
> or 
> 
> procedure Set_Handler (World: World_Type;
>                        Handler: BNode_ID_Handler'Class);
> 
> The later can work with limited BNode_ID_Handler type, because tagged and 
> limited types are always passed by reference.
> 
> I prefer the second one, because with the first procedure signature it is 
> possible to pass an access to an already finalized object what is an error, 
> but want to ask you opinion which of the two procedure signatures is better.
> 
> -- 
> Victor Porton - http://portonvictor.org

You can also just make it tagged (Ada95 to present) or denote the 
procedure parameter as aliased (Ada2012):

procedure Set_Handler (World: World_Type;
                        Handler: aliased in out BNode_ID_Handler'Class);

I am not sure of the limitations to that as it is a new feature I 
am less experienced with.


  parent reply	other threads:[~2017-08-07 14:10 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-06 21:16 Limited object by reference or access argument? Victor Porton
2017-08-06 22:01 ` Victor Porton
2017-08-06 23:21   ` Victor Porton
2017-08-07  0:35     ` Victor Porton
2017-08-07 23:31     ` Randy Brukardt
2017-08-07 14:10 ` Jere [this message]
2017-08-07 23:28 ` Randy Brukardt
replies disabled

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